导出pdf文件时加图片水印

导出pdf文件时加图片水印前言 本文探讨的是利用 pageEvent 事件在生成 PDF 文件的过程中把图片水印加好 这样导出的是加好水印的 pdf 文件 1 加入依赖 com itextpdf itextpdf 5 5 10 com itextpdf itext asian 5 2 0 pre p2 准备好水印图片 将图片拷贝到项目中 p p3 代码示例

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

1:加入依赖



com.itextpdf
itextpdf
5.5.10


com.itextpdf
itext-asian
5.2.0

/pre>

p>2:准备好水印图片,将图片拷贝到项目中

/p>

p>3:代码示例,利用pageEvent事件加水印

/p>

p>定义事件类

/p>

pre class='language-javascript'>

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();
}

}
}

/pre>

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

/p>

pre class='language-javascript'>

//创建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()

/pre>

p>4,效果展示

/p>

pre class='language-javascript'>

/pre>

编程小号
上一篇 2025-03-20 07:51
下一篇 2025-07-10 09:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/127692.html