PDFBox - Inserimento dell'immagine
Nel capitolo precedente, abbiamo visto come estrarre del testo da un documento PDF esistente. In questo capitolo, discuteremo come inserire un'immagine in un documento PDF.
Inserimento di un'immagine in un documento PDF
È possibile inserire un'immagine in un documento PDF utilizzando il file createFromFile() e drawImage() metodi delle classi PDImageXObject e PDPageContentStream rispettivamente.
Di seguito sono riportati i passaggi per estrarre il testo da un documento PDF esistente.
Passaggio 1: caricamento di un documento PDF esistente
Carica un documento PDF esistente utilizzando il metodo statico load() del PDDocumentclasse. Questo metodo accetta un oggetto file come parametro, poiché si tratta di un metodo statico, è possibile richiamarlo utilizzando il nome della classe come mostrato di seguito.
File file = new File("path of the document")
PDDocument doc = PDDocument.load(file);
Passaggio 2: recupero di una pagina
Seleziona una pagina nel documento PDF e recupera il suo oggetto pagina utilizzando il file getPage() metodo come mostrato di seguito.
PDPage page = doc.getPage(0);
Passaggio 3: creazione dell'oggetto PDImageXObject
La classe PDImageXObjectnella libreria PDFBox rappresenta un'immagine. Fornisce tutti i metodi necessari per eseguire operazioni relative a un'immagine, come l'inserimento di un'immagine, l'impostazione della sua altezza, l'impostazione della sua larghezza ecc.
Possiamo creare un oggetto di questa classe usando il metodo createFromFile(). A questo metodo, dobbiamo passare il percorso dell'immagine che vogliamo aggiungere sotto forma di stringa e l'oggetto documento a cui deve essere aggiunta l'immagine.
PDImageXObject pdImage = PDImageXObject.createFromFile("C:/logo.png", doc);
Passaggio 4: 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 5: disegnare l'immagine nel documento PDF
È possibile inserire un'immagine nel documento PDF utilizzando il file drawImage()metodo. A questo metodo, è necessario aggiungere l'oggetto immagine creato nel passaggio precedente e le dimensioni richieste dell'immagine (larghezza e altezza) come mostrato di seguito.
contentstream.drawImage(pdImage, 70, 250);
Passaggio 6: chiusura di PDPageContentStream
Chiudi il PDPageContentStream oggetto utilizzando il close() metodo come mostrato di seguito.
contentstream.close();
Passaggio 7: 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 8: chiusura del documento
Infine, chiudi il documento utilizzando il file close() metodo del PDDocument classe come mostrato di seguito.
doc.close();
Esempio
Supponiamo di avere un documento PDF denominato sample.pdf, nel percorso C:/PdfBox_Examples/ con pagine vuote come mostrato di seguito.
Questo esempio mostra come aggiungere un'immagine a una pagina vuota del documento PDF sopra menzionato. Qui, caricheremo il documento PDF denominatosample.pdfe aggiungi un'immagine. Salva questo codice in un file con nomeInsertingImage.java.
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
public class InsertingImage {
public static void main(String args[]) throws Exception {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument doc = PDDocument.load(file);
//Retrieving the page
PDPage page = doc.getPage(0);
//Creating PDImageXObject object
PDImageXObject pdImage = PDImageXObject.createFromFile("C:/PdfBox_Examples/logo.png",doc);
//creating the PDPageContentStream object
PDPageContentStream contents = new PDPageContentStream(doc, page);
//Drawing the image in the PDF document
contents.drawImage(pdImage, 70, 250);
System.out.println("Image inserted");
//Closing the PDPageContentStream object
contents.close();
//Saving the document
doc.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
doc.close();
}
}
Compilare ed eseguire il file Java salvato dal prompt dei comandi utilizzando i seguenti comandi.
javac InsertingImage.java
java InsertingImage
Al momento dell'esecuzione, il programma di cui sopra inserisce un'immagine nella pagina specificata del documento PDF dato visualizzando il seguente messaggio.
Image inserted
Se verifichi il documento sample.pdf, puoi osservare che al suo interno viene inserita un'immagine come mostrato di seguito.