肿瘤康复网,内容丰富有趣,生活中的好帮手!
肿瘤康复网 > java 使用itext合并多个pdf文件成一个pdf

java 使用itext合并多个pdf文件成一个pdf

时间:2021-06-04 10:11:46

相关推荐

maven

<!-- /artifact/com.itextpdf/itextpdf --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.2</version></dependency>

合并方法

public static void mergePdf(File[] pdfFiles) throws Exception {Document document = new Document();document.setMargins(0, 0, 0, 0);OutputStream bos = new FileOutputStream("D:\\workspace\\demo\\src\\main\\resources\\test5\\merge.pdf");PdfCopy copy = new PdfCopy(document, bos);document.open();for (File file : pdfFiles) {PdfReader reader = new PdfReader(file.getAbsolutePath());copy.addDocument(reader);copy.freeReader(reader);reader.close();}document.close();System.out.println("完成合并");}

如果你使用的itextpdf是5.2甚至更低的版本,上面的PdfCopy 方法是没有的,得用下面的方案

public static void morePdfTopdf(List<String> fileList, String savepath) {Document document = null;try {document = new Document(new PdfReader(fileList.get(0)).getPageSize(1));PdfCopy copy = new PdfCopy(document, new FileOutputStream(savepath));document.open();for (int i = 0; i < fileList.size(); i++) {PdfReader reader = new PdfReader(fileList.get(i));int n = reader.getNumberOfPages();// 获得总页码for (int j = 1; j <= n; j++) {document.newPage();PdfImportedPage page = copy.getImportedPage(reader, j);// 从当前Pdf,获取第j页copy.addPage(page);}System.out.println("已合并" + i);}} catch (IOException e) {e.printStackTrace();} catch (DocumentException e) {e.printStackTrace();} finally {if (document != null) {document.close();}System.out.println("finish " + new Date());}}

还有一个坑: 合并之后的pdf文件用福晰阅读器打开会丢失电子签名,实际上是没丢,用极光阅读器是能看到电子签名的,被这个坑了,以为itext没有用换了pdfbox来做,事实上itext和pdfbox都能做到合并pdf功能.

如果觉得《java 使用itext合并多个pdf文件成一个pdf》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。