导出pdf文件时加图片水印

导出pdf文件时加图片水印前言:本人探讨的是在导出PDF文件之前先把水印加好,导出后的pdf文件已经加好了水印。

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

前言:本文探讨的是利用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文件时加图片水印

  • 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文件时加图片水印

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • java 雪崩效应,七、微服务架构中的“雪崩效应”

    java 雪崩效应,七、微服务架构中的“雪崩效应”1.雪崩效应在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络原因或者自身的原因,服务并不能保证服务的100%可用,如果单个服务出现问题,调用这个服务就会出现网络延迟,此时若有大量的网络涌入,会形成任务堆积,最终导致服务瘫痪。其实,在单体服务中,高并发也会导致服务瘫痪。见下一章,Jmeter模拟微服务当中的高并发场景在分布式系统中,由于网络原因或自身的原因,服…

  • Deep Boltzmann Machines

    Deep Boltzmann Machines转载自:http://blog.csdn.net/win_in_action/article/details/25333671 http://blog.csdn.net/zouxy09/article/details/8775518深度神经网络(Deepneuralnetwork)   深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构

  • 各种门平面图画法_cad门的画法_用CAD画门的平面图的方法步骤图

    各种门平面图画法_cad门的画法_用CAD画门的平面图的方法步骤图大家在CAD室内平面图中经常看到门吧,那么大家知道怎么用CAD画门的平面图呢?想了解的同学可以参照以下CAD画平面图的教程,自己尝试去画门的平面图!用CAD画平面图的门的方法1、如下图所显示,输入要画矩形的方框,输入rec。2、单击要如下图中点,在进行拉动。3、如果下图没有显示中点的话,可以右击对象捕捉,选择全部选择。4、如下图可以看得以画出一个小矩形框出来。5、可以看到了如下图用矩形画出的门框来…

  • 移动硬盘遇到无法访问,文件或目录损坏且无法读取的解决办法[通俗易懂]

    文件或目录损坏且无法读取的解决办法大集合方法很简单,用chsdsk命令即可详解如下:开始–运行–输入cmd–输入chkdsk盘符:/f,例如:“chkdskd:/f”。等命令运行完即可。这里要注意的是,那个冒号后面要空一格,别跟着就写”/f”故障现象不管是移动硬盘还是U盘,包括本地电脑上的硬盘分区,双击打开时,提示:“无法打开H盘,文件或目录损坏且无法读取,…….

  • java实现简单的抽奖游戏(数组学习)

    java实现简单的抽奖游戏(数组学习)参考文章https://blog.csdn.net/zzq1992126/article/details/44118429参考书籍《java核心技术·卷一:基础知识》代码//程序目标:从给定的奖池中抽取出一系列中奖数字,每个数字只能被选取一次。程序实现如下:importjava.util.Arrays;importjava.util.Scanner;publicclass…

    2022年10月23日
  • Unzip Yearly Subscription_@mapkey注解

    Unzip Yearly Subscription_@mapkey注解原文:http://werkzeug.pocoo.org/docs/0.12/local/#werkzeug.local.LocalProxySoonerorlateryouhavesomethingsyouwanttohaveineverysinglevieworhelperfunctionorwhatever.InPHPthewayt

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号