Erstellen und Lesen von PDF-Dateien in Java mit der iText-Bibliothek

Mohd Mohtashim Nawaz 16 Februar 2024
  1. PDF und Bibliotheken zum Arbeiten mit PDF-Dateien
  2. Funktionen der iText-Bibliothek
  3. Schritte zum Installieren der iText-Bibliothek in Eclipse
  4. Schritte zum Erstellen einer PDF-Datei mit der iText-Bibliothek in Java
  5. Schritte zum Lesen der PDF-Datei mit der iText-Bibliothek in Java
Erstellen und Lesen von PDF-Dateien in Java mit der iText-Bibliothek

Die iText-Bibliothek ist eine Open-Source-Bibliothek zum Erstellen, Bearbeiten und Lesen von PDF-Dateien in Java. Dieser Artikel behandelt die iText-Bibliothek, ihre Installation in Eclipse und das Erstellen und Lesen von PDF-Dateien in Java mit der iText-Bibliothek.

PDF und Bibliotheken zum Arbeiten mit PDF-Dateien

Das Portable Document Format (PDF) ist ein weit verbreitetes Datenaustauschformat mit Dateien. Das PDF ist unabhängig von Hardware, Betriebssystem und Software.

Daher ist es sehr beliebt und wird häufig für Text, Bilder und andere Datentypen verwendet.

Viele Bibliotheken stehen zum Erstellen, Lesen und Arbeiten mit PDF-Dateien zur Verfügung. Einige dieser Bibliotheken sind unten aufgeführt.

  1. iText - Die Community-Version von iText ist eine Open-Source-Bibliothek. Es liest, erstellt und manipuliert die PDF-Dateien mit Java.

    Es hat eine hierarchische Struktur und kann beliebig komplexe PDF-Dateien ausführen, um gewünschte Ergebnisse zu generieren. Die Bibliothek iText ist in Java und .NET verfügbar.

  2. Adobe PDF - Bibliothek – Adobe hat diese Bibliothek zum Erstellen, Bearbeiten und Lesen von PDF-Dateien entwickelt. Wir können diese Bibliothek auch verwenden, um das PDF zu drucken.

    Diese Bibliothek funktioniert mit verschiedenen Sprachen wie C++, Java und .NET.

  3. PDFBox – Dies ist eine weitere Open-Source-Bibliothek. Apache hat diese Bibliothek entwickelt, um PDF-Dateien zu erstellen, zu bearbeiten und anzuzeigen, und sie kann mit Java verwendet werden.

  4. Jasper Reports – Dieses Berichtstool kann Berichte in PDF-Dateien erstellen.

Funktionen der iText-Bibliothek

Lassen Sie uns einen Blick auf einige der Funktionen der iText-Bibliothek werfen.

  1. Erstellen von PDF-Dateien - Wir können mit der iText-Bibliothek beliebig komplexe und interaktive PDF-Dateien erstellen. Wir können auch Bilder in die PDF-Datei einfügen.
  2. Wir können Lesezeichen erstellen, Seitenzahlen hinzufügen und Wasserzeichen zur PDF-Datei hinzufügen, indem wir die Bibliothek iText verwenden.
  3. Wir können die PDF-Dateien teilen und zusammenführen.
  4. Die Bibliothek iText bietet die Möglichkeit, mit interaktiven Formularen in PDF-Dateien zu arbeiten.
  5. Wir können eine PDF-Datei als Bild in verschiedenen Formaten wie JPG, PNG usw. speichern.

Schritte zum Installieren der iText-Bibliothek in Eclipse

Die iText-Bibliothek ist eine Open-Source-Software von Drittanbietern, die vor der Verwendung separat zu Ihrem Java-Projekt installiert werden muss. Dieser Artikel führt Sie durch die Installationsschritte des iText in Eclipse.

Eclipse ist eine der beliebtesten IDEs für die Anwendungsentwicklung in Java. Dieser Artikel geht davon aus, dass Sie Java und Eclipse bereits installiert haben.

Auch wenn Sie mit einer anderen IDE arbeiten, ist der Installationsprozess ähnlich.

