Erstellen und Lesen von PDF-Dateien in Java mit der iText-Bibliothek
- PDF und Bibliotheken zum Arbeiten mit PDF-Dateien
-
Funktionen der
iText
-Bibliothek -
Schritte zum Installieren der
iText
-Bibliothek in Eclipse -
Schritte zum Erstellen einer PDF-Datei mit der
iText
-Bibliothek in Java -
Schritte zum Lesen der PDF-Datei mit der
iText
-Bibliothek in Java
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.
-
iText
- Die Community-Version voniText
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. -
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.
-
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. -
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.
- 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. - Wir können Lesezeichen erstellen, Seitenzahlen hinzufügen und Wasserzeichen zur PDF-Datei hinzufügen, indem wir die Bibliothek
iText
verwenden. - Wir können die PDF-Dateien teilen und zusammenführen.
- Die Bibliothek
iText
bietet die Möglichkeit, mit interaktiven Formularen in PDF-Dateien zu arbeiten. - 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.
-
Navigieren Sie zu
Konfigurieren
. -
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. -
Navigieren Sie in der Menüleiste zu
Datei
und klicken Sie aufAktualisieren
.
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.
- Erstellen Sie eine Instanz der Klasse
PdfWriter
, indem Sie den Namen der Datei als Parameter an den Konstruktor übergeben. - Fahren Sie fort, um eine Instanz der Klasse
PdfDocument
zu erstellen, indem Sie die KlassePdfWriter
an den Konstruktor übergeben. Diese Klasse ist für das Schreiben in die PDF-Datei verantwortlich. - Abschließend erstellen Sie eine Instanz der Klasse
Document
. Es wird an die KlasseninstanzPdfDocument
angehängt.
Diese Klasse wird verwendet, um einzelne Elemente an die PDF-Datei anzuhängen.
- 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.
- Eine
Paragraph
-Klasse wird verwendet, um den Text in das PDF zu schreiben. Sie müssen also eine Instanz der KlasseParagraph
erstellen. - Sie können den Text hinzufügen, indem Sie die Methode
add()
aufrufen. - Sie können die Textdarstellung ändern, indem Sie verschiedene Methoden wie
setTextAlignment()
,setFont()
usw. aufrufen. - Abschließend fügen Sie die Instanz
paragraph
zur InstanzDocument
hinzu, indem Sie die Methodeadd()
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.
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.
- Zuerst müssen Sie eine Instanz der Klasse
PdfReader
erstellen, indem Sie den Pfad der Datei an den Konstruktor übergeben. - Erstellen Sie eine Instanz der Klasse
PdfDocument
, indem Sie die Instanz vonPdfReader
an den Konstruktor übergeben. - 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 KlassePdfDocument
aufrufen. - Durchlaufen Sie jede Seite.
- Rufen Sie die Methode
getTextFromPage()
der KlassePdfTextExtractor
auf, indem Sie die aktuelle Seite des Dokuments übergeben. - Um die aktuelle Seite zu erhalten, müssen Sie die Methode
getPage()
der KlasseDocument
aufrufen und die aktuelle Seitenzahl übergeben. - Die Methode
getTextFromPage()
ist statisch, Sie brauchen also keine Klasseninstanz. - Die Methode gibt den gesamten Text auf der aktuellen Seite zurück. Sie können es in einer
String
-Variablen speichern. - Text verarbeiten (z. B. auf der Konsole anzeigen).
- Rufen Sie die Methode
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.