导出pdf文件时加图片水印

December 17, 2023
测试
测试
测试
测试
5 分钟阅读

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

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

  • 1:加入依赖
<!--导出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:准备好水印图片,将图片拷贝到项目中
导出pdf文件时加图片水印
导出pdf文件时加图片水印
  • 3:代码示例,利用pageEvent事件加水印

定义事件类

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()之前

        //创建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,效果展示
导出pdf文件时加图片水印
导出pdf文件时加图片水印

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

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多