Sehen wir uns die Schritte zum Hinzufügen der iText-Bibliothek zu Ihrem Eclipse-Projekt an.

  • Erstellen Sie ein Projekt in Eclipse (Datei -> Neu -> Java-Projekt).
  • Rechtsklick auf das Projekt, ein Dropdown-Menü erscheint.
  • Klicken Sie auf In Maven-Projekt konvertieren.
  • Sie werden feststellen, dass eine neue Datei mit dem Namen pom.xml in Ihrem Projektordner erscheint.
  • Öffnen Sie die pom.xml und fügen Sie die folgenden Abhängigkeiten innerhalb des <project>-Tags und nach dem <build>-Tag hinzu.
    <dependencies>
    
      <dependency>
    	<groupId>com.itextpdf</groupId>
    	<artifactId>barcodes</artifactId>
    	<version>7.2.1</version>
    	<!-- barcodes depends on kernel -->
      </dependency>
    
      <dependency>
    	<groupId>com.itextpdf</groupId>
    	<artifactId>font-asian</artifactId>
    	<version>7.2.1</version>
      </dependency>
    
      <dependency>
    	<groupId>com.itextpdf</groupId>
    	<artifactId>forms</artifactId>
    	<version>7.2.1</version>
    	<!-- forms depends on kernel and layout -->
      </dependency>
    
      <dependency>
    	  <groupId>com.itextpdf</groupId>
    	  <artifactId>hyph</artifactId>
    	  <version>7.2.1</version>
      </dependency>
    
      <dependency>
    	<groupId>com.itextpdf</groupId>
    	<artifactId>io</artifactId>
    	<version>7.2.1</version>
      </dependency>
    
      <dependency>
    	<groupId>com.itextpdf</groupId>
    	<artifactId>kernel</artifactId>
    	<version>7.2.1</version>
    	<!-- kernel depends on io -->
      </dependency>
    
      <dependency>
    	<groupId>com.itextpdf</groupId>
    	<artifactId>layout</artifactId>
    	<version>7.2.1</version>
    	<!-- layout depends on kernel -->
      </dependency>
    
      <dependency>
    	<groupId>com.itextpdf</groupId>
    	<artifactId>pdfa</artifactId>
    	<version>7.2.1</version>
    	<!-- pdfa depends on kernel -->
      </dependency>
    
      <dependency>
    	<groupId>com.itextpdf</groupId>
    	<artifactId>sign</artifactId>
    	<version>7.2.1</version>
    	<!-- sign depends on kernel, layout and forms -->
      </dependency>
    
    	<dependency>
    	<groupId>com.itextpdf</groupId>
    	<artifactId>commons</artifactId>
    	<version>7.2.1</version>
    	<!-- sign depends on kernel, layout and forms -->
      </dependency>
    
      <dependency>
    	<groupId>com.itextpdf</groupId>
    	<artifactId>styled-xml-parser</artifactId>
    	<version>7.2.1</version>
    	<!-- sign depends on kernel, layout and forms -->
      </dependency>
    
    <dependency>
    	<groupId>com.itextpdf</groupId>
    	<artifactId>svg</artifactId>
    	<version>7.2.1</version>
    	<!-- sign depends on kernel, layout and forms -->
      </dependency>
    
    <dependency>
    	<groupId>org.apache.logging.log4j</groupId>
    	<artifactId>log4j-api</artifactId>
    	<version>2.13.3</version>
    </dependency>
    
    <dependency>
    	<groupId>org.apache.logging.log4j</groupId>
    	<artifactId>log4j-core</artifactId>
    	<version>2.13.3</version>
    </dependency>
    
    <dependency>
    	<groupId>org.apache.logging.log4j</groupId>
    	<artifactId>log4j-slf4j-impl</artifactId>
    	<version>2.13.3</version>
    </dependency>
    
    </dependencies>
    

    Beachten Sie, dass das Projekt beim Schreiben die neueste Version (7.2.1) der iText-Bibliothek verwendet. Sie können auf die neueren Versionen aktualisieren, sofern diese verfügbar sind.

Dadurch werden die erforderlichen Bibliotheken in das Projekt importiert. Sie sollten über eine stabile Internetverbindung verfügen, da die Bibliotheken aus dem Maven-Repository heruntergeladen werden.

Schritte zum Erstellen einer PDF-Datei mit der iText-Bibliothek in Java

Sobald die Bibliotheken installiert sind, können Sie die Bibliothek iText verwenden, um mit dem Java-Programm PDF-Dateien zu erstellen.

Die iText-Bibliothek hat eine Klasse namens PdfWriter, die eine neue PDF-Datei zum Schreiben erstellt. Sobald die Datei geöffnet ist, fügen Sie Text, Bild usw. hinzu.

Lassen Sie uns die Schritte zum Erstellen einer PDF-Datei und zum Hinzufügen von Text und Bildern verstehen.

  1. Erstellen Sie eine Instanz der Klasse PdfWriter, indem Sie den Namen der Datei als Parameter an den Konstruktor übergeben.
  2. Fahren Sie fort, um eine Instanz der Klasse PdfDocument zu erstellen, indem Sie die Klasse PdfWriter an den Konstruktor übergeben. Diese Klasse ist für das Schreiben in die PDF-Datei verantwortlich.
  3. Abschließend erstellen Sie eine Instanz der Klasse Document. Es wird an die Klasseninstanz PdfDocument angehängt.

Diese Klasse wird verwendet, um einzelne Elemente an die PDF-Datei anzuhängen.

  1. Jetzt können Sie Text und Bilder in die PDF-Datei schreiben.

Schritte zum Schreiben des Textes in die PDF-Datei in Java mit der iText-Bibliothek

