2013-05-29 2 views
2

Я использую следующий код, чтобы объединить два PDFs:Как добавить номер страницы к выходу pdf при слиянии двух PDF-файлов?

File firstPdfFile = new File("firstPdf.pdf"); 
File secondPdfFile = new File("secondPdf.pdf"); 
PDFMergerUtility merger = new PDFMergerUtility(); 
merger.addSource(firstPdfFile);  
merger.addSource(secondPdfFile); 
String pdfPath = "PdfFile.pdf"; 
OutputStream bout2 = new BufferedOutputStream(new FileOutputStream(pdfPath)); 
merger.setDestinationStream(bout2); 
merger.mergeDocuments();  
File pdfFile = new File(pdfPath); 

Я правильно получать слитый PDF, но я хочу, чтобы добавить номер страницы в этом PDF-файл.

+0

Если бы вы сделали это во втором проходе, посмотрите на [этот ответ на номера страниц * Добавление с помощью PDFBox *] (http://stackoverflow.com/a/16585032/1729265). Если вы хотите сделать это за один проход, вам придется объединить это решение с [PDFMergerUtility.java] (http://svn.apache.org/repos/asf/pdfbox/trunk/pdfbox/src/main/java /org/apache/pdfbox/util/PDFMergerUtility.java). – mkl

+0

Если я делаю это, я получаю неправильный номер страницы. Например: Если в файле firstpdf.pdf есть 2 страницы, отображает номера страниц 1 из 2, 2 из 2. и secondpdf.pdf имеют 3 страницы, что означает номер страницы снова 1 0f 3, 2 из 3, вот так .. – Mathi

+1

В этом случае используйте связанный пример, чтобы добавить номера страниц в исходные PDF-файлы отдельно, а затем объединить расширенные исходные PDF-файлы. Не сложно или предположить. – mkl

ответ

1

Попробуйте этот код.

File firstPdfFile = new File("firstPdf.pdf"); 
    File secondPdfFile = new File("firstPdf.pdf"); 
    PDFMergerUtility merger = new PDFMergerUtility(); 
    merger.addSource(firstPdfFile); 
    merger.addSource(secondPdfFile); 
    String pdfPath = "PdfFile.pdf"; 
    OutputStream bout2 = new BufferedOutputStream(new FileOutputStream(pdfPath)); 
    merger.setDestinationStream(bout2); 
    merger.mergeDocuments(); 

    PDDocument doc = null; 
    try { 
     URL file = new URL("file:///PdfFile.pdf"); 
     doc = PDDocument.load(file); 

     List<?> allPages = doc.getDocumentCatalog().getAllPages(); 
     PDFont font = PDType1Font.HELVETICA_BOLD; 
     float fontSize = 36.0f; 
     for (int i = 0; i < allPages.size(); i++) { 
      PDPage page = (PDPage) allPages.get(i); 
      PDPageContentStream footercontentStream = new PDPageContentStream(doc, page, true, true); 
      footercontentStream.beginText(); 
      footercontentStream.setFont(font, fontSize); 
      footercontentStream.moveTextPositionByAmount((PDPage.PAGE_SIZE_A4.getUpperRightX()/2), (PDPage.PAGE_SIZE_A4.getLowerLeftY())); 
      footercontentStream.drawString(String.valueOf(i + 1)); 
      footercontentStream.endText(); 
      footercontentStream.close(); 
     } 
     doc.save("PdfFile.pdf"); 
    } finally { 
     if (doc != null) { 
      doc.close(); 
     } 
    } 
Смежные вопросы