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.