PDFBox - Einfügen eines Bildes

Im vorherigen Kapitel haben wir gesehen, wie Sie Text aus einem vorhandenen PDF-Dokument extrahieren. In diesem Kapitel wird erläutert, wie Sie Bilder in ein PDF-Dokument einfügen.

Einfügen eines Bildes in ein PDF-Dokument

Sie können ein Bild mit dem in ein PDF-Dokument einfügen createFromFile() und drawImage() Methoden der Klassen PDImageXObject und PDPageContentStream beziehungsweise.

Im Folgenden finden Sie die Schritte zum Extrahieren von Text aus einem vorhandenen PDF-Dokument.

Schritt 1: Laden eines vorhandenen PDF-Dokuments

Laden Sie ein vorhandenes PDF-Dokument mit der statischen Methode load() des PDDocumentKlasse. Diese Methode akzeptiert ein Dateiobjekt als Parameter, da dies eine statische Methode ist, die Sie unter Verwendung des Klassennamens wie unten gezeigt aufrufen können.

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

Schritt 2: Abrufen einer Seite

Wählen Sie eine Seite im PDF-Dokument aus und rufen Sie das Seitenobjekt mit dem ab getPage() Methode wie unten gezeigt.

PDPage page = doc.getPage(0);

Schritt 3: Erstellen des PDImageXObject-Objekts

Die Klasse PDImageXObjectin der PDFBox-Bibliothek repräsentiert ein Bild. Es bietet alle erforderlichen Methoden zum Ausführen von Vorgängen, die sich auf ein Bild beziehen, z. B. Einfügen eines Bildes, Einstellen seiner Höhe, Einstellen seiner Breite usw.

Mit der Methode können wir ein Objekt dieser Klasse erstellen createFromFile(). Bei dieser Methode müssen wir den Pfad des Bildes, das wir hinzufügen möchten, in Form einer Zeichenfolge und das Dokumentobjekt übergeben, zu dem das Bild hinzugefügt werden muss.

PDImageXObject pdImage = PDImageXObject.createFromFile("C:/logo.png", doc);

Schritt 4: Vorbereiten des Inhaltsstroms

Sie können verschiedene Arten von Datenelementen mit dem Objekt der genannten Klasse einfügen PDPageContentStream. Sie müssen das Dokumentobjekt und das Seitenobjekt an den Konstruktor dieser Klasse übergeben. Instanziieren Sie diese Klasse daher, indem Sie diese beiden Objekte übergeben, die in den vorherigen Schritten wie unten gezeigt erstellt wurden.

PDPageContentStream contentStream = new PDPageContentStream(doc, page);

Schritt 5: Zeichnen des Bildes im PDF-Dokument

Sie können ein Bild in das PDF-Dokument einfügen, indem Sie die drawImage()Methode. Zu dieser Methode müssen Sie das im obigen Schritt erstellte Bildobjekt und die erforderlichen Abmessungen des Bildes (Breite und Höhe) wie unten gezeigt hinzufügen.

contentstream.drawImage(pdImage, 70, 250);

Schritt 6: Schließen des PDPageContentStream

Schließe PDPageContentStream Objekt mit dem close() Methode wie unten gezeigt.

contentstream.close();

Schritt 7: Speichern des Dokuments

Speichern Sie nach dem Hinzufügen des erforderlichen Inhalts das PDF-Dokument mit dem save() Methode der PDDocument Klasse wie im folgenden Codeblock gezeigt.

doc.save("Path");

Schritt 8: Schließen des Dokuments

Schließen Sie das Dokument abschließend mit close() Methode der PDDocument Klasse wie unten gezeigt.

doc.close();

Beispiel

Angenommen, wir haben ein PDF-Dokument mit dem Namen sample.pdf, in dem Weg C:/PdfBox_Examples/ mit leeren Seiten wie unten gezeigt.

Dieses Beispiel zeigt, wie Sie einer leeren Seite des oben genannten PDF-Dokuments ein Bild hinzufügen. Hier laden wir das genannte PDF-Dokumentsample.pdfund fügen Sie ein Bild hinzu. Speichern Sie diesen Code in einer Datei mit NamenInsertingImage.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();
     
   }
}

Kompilieren Sie die gespeicherte Java-Datei und führen Sie sie mit den folgenden Befehlen an der Eingabeaufforderung aus.

javac InsertingImage.java 
java InsertingImage

Bei der Ausführung fügt das obige Programm ein Bild in die angegebene Seite des angegebenen PDF-Dokuments ein, auf dem die folgende Meldung angezeigt wird.

Image inserted

Wenn Sie das Dokument überprüfen sample.pdfkönnen Sie beobachten, dass ein Bild wie unten gezeigt eingefügt wird.