代码实现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按页拆分以及合并
发布评论