Lassen Sie uns die Schritte sehen, um einen Text in die Datei zu schreiben.

  1. Eine Paragraph-Klasse wird verwendet, um den Text in das PDF zu schreiben. Sie müssen also eine Instanz der Klasse Paragraph erstellen.
  2. Sie können den Text hinzufügen, indem Sie die Methode add() aufrufen.
  3. Sie können die Textdarstellung ändern, indem Sie verschiedene Methoden wie setTextAlignment(), setFont() usw. aufrufen.
  4. Abschließend fügen Sie die Instanz paragraph zur Instanz Document hinzu, indem Sie die Methode add() aufrufen.

Wenn Sie alle Instanzen zum Dokument hinzugefügt haben, müssen Sie es schließlich schließen, indem Sie die Methode close() der Klasse Document aufrufen.

Codebeispiel zum Erstellen von PDFs in Java mit der iText-Bibliothek

import com.itextpdf.io.font.constants.StandardFonts;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.parser.PdfTextExtractor;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.properties.TextAlignment;
import java.io.IOException;

public class pdfExample {
  public static void main(String[] args) {
    String file = "sample_pdf.pdf";
    try {
      createPdf(file);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  private static void createPdf(String file) throws IOException {
    PdfWriter writer = new PdfWriter(file);
    PdfDocument pdfDoc = new PdfDocument(writer);
    Document doc = new Document(pdfDoc);

    PdfFont myFont = PdfFontFactory.createFont(StandardFonts.TIMES_ROMAN);

    Paragraph p1 = new Paragraph();
    p1.add("Hello, This is Delftstack!");
    p1.setTextAlignment(TextAlignment.CENTER);
    p1.setFont(myFont);
    p1.setFontSize(28);
    doc.add(p1);

    Paragraph p2 = new Paragraph();
    p2.add("We help you understand the concepts.");
    p2.setFontSize(18);
    doc.add(p2);

    doc.close();
  }
}

Die mit dem obigen Code erstellte PDF-Datei ist unten angegeben.

Erstellte PDF-Datei

Schritte zum Lesen der PDF-Datei mit der iText-Bibliothek in Java

Die iText-Bibliothek stellt eine PdfReader-Klasse zum Lesen einer PDF-Datei zur Verfügung. Die PDF-Datei kann gelesen werden, indem Sie die unten angegebenen Schritte ausführen.

  1. Zuerst müssen Sie eine Instanz der Klasse PdfReader erstellen, indem Sie den Pfad der Datei an den Konstruktor übergeben.
  2. Erstellen Sie eine Instanz der Klasse PdfDocument, indem Sie die Instanz von PdfReader an den Konstruktor übergeben.
  3. Wenn Ihre PDF-Datei mehrere Seiten enthält, müssen Sie jede Seite durchlaufen. Um die Anzahl der Seiten zu erhalten, können Sie die Methode getNumberOfPages() mithilfe der Instanz der Klasse PdfDocument aufrufen.
  4. Durchlaufen Sie jede Seite.
    1. Rufen Sie die Methode getTextFromPage() der Klasse PdfTextExtractor auf, indem Sie die aktuelle Seite des Dokuments übergeben.
    2. Um die aktuelle Seite zu erhalten, müssen Sie die Methode getPage() der Klasse Document aufrufen und die aktuelle Seitenzahl übergeben.
    3. Die Methode getTextFromPage() ist statisch, Sie brauchen also keine Klasseninstanz.
    4. Die Methode gibt den gesamten Text auf der aktuellen Seite zurück. Sie können es in einer String-Variablen speichern.
    5. Text verarbeiten (z. B. auf der Konsole anzeigen).

Codebeispiel zum Lesen von PDF in Java mit der iText-Bibliothek

import com.itextpdf.io.font.constants.StandardFonts;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.parser.PdfTextExtractor;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.properties.TextAlignment;
import java.io.IOException;

public class pdfExample {
  public static void main(String[] args) {
    String file = "sample_pdf.pdf";
    try {
      readpdf(file);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  private static void readpdf(String file) throws IOException {
    PdfReader pr = new PdfReader(file);
    PdfDocument doc = new PdfDocument(pr);
    int num = doc.getNumberOfPages();

    for (int i = 1; i <= num; i++) {
      String str = PdfTextExtractor.getTextFromPage(doc.getPage(i));
      System.out.println(str);
    }
  }
}

Ausgabe:

Hello, This is Delftstack!
We help you understand the concepts.

Fazit

Dieser Artikel behandelt die Grundlagen des Lesens und Schreibens der PDF-Datei mit der iText-Bibliothek. Die Bibliothek iText kann jedoch komplexe Operationen an der PDF-Datei ausführen.

Um mehr über die Bibliothek iText und ihre Funktionalitäten zu erfahren, besuchen Sie die Dokumentation.

Verwandter Artikel - Java PDF