pdf加水印

pdf加水印

  1. 相关jar包

    • itext-2.1.7.jar
    • iTextAsian.jar
  2. 代码如下

package com.solex.waterPrint;

import java.awt.Color;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Image;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;
/**
 * 给PDF添加水印
 * @author solexit06
 *
 */
public class TestWaterPdf {
    public static void main(String[] args) throws DocumentException,IOException {
        //要输出的文件
        String outFile="C:/Users/solexit06/Desktop/WaterPrint.pdf";
        //要加水印的原文件
        String inputFile="C:/Users/solexit06/Desktop/testWaterPrint.pdf";
        //水印内容:公司、日期、内容
        String company="**科技有限公司";
        Date date = Calendar.getInstance().getTime();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String waterMarkDate=sdf.format(date);
        String content="受控文件";
        // 将文件先加水印然后输出
        setWatermark(outFile,inputFile,company,waterMarkDate,content);
    }

    public static void setWatermark(String outFile, String inputFile,String company,
            String waterMarkDate,String content) throws DocumentException,IOException {

        PdfReader reader = new PdfReader(inputFile);//获取需要加水印的输入文件
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(outFile)));
        PdfStamper stamper = new PdfStamper(reader, bos);

        int total = reader.getNumberOfPages();//获取输入文件页数
        for (int i = 1; i <= total; i++) {
            PdfContentByte contentOver = stamper.getOverContent(i);//在内容上方加水印
            /*添加图片水印*/
            String imgUrl="C:/Users/solexit06/Desktop/Border.png";
            Image img = Image.getInstance(imgUrl);//获取要作为水印的图片
            img.setAbsolutePosition(200, 450);//图片距离文档的左下边距
            img.scaleToFit(150, 240);//图片水印的大小
            img.setRotationDegrees(10);//旋转
            contentOver.addImage(img);//添加图片水印

            /*添加文字水印*/
            contentOver.beginText();
            BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.EMBEDDED);//字体实例,影响中文字体显示
            contentOver.setColorFill(Color.RED);//水印颜色

            contentOver.setFontAndSize(bf, 16);//字体样式和大小
            contentOver.showTextAligned(Element.ALIGN_LEFT, company, 215, 520,10);//左边距、下边距

            contentOver.setFontAndSize(bf, 10);//字体样式和大小
            contentOver.showTextAligned(Element.ALIGN_LEFT, waterMarkDate, 260, 505,10);//左边距、下边距

            contentOver.setFontAndSize(bf, 24);//字体样式和大小
            contentOver.showTextAligned(Element.ALIGN_LEFT, content, 240, 465,10);//左边距、下边距
            contentOver.endText();

        }
        stamper.close();
        System.out.println("添加水印成功");
    }
}
iTextPDF是一个用于创建和处理PDF文档的开源库。关于如何在PDF中添水印,可以参考以下步骤: 1. 首先,将要添水印PDF文件载到iTextPDF库中。 2. 然后,创建一个PdfStamper对象,它是用来修改PDF文件的工具。 3. 接下来,通过PdfContentByte对象,可以在PDF页面上添文本水印或图片水印。 4. 如果要添文本水印,可以使用PdfContentByte的setTextMatrix()方法来设置文本的位置和旋转角度,并使用showTextAligned()方法将文本添到页面上。 5. 如果要添图片水印,可以先创建一个Image对象,然后使用PdfContentByte的addImage()方法将图片添到页面上。 6. 最后,使用PdfStamper的close()方法保存修改后的PDF文件。 这些步骤可以在iTextPDF的官方文档中找到详细的代码示例和操作说明。 通过学习这些示例和文档,你可以了解如何使用iTextPDF库来添水印PDF文件中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【itext学习之路】--4.给pdf文本水印和图片水印](https://blog.csdn.net/gqltt/article/details/122453260)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [使用itextpdf将excel转化为pdf + pdf水印](https://download.csdn.net/download/love_shasha/12533071)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值