import com.ironsoftware.ironpdf.*;
import java.io.IOException;
import java.nio.file.Paths;
// Apply your license key
License.setLicenseKey("YOUR-LICENSE-KEY");
// Set a log path
Settings.setLogPath(Paths.get("C:/tmp/IronPdfEngine.log"));
// Render the HTML as a PDF. Stored in myPdf as type PdfDocument;
PdfDocument myPdf = PdfDocument.renderHtmlAsPdf("<h1> ~Hello World~ </h1> Made with IronPDF!");
// Save the PdfDocument to a file
myPdf.saveAs(Paths.get("html_saved.pdf"));
Ein Vergleich zwischen IronPDF for Java und Apache PDFBox
Regan Pun
14. Januar 2023
Teilen Sie:
Dieser Artikel befasst sich mit den folgenden zwei der beliebtesten Bibliotheken, die in Java für die Arbeit mit PDF-Dateien verwendet werden:
IronPDF
Apache PDFBox
Welche Bibliothek sollten wir nun verwenden? In diesem Artikel werde ich die Kernfunktionen beider Bibliotheken vergleichen, damit Sie entscheiden können, welche für Ihre Produktionsumgebung am besten geeignet ist.
Wie man HTML in Apache PDFBOX in PDF umwandelt
Java-Bibliothek zur Konvertierung von HTML in PDF installieren
Die IronPDF-Bibliothek unterstützt die Konvertierung von HTML zu PDF für Java 8+, Kotlin und Scala. Dieser Ersteller bietet plattformübergreifende Unterstützung, d. h. für Windows-, Linux- oder Cloud-Plattformen. Es wurde speziell für Java entwickelt und legt Wert auf Genauigkeit, Benutzerfreundlichkeit und Geschwindigkeit.
IronPDF wurde entwickelt, um Softwareentwickler bei der Erstellung, Bearbeitung und Extraktion von Inhalten aus PDF-Dokumenten zu unterstützen. Sie basiert auf dem Erfolg und der Beliebtheit von IronPDF for .NET.
Zu den herausragenden Merkmalen von IronPDF gehören:
HTML-Assets verwenden
HTML (5 und älter), CSS (Screen & Print), Bilder (JPG, PNG, GIF, TIFF, SVG, BMP), JavaScript (+ Renderverzögerungen)
Schriftarten (Web & Icon)
HTML zu PDF
Erstellung und Bearbeitung von HTML-Dateien/Zeichenfolgen in PDF-Dokumenten
URL zu PDF
Bilder konvertieren
Bild in neue PDF-Dokumente
PDF zu Bild
Benutzerdefinierte Papiereinstellungen
Benutzerdefiniertes Papierformat, Ausrichtung und Drehung
Ränder (mm, Zoll & null)
Farbe & Graustufen, Auflösung & JPEG-Qualität
Zusätzliche Merkmale
Website & Systemanmeldungen
Benutzerdefinierte Agenten und Proxys
HTTP-Kopfzeilen
Apache PDFBox-Bibliothek
Apache PDFBox ist eine Open-Source-Java-Bibliothek für die Arbeit mit PDF-Dateien. Sie ermöglicht es, bestehende Dokumente zu erstellen, zu bearbeiten und zu manipulieren. Es kann auch Inhalte aus Dateien extrahieren. Die Bibliothek bietet mehrere Dienstprogramme, mit denen verschiedene Operationen an Dokumenten durchgeführt werden können.
Hier sind die herausragenden Merkmale der Apache PDFBox.
Text extrahieren
Extrahieren von Unicode-Text aus Dateien.
Teilen & Zusammenführen
Eine einzelne PDF-Datei in mehrere Dateien aufteilen
Mehrere Dokumente zusammenführen.
Formulare ausfüllen
Daten aus Formularen extrahieren
Füllen Sie ein PDF-Formular aus.
Preflight
Validierung von Dateien anhand des PDF/A-1b-Standards.
Drucken
Drucken Sie eine PDF-Datei über die Standard-Druck-API.
Als Bild speichern
Speichern Sie PDFs als PNG, JPEG oder andere Bildtypen.
PDFs erstellen
Entwickeln Sie eine PDF-Datei von Grund auf mit eingebetteten Schriftarten und Bildern.
Unterzeichnung
Digitales Signieren von Dateien.
Übersicht
Der Rest des Artikels lautet wie folgt:
IronPDF-Installation
Apache PDFBox-Installation
PDF-Dokument erstellen
Bilder zum Dokumentieren
Dokumente verschlüsseln
Lizenzvergabe
Schlussfolgerung
Jetzt werden wir die Bibliotheken herunterladen und installieren, um sie und ihre leistungsstarken Funktionen zu vergleichen.
1. IronPDF-Installation
Die Installation von IronPDF for Java ist einfach. Es gibt verschiedene Wege, dies zu tun. In diesem Abschnitt werden zwei der gängigsten Methoden vorgestellt.
1.1. JAR herunterladen und die Bibliothek hinzufügen
Um die IronPDF JAR-Datei herunterzuladen, besuchen Sie die Maven-Website für IronPDF und laden Sie die neueste Version von IronPDF herunter.
Klicken Sie auf die Option Downloads und laden Sie die JAR-Datei herunter.
IronPDF JAR herunterladen
Sobald die JAR-Datei heruntergeladen ist, ist es an der Zeit, die Bibliothek in unser Maven-Projekt zu installieren. Sie können jede IDE verwenden, wir werden jedoch NetBeans einsetzen. Im Abschnitt Projekte:
Klicken Sie mit der rechten Maustaste auf den Bibliotheken-Ordner und wählen Sie die Option JAR/Ordner hinzufügen.
IronPDF-Bibliothek in Netbeans hinzufügen
Wechseln Sie in den Ordner, in den Sie die JAR-Datei heruntergeladen haben.
Wählen Sie die IronPDF JAR-Datei aus und klicken Sie auf die Schaltfläche Öffnen.
IronPDF JAR öffnen
1.2. Installation über Maven als Abhängigkeit
Eine andere Möglichkeit, IronPDF herunterzuladen und zu installieren, ist die Verwendung von Maven. Sie können die Abhängigkeit einfach in die pom.xml-Datei einfügen oder das Abhängigkeitstool von NetBeans verwenden, um sie in Ihr Projekt einzubinden.
Hinzufügen der Bibliotheksabhängigkeit in pom.xml
Kopieren Sie den folgenden Code und fügen Sie ihn in die pom.xml ein.
Die Ausgabe ist die unten stehende URL, die gut formatiert und wie folgt gespeichert wird:
IronPDF URL-Ausgabe
HTML-Eingabezeichenfolge in PDF
Das folgende Codebeispiel zeigt, wie ein HTML-String zum Rendern einer PDF-Datei in Java verwendet werden kann. Sie verwenden einfach einen HTML-String oder ein Dokument, um es in neue Dokumente zu konvertieren.
License.setLicenseKey("YOUR-LICENSE-KEY");
Settings.setLogPath(Paths.get("C:/tmp/IronPdfEngine.log"));
PdfDocument myPdf = PdfDocument.renderHtmlAsPdf("<h1> ~Hello World~ </h1> Made with IronPDF!");
myPdf.saveAs(Paths.get("html_saved.pdf"));
License.setLicenseKey("YOUR-LICENSE-KEY");
Settings.setLogPath(Paths.get("C:/tmp/IronPdfEngine.log"));
PdfDocument myPdf = PdfDocument.renderHtmlAsPdf("<h1> ~Hello World~ </h1> Made with IronPDF!");
myPdf.saveAs(Paths.get("html_saved.pdf"));
JAVA
Die Ausgabe lautet wie folgt:
IronPDF HTML-Ausgabe
3.2. Apache PDFBox verwenden
PDFBox kann auch neue PDF-Dokumente aus verschiedenen Formaten erzeugen, aber es kann nicht direkt aus einer URL oder einem HTML-String konvertieren.
Das folgende Codebeispiel erstellt ein Dokument mit Text:
//Create document object
PDDocument document = new PDDocument();
PDPage blankPage = new PDPage();
document.addPage(blankPage);
//Retrieving the pages of the document
PDPage paper = document.getPage(0);
PDPageContentStream contentStream = new PDPageContentStream(document, paper);
//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, 700);
String text = "This is the sample document and we are adding content to it.";
//Adding text in the form of a 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("C:/PdfBox_Examples/my_doc.pdf");
System.out.println("PDF created");
//Closing the document
document.close();
//Create document object
PDDocument document = new PDDocument();
PDPage blankPage = new PDPage();
document.addPage(blankPage);
//Retrieving the pages of the document
PDPage paper = document.getPage(0);
PDPageContentStream contentStream = new PDPageContentStream(document, paper);
//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, 700);
String text = "This is the sample document and we are adding content to it.";
//Adding text in the form of a 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("C:/PdfBox_Examples/my_doc.pdf");
System.out.println("PDF created");
//Closing the document
document.close();
JAVA
PDFBox Positionierte Ausgabe
Wenn wir jedoch contentStream.newLineAtOffset(25, 700); aus dem obigen Codebeispiel entfernen und dann das Projekt ausführen, erzeugt es ein PDF mit einer Ausgabe am unteren Rand der Seite. Das kann für einige Entwickler ziemlich lästig sein, da sie den Text mit (x,y)-Koordinaten anpassen müssen. y = 0 bedeutet, dass der Text am unteren Rand erscheint.
PDFBox ohne Positionierungsausgabe
4. Bilder zum Dokumentieren
4.1. Verwendung von IronPDF
IronPDF kann problemlos mehrere Bilder in eine einzige PDF-Datei konvertieren. Der Code zum Hinzufügen mehrerer Bilder zu einem einzigen Dokument lautet wie folgt:
import com.ironsoftware.ironpdf.*;
import java.io.IOException;
import java.nio.file.*;
import java.util.ArrayList;
import java.util.List;
// Reference to the directory containing the images that we desire to convert
List<Path> images = new ArrayList<>();
images.add(Paths.get("imageA.png"));
images.add(Paths.get("imageB.png"));
images.add(Paths.get("imageC.png"));
images.add(Paths.get("imageD.png"));
images.add(Paths.get("imageE.png"));
// Render all targeted images as PDF content and save them together in one document.
PdfDocument merged = PdfDocument.fromImage(images);
merged.saveAs("output.pdf");
import com.ironsoftware.ironpdf.*;
import java.io.IOException;
import java.nio.file.*;
import java.util.ArrayList;
import java.util.List;
// Reference to the directory containing the images that we desire to convert
List<Path> images = new ArrayList<>();
images.add(Paths.get("imageA.png"));
images.add(Paths.get("imageB.png"));
images.add(Paths.get("imageC.png"));
images.add(Paths.get("imageD.png"));
images.add(Paths.get("imageE.png"));
// Render all targeted images as PDF content and save them together in one document.
PdfDocument merged = PdfDocument.fromImage(images);
merged.saveAs("output.pdf");
JAVA
IronPDF Bilder zur Ausgabe
4.2. Apache PDFBox verwenden
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;
// Reference to the directory containing the images that we desire to convert
Path imageDirectory = Paths.get("assets/images");
// Create an empty list to contain Paths to images from the directory.
List<Path> imageFiles = new ArrayList<>();
PDDocument doc = new PDDocument();
// Use a DirectoryStream to populate the list with paths for each image in the directory that we want to convert
try (DirectoryStream<Path> stream = Files.newDirectoryStream(imageDirectory, "*.{png,jpg}")) {
for (Path entry : stream) {
imageFiles.add(entry);
}
for (int i = 0; i < imageFiles.size(); i++){
//Add a Page
PDPage blankPage = new PDPage();
doc.addPage(blankPage);
PDPage page = doc.getPage(i);
//Creating PDImageXObject object
PDImageXObject pdImage = PDImageXObject.createFromFile(imageFiles.get(i).toString(),doc);
//creating the PDPageContentStream object
PDPageContentStream contents = new PDPageContentStream(doc, page);
//Drawing the image in the document
contents.drawImage(pdImage, 0, 0);
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();
} catch (IOException exception) {
throw new RuntimeException(String.format("Error converting images to PDF from directory: %s: %s",
imageDirectory,
exception.getMessage()),
exception);
}
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;
// Reference to the directory containing the images that we desire to convert
Path imageDirectory = Paths.get("assets/images");
// Create an empty list to contain Paths to images from the directory.
List<Path> imageFiles = new ArrayList<>();
PDDocument doc = new PDDocument();
// Use a DirectoryStream to populate the list with paths for each image in the directory that we want to convert
try (DirectoryStream<Path> stream = Files.newDirectoryStream(imageDirectory, "*.{png,jpg}")) {
for (Path entry : stream) {
imageFiles.add(entry);
}
for (int i = 0; i < imageFiles.size(); i++){
//Add a Page
PDPage blankPage = new PDPage();
doc.addPage(blankPage);
PDPage page = doc.getPage(i);
//Creating PDImageXObject object
PDImageXObject pdImage = PDImageXObject.createFromFile(imageFiles.get(i).toString(),doc);
//creating the PDPageContentStream object
PDPageContentStream contents = new PDPageContentStream(doc, page);
//Drawing the image in the document
contents.drawImage(pdImage, 0, 0);
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();
} catch (IOException exception) {
throw new RuntimeException(String.format("Error converting images to PDF from directory: %s: %s",
imageDirectory,
exception.getMessage()),
exception);
}
JAVA
PDFBox Bilder zur Ausgabe
5. Dokumente verschlüsseln
5.1. Verwendung von IronPDF
Der Code zum Verschlüsseln von PDFs mit einem Passwort in IronPDF ist unten angegeben:
// Open a document(or create a new one from HTML)
PdfDocument pdf = PdfDocument.fromFile(Paths.get("assets/composite.pdf"));
// Edit security settings
SecurityOptions securityOptions = new SecurityOptions();
securityOptions.setOwnerPassword("top-secret");
securityOptions.setUserPassword("sharable");
// Change or set the document encryption password
SecurityManager securityManager = pdf.getSecurity();
securityManager.setSecurityOptions(securityOptions);
pdf.saveAs(Paths.get("assets/secured.pdf"));
// Open a document(or create a new one from HTML)
PdfDocument pdf = PdfDocument.fromFile(Paths.get("assets/composite.pdf"));
// Edit security settings
SecurityOptions securityOptions = new SecurityOptions();
securityOptions.setOwnerPassword("top-secret");
securityOptions.setUserPassword("sharable");
// Change or set the document encryption password
SecurityManager securityManager = pdf.getSecurity();
securityManager.setSecurityOptions(securityOptions);
pdf.saveAs(Paths.get("assets/secured.pdf"));
JAVA
5.2. Apache PDFBox verwenden
Apache PDFBox bietet auch die Möglichkeit der Dokumentenverschlüsselung, um die Sicherheit der Dateien zu erhöhen. Sie können auch zusätzliche Informationen wie Metadaten hinzufügen. Der Code lautet wie folgt:
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Creating access permission object
AccessPermission ap = new AccessPermission();
//Creating StandardProtectionPolicy object
StandardProtectionPolicy spp = new StandardProtectionPolicy("1234", "1234", ap);
//Setting the length of the encryption key
spp.setEncryptionKeyLength(128);
//Setting the access permissions
spp.setPermissions(ap);
//Protecting the document
document.protect(spp);
System.out.println("Document encrypted");
//Saving the document
document.save("C:/PdfBox_Examples/encrypted.pdf");
//Closing the document
document.close();
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Creating access permission object
AccessPermission ap = new AccessPermission();
//Creating StandardProtectionPolicy object
StandardProtectionPolicy spp = new StandardProtectionPolicy("1234", "1234", ap);
//Setting the length of the encryption key
spp.setEncryptionKeyLength(128);
//Setting the access permissions
spp.setPermissions(ap);
//Protecting the document
document.protect(spp);
System.out.println("Document encrypted");
//Saving the document
document.save("C:/PdfBox_Examples/encrypted.pdf");
//Closing the document
document.close();
JAVA
6. Preisgestaltung und Lizenzierung
IronPDF Preisgestaltung und Lizenzierung
IronPDF ist kostenlos für die Entwicklung einfacher PDF-Anwendungen und kann jederzeit für die kommerzielle Nutzung lizenziert werden. IronPDF bietet Einzelprojektlizenzen, Einzelentwicklerlizenzen, Lizenzen für Agenturen und multinationale Organisationen sowie SaaS- und OEM-Weiterverteilungslizenzen und Support. Alle Lizenzen sind mit einer kostenlosen Testversion, einer 30-tägigen Geld-zurück-Garantie und einem Jahr Softwareunterstützung und Upgrades erhältlich.
Das Lite-Paket ist verfügbar für $749. Bei IronPDF-Produkten fallen keinerlei wiederkehrende Gebühren an. Ausführlichere Informationen zur Softwarelizenzierung finden Sie auf der IronPDF-Lizenzierungsseite.
IronPDF-Lizenzierung
Preise und Lizenzierung von Apache PDFBox
Apache PDFBox ist frei und kostenlos erhältlich. Sie ist kostenlos, unabhängig davon, wie sie verwendet wird, ob für persönliche, interne oder kommerzielle Zwecke.
Sie können die Apache License 2.0 (aktuelle Version) von der Apache License 2.0 Text einfügen. Um die Kopie der Lizenz einzubinden, fügen Sie sie einfach in Ihre Arbeit ein. Sie können auch den folgenden Hinweis als Kommentar am Anfang Ihres Quellcodes anbringen.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Schlussfolgerung
Im Vergleich dazu hat IronPDF gegenüber Apache PDFBox die Nase vorn, sowohl was die Funktionalität als auch die Produktunterstützung betrifft. Sie bietet auch SaaS- und OEM-Support, was in der modernen Softwareentwicklung eine Voraussetzung ist. Die Bibliothek ist jedoch nicht wie Apache PDFBox für die kommerzielle Nutzung frei.
Unternehmen mit umfangreichen Softwareanwendungen benötigen möglicherweise kontinuierliche Fehlerbehebungen und Support von Drittanbietern, um Probleme zu lösen, die während der Softwareentwicklung auftreten. Dies ist etwas, das vielen Open-Source-Lösungen wie Apache PDFBox fehlt, die auf die freiwillige Unterstützung ihrer Entwicklergemeinschaft angewiesen sind, um sie zu pflegen. Kurz gesagt, IronPDF eignet sich am besten für den Einsatz in Unternehmen und auf dem Markt, während Apache PDFBox besser für persönliche und nicht-kommerzielle Anwendungen geeignet ist.
Sie können jetzt alle Produkte von Iron Software in der Iron Suite zu einem stark reduzierten Preis erhalten. Besuchen Sie diese Iron Suite-Webseite für weitere Informationen zu diesem erstaunlichen Angebot.
Regan schloss sein Studium an der University of Reading mit einem BA in Elektrotechnik ab. Bevor er zu Iron Software kam, konzentrierte er sich in seinen früheren Jobs auf einzelne Aufgaben. Was ihm bei Iron Software am meisten Spaß macht, ist das Spektrum der Aufgaben, die er übernehmen kann, sei es im Vertrieb, im technischen Support, in der Produktentwicklung oder im Marketing. Es macht ihm Spaß, die Art und Weise zu verstehen, wie Entwickler die Bibliothek von Iron Software nutzen, und dieses Wissen zu nutzen, um die Dokumentation und die Produkte kontinuierlich zu verbessern.
< PREVIOUS Ein Vergleich zwischen IronPDF for Java und Spire.PDF Java
NÄCHSTES > Ein Vergleich zwischen IronPDF for Java und iTextPDF itext7 for Java