前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >导出pdf文件时加图片水印

导出pdf文件时加图片水印

作者头像
全栈程序员站长
发布于 2022-08-26 12:40:49
发布于 2022-08-26 12:40:49
1.4K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

前言:本文探讨的是利用pageEvent事件在生成PDF文件的过程中把图片水印加好,这样导出的是加好水印的pdf文件。

  • 1:加入依赖
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!--导出pdf相关-->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.10</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>
  • 2:准备好水印图片,将图片拷贝到项目中
  • 3:代码示例,利用pageEvent事件加水印

定义事件类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package itextpdf;
import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfPageEventHelper;
import com.itextpdf.text.pdf.PdfWriter;

/**
 * @author
 * @description 继承PdfPageEventHelper类来定义事件
 * @date 2018/6/19 11:08$
 */
public class WaterMark1 extends PdfPageEventHelper {

    @Override
    public void onEndPage(PdfWriter writer, Document document) {
        //获取水印图片的路径
        String markImagePath = this.getClass().getClassLoader().getResource("font").getFile() + "/logo.png";
        float pageHeight = document.getPageSize().getHeight();
        float pageWidth = document.getPageSize().getWidth();

        try {
            Image img = Image.getInstance(markImagePath);//生成水印图片
            final float IMAGE_SIZE = 0.6f;//图片缩放比例,大小0
            float plainWidth = img.getPlainWidth() * IMAGE_SIZE;
            float plainHeight = img.getPlainHeight() * IMAGE_SIZE;
            img.scaleAbsolute(plainWidth, plainHeight);//设置图片大小
            img.setAlignment(Image.UNDERLYING); // 在字下面
            //设置水印图片的坐标。
            img.setAbsolutePosition(pageWidth - plainWidth - 35, pageHeight - plainHeight - 5);
            //image.setRotation(-30);//设置旋转 弧度
            //image.setRotationDegrees(-45);//设置旋转 角度
            //image.scalePercent(50);//设置依照比例缩放,与设置大小作用相同

            //将水印图片加入到文档中,可使用循环添加多个,添加多个时注意每个图片的坐标等属性
            document.add(img);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

添加事件,注意要加在document.open()之前

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        //创建document
        Document document = new Document(PageSize.A4);
        //设置要导出的文件名
        File file = new File("C:\\Users\\Administrator\\Desktop\\test.pdf");
        OutputStream outputStream = new FileOutputStream(file);
        PdfWriter writer = PdfWriter.getInstance(document, outputStream);
        //开始写
        writer.setPageEvent(new WaterMark1());//水印内容
        document.open();
        //此处省略写入文字过程...
        document.close()
  • 4,效果展示
代码语言:javascript
代码运行次数:0
运行
复制

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144913.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
iText5实现Java生成PDF文件完整版
最近项目中使用到Java实现导出PDF文件,经过一番参考研究最终决定使用itextpdf来实现,当然也可以参考 PDF Java类库:Spire.PDF for Java(https://www.e-iceblue.cn/spirepdfjava/create-pdf-in-java.html)。本文是使用第一种来实现的。
全栈程序员站长
2022/07/02
6.3K0
iText5实现Java生成PDF文件完整版
Java组件生成PDF文件
最近和一位朋友聊自己微信小程序的事情,朋友的建议将小程序的文章给去掉,增加一个新的功能,他说我写的文章很鸡肋。自己听完之后内心及其犹豫,一方面自己也很清楚自己的文字的功底确实不行,写的技术文章没多少人看,但是一直想这个能锻炼出来。另一方面虽然文章没人看,但是文章的功能是自己一点一点写出来的,让我隐藏起来,我确实有点不想接受。
每天学Java
2020/06/02
4.9K0
java(iText)工具包生成PDF
iText是一个非常著名的能够快速产生PDF文件的Java类库。支持文本,表格,图形的操作,可以方便的跟 Servlet 进行结合
王念博客
2019/07/25
10.4K1
怎么通过itextpdf架包实现报表导出为pdf文件?
程序猿川子
2024/08/01
760
怎么通过itextpdf架包实现报表导出为pdf文件?
Springboot输出PDF文件
有个人(死需求)跑过来跟你说,这些都给我输出成报告,pdf格式的,所以就有了下面这个,做一下笔记,以后有用直接过来拿。在网上找了一下,发现大家都是在用itext。iText是著名的开放项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。
用户3467126
2019/09/27
2.9K2
Springboot输出PDF文件
文件系统(01):基于SpringBoot框架,管理Excel和PDF
Excel一款电子表格软件。直观的界面、出色的计算功能和图表工具,在系统开发中,经常用来把数据转存到Excel文件,或者Excel数据导入系统中,这就涉及数据转换问题。
知了一笑
2020/02/17
1.7K0
文件系统(01):基于SpringBoot框架,管理Excel和PDF
itextPdf工具类使用纪实-01
需求:将数据库中的一些表格信息导出并存入pdf文件。于是乎接触到了itextpdf工具类,帮助我们更好的编排内容显示的位置和文件的导出。
猫老师的叶同学
2023/03/01
1.2K0
flying-saucer + iText + Freemarker实现pdf的导出, 支持中文、css以及图片
      项目中有个需求,需要将合同内容导出成pdf。上网查阅到了 iText , iText 是一个生成PDF文档的开源Java库,能够动态的从XML或者数据库生成PDF,同时还可以对文档进行加密,权限控制,并且还支持Java/C#等,但是iText本身提供的HTML解析器还是不够强大,许多HTML标签和属性无法识别,更悲催的是简单的CSS它不认识,排版调整样式让人头大。那么有没有什么方式能够支持css呢,又查阅到了 flying-saucer, flying-saucer也是导出PDF的一种解决方案,并且是基于iText的开源API,并且实现了CSS解析器,能够很好的支持CSS2.1,以及少量的CSS。最终解决方案定为: flying-saucer + iText +  Freemarker。
青石路
2018/09/10
3.2K0
flying-saucer + iText +  Freemarker实现pdf的导出, 支持中文、css以及图片
SpringBoot + ITextPdf:高效生成 PDF 预览文件
其实公司之前的项目里是用到了帆软报表的,然而最近接了一个新项目,这个项目独立部署在甲方的独立环境中,组长的意思是不用再单独部署一套帆软报表,成本太大,用其他方式实现一下。虽然我不太理解成本大在哪儿,不过身为助理工程师,别管那么多,照着干就完事了。
程序员皮皮林
2024/10/08
9080
SpringBoot + ITextPdf:高效生成 PDF 预览文件
Java实现批量图片生成PDF文件
Java实现批量图片生成PDF文件,这个也是比较常用到的。 需要引入一个包 <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>${lastest.version}</version> </dependency> 代码如下: public class PdfUtils { private static String FILEPATH = "E:\\pd
程序员云帆哥
2022/05/12
1.1K0
Java 生成 PDF
欢迎关注公众号:程序员财富自由之路 某些业务场景下,需要提供相关的电子凭证,如银行回单,电子合同等。 需要生成对应的 PDF 提供给客户。 简单demo实现 添加依赖: <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.11</version> </dependency> 实现代码: import java.io
王小明_HIT
2019/08/13
2.1K0
Java一个工具类实现PDF加水印
最近公司做一个需求,给用户上传的文件word和pdf文件进行添加水印,若是doc、docx文件先进行word转pdf然后加水印,如果是pdf文件直接进行加水印。
Lcry
2023/03/15
3.5K0
Java一个工具类实现PDF加水印
【iText5 生成PDF】纯Java代码实现生成PDF(自定义表格、文本水印、单元格样式)
​ 工作中遇到需要生成PDF。最终选择了iText。其他也有通过html再生成。感觉不太适合就用了代码实现。 使用iText 5.5.13.1版本。纯Java代码实现 1.自定义表格合并指定行列
小帅丶
2019/07/22
8.8K0
【iText5 生成PDF】纯Java代码实现生成PDF(自定义表格、文本水印、单元格样式)
手把手教你使用Java开发在线生成pdf文档
在实际的业务开发的时候,研发人员往往会碰到很多这样的一些场景,需要提供相关的电子凭证信息给用户,例如网银/支付宝/微信购物支付的电子发票、订单的库存打印单、各种电子签署合同等等,以方便用户查看、打印或者下载。
Java极客技术
2022/12/02
1.9K0
手把手教你使用Java开发在线生成pdf文档
itextpdf设置页码_word页码相同怎么改
项目需要样式比较复杂,刚开始因为时间比较紧所以采用了Itextpdf插件代码生成pdf ,实话说过程十分繁琐,因为pdf文件样式比较多,表格也比较多,各种的表格,还有就是页眉页脚页码都要自己找页面位置坐标但是又不能像html那样方便更改查看样式,只能改一点导出来看看合适不,然后再改再导出来看。 私下调研了很多,现在罗列一下我所用到的一些样式处理,希望可以帮助需要做这个功能的朋友少踩坑,少尝试,直接出完美pdf报告。
全栈程序员站长
2022/11/14
3.9K0
itextpdf设置页码_word页码相同怎么改
SpringBoot集成itextpdf动态生成pdf并展示
接上文SpringBoot集成markdown实现文档管理,对于表格的支持markdown不是特别友好,同时内部文档管理需要增加表格式api接口文档的功能,所以决定采用结合数据库存储与动态生成pdf借助目录结构展示的方式
code2roc
2023/07/19
1.1K0
SpringBoot集成itextpdf动态生成pdf并展示
从xls或xlsx文件转换为PDF文件的Java代码示例
本文介绍了如何使用Java代码将Excel文件转换为PDF文件,重点演示了如何使用iText库来实现这一功能。通过深入了解代码示例,您将能够轻松地将Excel文件转换为PDF,并且可以自定义字体、样式等。
默 语
2024/11/20
2050
SpringBoot 下PDF生成使用填坑总结
解释: 1、Configuration cfg 使用了freemaker starter后,在项目启动时即会自动初始化 Configuration 对象到Spring容器中; 2、Template template = cfg.getTemplate("test.ftl","UTF-8"); 模板因cfg本身在Spring容器中,则在获取test.ftl模板是就会自动在resource/templates下寻找模板,默认:ftl 格式,可以修改 3、因为找了很多例子都是使用ITextRenderer 对象来渲染输出渲染的PDF,但ITextRenderer有一个问题是要解决中文不显示问题,必须把字体放在一个以 文件夹 路径访问的形式引入,SpringBoot打包后,经测试,无法获取打包后的FONT字体; 则,再另辟途径,又找到以Document方式,但document需要的是,没一个dom对象都必须一个个添加进去,网上很多都是new 专门的对象,比如:块 Paragraph 然后添加文字(数字)内容。 所以又搜索:是否可以往document插入html 最终找到:https://www.cnblogs.com/mvilplss/p/5646675.html
林淮川
2021/12/20
5K0
SpringBoot 下PDF生成使用填坑总结
利用iText 组件导出PDF
maven依赖:       <dependency>    <groupId>com.itextpdf</groupId>    <artifactId>itextpdf</artifactId>    <version>5.2.0</version>       </dependency> <!-- PDF输出中文的扩展包 -->       <dependency>    <groupId>com.itextpdf</groupId>    <artifactId>itext-asian
冷冷
2018/02/08
1.5K0
PDF文件添加二维码水印教程
maven配置iText的jar,主要不是所有私服都有iText的jar,maven仓库没有的,可以去https://mvnrepository.com/artifact/com.itextpdf/itextpdf/5.5.12 这里下载
SmileNicky
2019/06/15
1.5K0
相关推荐
iText5实现Java生成PDF文件完整版
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验