PDFBox - Aggiunta di testo

Nel capitolo precedente, abbiamo discusso come aggiungere pagine a un documento PDF. In questo capitolo, discuteremo come aggiungere testo a un documento PDF esistente.

Aggiunta di testo a un documento PDF esistente

È possibile aggiungere contenuti a un documento utilizzando la libreria PDFBox, che fornisce una classe denominata PDPageContentStream che contiene i metodi richiesti per inserire testo, immagini e altri tipi di contenuti in una pagina di un PDFDocument.

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 = document.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 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 i metodi beginText () e endText () della classe PDPageContentStream 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 PDPageContentStreamclasse come mostrato di seguito. A questo metodo è necessario passare il tipo e la dimensione del carattere.

contentStream.setFont( font_type, font_size );

Passaggio 7: inserimento del testo

Puoi inserire il testo nella pagina usando il ShowText() metodo del PDPageContentStreamclasse come mostrato di seguito. Questo metodo accetta il testo richiesto sotto forma di stringa.

contentStream.showText(text);

Passaggio 8: 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 9: chiusura di PDPageContentStream

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

contentstream.close();

Passaggio 10: 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 11: 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 contenuti a una pagina in un documento. Qui creeremo un programma Java per caricare il documento PDF denominatomy_doc.pdf, che viene salvato nel percorso C:/PdfBox_Examples/e aggiungi del testo. Salva questo codice in un file con nomeAddingContent.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 AddingContent {
   public static void main (String args[]) throws IOException {

      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/my_doc.pdf");
      PDDocument document = PDDocument.load(file);
       
      //Retrieving the pages of the document 
      PDPage page = document.getPage(1);
      PDPageContentStream contentStream = new PDPageContentStream(document, page);
      
      //Begin the Content stream 
      contentStream.beginText(); 
       
      //Setting the font to the Content stream  
      contentStream.setFont(PDType1Font.TIMES_ROMAN, 12);

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

      String text = "This is the sample document and we are adding content to it.";

      //Adding text in the form of string 
      contentStream.showText(text);      

      //Ending the content stream
      contentStream.endText();

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

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

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

      //Closing the document
      document.close();
   }
}

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

javac AddingContent.java 
java AddingContent

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 come mostrato di seguito.