java PDF添加图层的方法 支持多页图层添加

网友投稿 473 2023-02-20


java PDF添加图层的方法 支持多页图层添加

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.PdfStamhttp://per;

public class PdfUtils {

/**

* PDF添加图层

*

* @param srcPdf

* 原PDF文件路径

* @param distPdf

* 合成PDF输出路径

* @param layerPathArr

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

* @return

* @throws IOException

* @throws DocumentException

*/

public static String markLocalImage42Dist(String srcPdf, String distPdf, List layerPathArr)

throws IOExceptionaAwOuUQ, DocumentException {

File srcPdfFile = new File(srcPdf);

if (!srcPdfFile.exists()) {

throw neaAwOuUQw IllegalArgumentException("找不到需要添加图层的pdf文件");

}

PdfReader reader = new PdfReader(srcPdf);

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

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

PdfContentByte over;

for (String layerPath : layerPathArr) {

File layerFile = new File(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);

}

}

http:// stamp.close();

reader.close();

return distPdf;

}

}

测试:

public static void main(String[] args) throws IOException, DocumentException {

List imgUrlList = new ArrayList<>();

imgUrlList.add("D:/ts/testPDF/1.png");

//imgUrlList.add("D:/ts/testPDF/2.png");

imgUrlList.add("D:/ts/testPDF/3.png");

markLocalImage42Dist("D:/ts/testPDF/testPDF.pdf", "D:/ts/testPDF/testPDF2.pdf", imgUrlList);

}

结果:

原PDF:

合成后PDF:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:jira 测试用例 接口(jira测试用例管理)
下一篇:音乐播放api接口文档(音乐播放api接口文档下载)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~