java代码实现pdf按页拆分以及合并

编程入门 行业动态 更新时间:2024-10-26 18:19:56

java<a href=https://www.elefans.com/category/jswz/34/1771412.html style=代码实现pdf按页拆分以及合并"/>

java代码实现pdf按页拆分以及合并

1 配置pom文件

我用的是5.4.3的版本

<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.4.3</version>
</dependency>

2 调用示例

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.BadPdfFormatException;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;/*** @author zrl*/
public class PdfTest {private static Logger log = LoggerFactory.getLogger(PdfTest.class);public static void main(String[] args) {try {//拆分splitPDFOneByOne(D:\\inputPath\\", "test.pdf", "D:\\outputPath\\");//合并String sourcepath = "D:\\outputPath\\";File file = new File(sourcepath);File[] filesArr = file.listFiles();//需要合并的所有pdf文件路径String[] files = new String[filesArr.length];for (int i = 0; i < filesArr.length; i++) {files[i] = filesArr[i].getPath();}String savepath = "D:\\outputPath\\final.pdf";mergePdfFiles(Arrays.asList(files), savepath);} catch (Exception e) {log.error(e.getMessage(), e);}}/*** @param path       源PDF路径* @param fileName   源PDF文件名* @param outputPath 拆分后输出的PDF路径* @author Reverse_XML* 把PDF 按页(逐页、单页)拆分(一页一页拆分,一页为一个新PDF文件)*/public static void splitPDFOneByOne(String path, String fileName, String outputPath) {String sep = java.io.File.separator;PdfReader reader = null;int numberOfPages = 0;try {reader = new PdfReader(path + sep + fileName);numberOfPages = reader.getNumberOfPages();for (int i = 1; i <= numberOfPages; i++) {Document document = null;PdfCopy copy = null;try {document = new Document(reader.getPageSize(1));String savePath = outputPath + sep +fileName.substring(0, fileName.lastIndexOf(".")) + "_" + i + ".pdf";copy = new PdfCopy(document, new FileOutputStream(savePath));document.open();document.newPage();PdfImportedPage page = copy.getImportedPage(reader, i);copy.addPage(page);} catch (BadPdfFormatException e) {e.printStackTrace();} catch (DocumentException e) {e.printStackTrace();} finally {if (document != null) {document.close();}if (copy != null) {copy.close();}}}} catch (IOException e) {log.error(e.getMessage(), e);} finally {if (reader != null) {reader.close();}}}/*** 合并原pdf为新文件** @param files   pdf绝对路径集* @param newfile 新pdf绝对路径* @return* @throws IOException* @throws DocumentException*/public static void mergePdfFiles(List<String> files, String newfile) throws IOException, DocumentException {Document document = new Document(new PdfReader(files.get(0)).getPageSize(1));PdfCopy copy = new PdfCopy(document, new FileOutputStream(newfile));document.open();for (int i = 0; i < files.size(); i++) {PdfReader reader = new PdfReader(files.get(i));int n = reader.getNumberOfPages();for (int j = 1; j <= n; j++) {document.newPage();PdfImportedPage page = copy.getImportedPage(reader, j);copy.addPage(page);}}document.close();}
}

更多推荐

java代码实现pdf按页拆分以及合并

本文发布于:2023-06-28 13:45:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/928381.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:代码   java   pdf

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!