PDFBox - Aggiunta di più righe

Nell'esempio fornito nel capitolo precedente abbiamo discusso di come aggiungere testo a una pagina in un PDF ma tramite questo programma è possibile aggiungere solo il testo che si adatterebbe a una singola riga. Se provi ad aggiungere più contenuto, tutto il testo che supera lo spazio di riga non verrà visualizzato.

Ad esempio, se si esegue il programma di cui sopra nel capitolo precedente passando la stringa seguente verrà visualizzata solo una parte di essa.

String text = "This is an example of adding text to a page in the pdf document. we can
   add as many lines as we want like this using the showText() method of the 
   ContentStream class";

Sostituisci il string textdell'esempio nel capitolo precedente con la stringa di cui sopra ed eseguirlo. Dopo l'esecuzione, riceverai il seguente output.

Se osservi attentamente l'output, puoi notare che viene visualizzata solo una parte della stringa.

Per aggiungere più righe a un PDF è necessario impostare l'interlinea utilizzando il setLeading() metodo e passare a una nuova riga utilizzando newline() metodo dopo aver terminato ogni riga.

Passi

Di seguito sono riportati i passaggi per creare un documento vuoto e aggiungere contenuti a una pagina in esso.

Passaggio 1: caricamento di un documento esistente

È possibile caricare un documento esistente utilizzando il file load()metodo della classe PDDocument. Pertanto, istanziare questa classe e caricare il documento richiesto come mostrato di seguito.

File file = new File("Path of the document"); 
PDDocument doc = PDDocument.load(file);

Passaggio 2: ottenere la pagina richiesta

È possibile ottenere la pagina richiesta in un documento utilizzando il getPage()metodo. Recupera l'oggetto della pagina richiesta passando il suo indice a questo metodo come mostrato di seguito.

PDPage page = doc.getPage(1);

Passaggio 3: preparazione del flusso di contenuti

È possibile inserire vari tipi di elementi di dati utilizzando l'oggetto della classe denominata PDPageContentStream. È necessario passare l'oggetto documento e l'oggetto pagina al costruttore di questa classe quindi, istanziare questa classe passando questi due oggetti creati nei passaggi precedenti come mostrato di seguito.

PDPageContentStream contentStream = new PDPageContentStream(doc, page);

Passaggio 4: inizio del testo

Durante l'inserimento del testo in un documento PDF, è possibile specificare i punti di inizio e fine del testo utilizzando il beginText() e endText() metodi di PDPageContentStream classe come mostrato di seguito.

contentStream.beginText(); 
……………………….. 
code to add text content 
……………………….. 
contentStream.endText();

Pertanto, inizia il testo usando il beginText() metodo come mostrato di seguito.

contentStream.beginText();

Passaggio 5: impostazione della posizione del testo

Usando il newLineAtOffset() metodo, è possibile impostare la posizione nel flusso di contenuti nella pagina.

//Setting the position for the line 
contentStream.newLineAtOffset(25, 700);

Passaggio 6: impostazione del carattere

È possibile impostare il carattere del testo sullo stile richiesto utilizzando il setFont() metodo del PDPageContentStream classe come mostrato di seguito a questo metodo è necessario passare il tipo e la dimensione del carattere.

contentStream.setFont( font_type, font_size );

Passaggio 7: impostazione dell'interlinea del testo

È possibile impostare l'interlinea del testo utilizzando il setLeading() metodo come mostrato di seguito.

contentStream.setLeading(14.5f);

Passaggio 8: inserimento di più stringhe utilizzando newline ()

È possibile inserire più stringhe utilizzando il ShowText() metodo del PDPageContentStream class, dividendoli ciascuno utilizzando il newline() metodo come mostrato di seguito.

contentStream. ShowText(text1); 
contentStream.newLine(); 
contentStream. ShowText(text2);

Passaggio 9: terminare il testo

Dopo aver inserito il testo, è necessario terminare il testo utilizzando il endText() metodo del PDPageContentStream classe come mostrato di seguito.

contentStream.endText();

Passaggio 10: chiusura di PDPageContentStream

Chiudi il PDPageContentStream oggetto utilizzando il close() metodo come mostrato di seguito.

contentstream.close();

Passaggio 11: salvataggio del documento

Dopo aver aggiunto il contenuto richiesto, salva il documento PDF utilizzando il file save() metodo del PDDocument class come mostrato nel seguente blocco di codice.

doc.save("Path");

Passaggio 12: chiusura del documento

Infine, chiudi il documento utilizzando il file close() metodo del PDDocument classe come mostrato di seguito.

doc.close();

Esempio

Questo esempio mostra come aggiungere più righe in un PDF utilizzando PDFBox. Salva questo programma in un file con nomeAddMultipleLines.java.

import java.io.File;
import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

public class AddMultipleLines {
   public static void main(String args[]) throws IOException {

      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/my_pdf.pdf");
      PDDocument doc = document.load(file);
       
      //Creating a PDF Document
      PDPage page = doc.getPage(1);  
       
      PDPageContentStream contentStream = new PDPageContentStream(doc, page); 
       
      //Begin the Content stream 
      contentStream.beginText(); 
       
      //Setting the font to the Content stream
      contentStream.setFont( PDType1Font.TIMES_ROMAN, 16 );
       
      //Setting the leading
      contentStream.setLeading(14.5f);

      //Setting the position for the line
      contentStream.newLineAtOffset(25, 725);

      String text1 = "This is an example of adding text to a page in the pdf document.
         we can add as many lines";
      String text2 = "as we want like this using the ShowText()  method of the
         ContentStream class";

      //Adding text in the form of string
      contentStream. ShowText(text1);
      contentStream.newLine();
      contentStream. ShowText(text2);
      //Ending the content stream
      contentStream.endText();

      System.out.println("Content added");

      //Closing the content stream
      contentStream.close();

      //Saving the document
      doc.save(new File("C:/PdfBox_Examples/new.pdf"));
            
      //Closing the document
      doc.close();
   }
}

Compilare ed eseguire il file Java salvato dal prompt dei comandi utilizzando i seguenti comandi.

javac AddMultipleLines.java 
java AddMultipleLines

Al momento dell'esecuzione, il programma precedente aggiunge il testo dato al documento e visualizza il seguente messaggio.

Content added

Se verifichi il documento PDF new.pdf nel percorso specificato, è possibile osservare che il contenuto specificato viene aggiunto al documento su più righe come mostrato di seguito.