package vip.xiaonuo.modular.blogarticle; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.pdf.PdfCopy; import com.itextpdf.text.pdf.PdfImportedPage; import com.itextpdf.text.pdf.PdfReader; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; /** * pdf 切割合并demo */ public class PdfUtils { public static void main(String args[]) throws IOException, DocumentException { try { //抽取页面 splitPDF("D:\\inleft\\Redis开发与运维(付磊).pdf", "D:\\inleft\\redis-split-1.pdf", 28, 59); // splitPDF("D:\\桌面\\翻译任务\\IEC-61158-2-2003.pdf", "D:\\桌面\\翻译任务\\output1.pdf", // 231, 243); // splitPDF("D:\\桌面\\翻译任务\\IEC-61158-2-2003.pdf", "D:\\桌面\\翻译任务\\output2.pdf", // 260, 261); // //合并页面 // String[] files = {"C:\\Users\\Administrator\\Desktop\\毕业设计.pdf", "C:\\Users\\Administrator\\Desktop\\毕业论文中期检查表.pdf"}; // String savepath = "C:\\Users\\Administrator\\Desktop\\K.pdf"; // mergePdfFiles(Arrays.asList(files), savepath); } catch (Exception e) { e.printStackTrace(); } } /** * 合并原pdf为新文件 * * @param files pdf绝对路径集 * @param newfile 新pdf绝对路径 * @return * @throws IOException * @throws DocumentException */ public static void mergePdfFiles(List 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(); } public static void splitPDF(String bytes, String newFile, int start, int end) { Document document = null; PdfCopy copy = null; try { //源读取 PdfReader reader = new PdfReader(bytes); //获取pdf页数 int n = reader.getNumberOfPages(); if (end == 0) { end = n; } document = new Document(reader.getPageSize(1));//读取源第一页 copy = new PdfCopy(document, new FileOutputStream(newFile));//输出pdf初始化 document.open(); for (int j = start; j <= end; j++) { document.newPage(); PdfImportedPage page = copy.getImportedPage(reader, j);//翻页到初始页 copy.addPage(page);//输出文件追加内容 } document.close(); } catch (Exception e) { e.printStackTrace(); System.err.println("split pdf file error:" + e.getMessage()); } } }