java图层_java PDF添加图层,支持多页图层添加

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.List;

import com.itextpdf.text.DocumentException;

import com.itextpdf.text.Image;

import com.itextpdf.text.pdf.PdfContentByte;

import com.itextpdf.text.pdf.PdfReader;

import com.itextpdf.text.pdf.PdfStamper;public classPdfUtils {/**

* PDF添加图层

*

* @param srcPdf

* 原PDF文件路径

* @param distPdf

* 合成PDF输出路径

* @param layerPathArr

* 图层路径列表,图层名称需为数字(按照图片名称数字顺序合成在PDF对应页数上)

* @return

* @throws IOException

* @throws DocumentException*/

public static String markLocalImage42Dist(String srcPdf, String distPdf, ListlayerPathArr)

throws IOException, DocumentException {

File srcPdfFile= newFile(srcPdf);if (!srcPdfFile.exists()) {throw new IllegalArgumentException("找不到需要添加图层的pdf文件");

}

PdfReader reader= newPdfReader(srcPdf);int n = reader.getNumberOfPages(); //PDF页数

PdfStamper stamp= new PdfStamper(reader, newFileOutputStream(distPdf));

PdfContentByte over;for(String layerPath : layerPathArr) {

File layerFile= newFile(layerPath);

String currentPageNo= layerFile.getName().substring(0, layerFile.getName().lastIndexOf(".")); //图片名称(对应页数)

boolean isNum= currentPageNo.matches("[0-9]+");if (!isNum) {throw new IllegalArgumentException("图层名称是不是数字");

}

Image img=Image.getInstance(layerPath);

img.setAbsolutePosition(0, 0);if (n > 0 && n >=Integer.parseInt(currentPageNo)) {

over=stamp.getOverContent(Integer.parseInt(currentPageNo));

over.addImage(img);

}

}

stamp.close();

reader.close();returndistPdf;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值