Itext pdf合并:文档在pdf(文本截断)页面外溢出而不显示

我想合并2 pdf合二为一。 合并工作正常,但内容从pdf页面溢出。 附件中显示。 原始文件pdf如下。

合并前的原始文件

合并文档之后就是这样 在此处输入图像描述

Java代码如下:

BaseFont bf = BaseFont.createFont(BaseFont.TIMES_BOLD, BaseFont.CP1252, BaseFont.EMBEDDED); //BaseFont bf= BaseFont.createFont(); PdfContentByte cb = writer.getDirectContent(); // Holds the PDF // data PdfImportedPage page; int currentPageNumber = 0; int pageOfCurrentReaderPDF = 0; Iterator iteratorPDFReader = readers.iterator(); // Loop through the PDF files and add to the output. while (iteratorPDFReader.hasNext()) { PdfReader pdfReader = iteratorPDFReader.next(); // Create a new page in the target for each source page. while (pageOfCurrentReaderPDF < pdfReader.getNumberOfPages()) { document.newPage(); pageOfCurrentReaderPDF++; currentPageNumber++; page = writer.getImportedPage(pdfReader, pageOfCurrentReaderPDF); cb.addTemplate(page, 0, 0); // Code for pagination. if (paginate) { cb.beginText(); cb.setFontAndSize(bf, 9); cb.showTextAligned(PdfContentByte.ALIGN_CENTER, "" + currentPageNumber + " of " + totalPages, 520, 5, 0); cb.endText(); } } pageOfCurrentReaderPDF = 0; } 

请帮忙。

请下载我的书的第6章,并查看表6.1。 你错误地使用PdfWriter合并两个文档而不是使用文档中的PdfCopy 。 查看清单6.22,了解如何在使用PdfCopy时添加页码。

我使用“PdfCopyFields”代码片段如下:

 public static boolean concatPDFFiles(List listOfFiles, String outputfilepath) throws FileNotFoundException, DocumentException { PdfCopyFields copy = null; try { copy = new PdfCopyFields(new FileOutputStream(outputfilepath)); } catch (DocumentException ex) { Logger.getLogger(MergerGoogleDocsToPDF.class.getName()).log(Level.SEVERE, null, ex); } try { for (String fileName : listOfFiles) { PdfReader reader1 = new PdfReader(fileName); copy.addDocument(reader1); } } catch (IOException ex) { Logger.getLogger(MergerGoogleDocsToPDF.class.getName()).log(Level.SEVERE, null, ex); } finally { copy.close(); } if (new File(outputfilepath).exists()) { double bytes = new File(outputfilepath).length(); //double kilobytes = (bytes / 1024); if (bytes != 0) { return true; } else { return false; } } else { return false; } }