2013-05-16 19 views
7

Come è possibile aggiungere un numero di pagina a una pagina in un documento generato utilizzando PDFBox?Aggiunta di numeri di pagina tramite PDFBox

Qualcuno può dirmi come aggiungere numeri di pagina a un documento dopo aver unito diversi PDF? Sto usando la libreria PDFBox in Java.

Questo è il mio codice e funziona bene ma devo aggiungere il numero di pagina.

PDFMergerUtility ut = new PDFMergerUtility(); 
     ut.addSource("c:\\pdf1.pdf"); 
     ut.addSource("c:\\pdf2.pdf"); 
     ut.addSource("c:\\pdf3.pdf"); 
     ut.mergeDocuments(); 
+0

Aggiungi una lettera maiuscola all'inizio delle frasi. Usa anche una maiuscola per la parola I e nomi propri come Java, e le abbreviazioni e gli acronimi come JEE o WAR. Questo rende più facile per le persone capire e aiutare. –

+0

ho lo stesso problema, chiunque può aiutare per favore? – mohammad

risposta

8

Si consiglia di esaminare l'esempio PDFBox AddMessageToEachPage.java. Il codice centrale è:

PDDocument doc = null; 
try 
{ 
    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); 
     PDRectangle pageSize = page.findMediaBox(); 
     float stringWidth = font.getStringWidth(message)*fontSize/1000f; 
     // calculate to center of the page 
     int rotation = page.findRotation(); 
     boolean rotate = rotation == 90 || rotation == 270; 
     float pageWidth = rotate ? pageSize.getHeight() : pageSize.getWidth(); 
     float pageHeight = rotate ? pageSize.getWidth() : pageSize.getHeight(); 
     double centeredXPosition = rotate ? pageHeight/2f : (pageWidth - stringWidth)/2f; 
     double centeredYPosition = rotate ? (pageWidth - stringWidth)/2f : pageHeight/2f; 
     // append the content to the existing stream 
     PDPageContentStream contentStream = new PDPageContentStream(doc, page, true, true,true); 
     contentStream.beginText(); 
     // set font and font size 
     contentStream.setFont(font, fontSize); 
     // set text color to red 
     contentStream.setNonStrokingColor(255, 0, 0); 
     if (rotate) 
     { 
      // rotate the text according to the page rotation 
      contentStream.setTextRotation(Math.PI/2, centeredXPosition, centeredYPosition); 
     } 
     else 
     { 
      contentStream.setTextTranslation(centeredXPosition, centeredYPosition); 
     } 
     contentStream.drawString(message); 
     contentStream.endText(); 
     contentStream.close(); 
    } 

    doc.save(outfile); 
} 
finally 
{ 
    if(doc != null) 
    { 
     doc.close(); 
    } 
} 

Invece del messaggio, è possibile aggiungere numeri di pagina. E invece del centro, puoi usare qualsiasi posizione.

Problemi correlati