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"));
Comparaison entre IronPDF for Java et Apache PDFBox
Jordi Bardia
janvier 14, 2023
Partager:
Cet article traite des deux bibliothèques les plus populaires utilisées en Java pour travailler avec des fichiers PDF :
IronPDF
Apache PDFBox
Quelle bibliothèque devrions-nous utiliser ? Dans cet article, je vais comparer les fonctionnalités de base de ces deux bibliothèques afin de vous permettre de décider laquelle est la plus adaptée à votre environnement de production.
Comment convertir HTML en PDF avec Apache PDFBOX
Installer la bibliothèque Java pour convertir HTML en PDF
La bibliothèque IronPDF prend en charge la conversion HTML en PDF pour Java 8+, Kotlin et Scala. Ce créateur offre un support multiplateforme, c'est-à-dire Windows, Linux ou les plateformes Cloud. Il est spécialement conçu pour Java qui privilégie la précision, la facilité d'utilisation et la rapidité.
IronPDF est développé pour aider les développeurs de logiciels à créer, modifier et extraire du contenu à partir de documents PDF. Elle s'appuie sur le succès et la popularité d'IronPDF for .NET.
Les principales caractéristiques d'IronPDF sont les suivantes :
Utiliser les ressources HTML
HTML (5 et inférieur), CSS (Écran & Impression), images (JPG, PNG, GIF, TIFF, SVG, BMP), JavaScript (+ Délais de rendu)
Polices de caractères (Web et icônes)
HTML vers PDF
Création et manipulation de fichiers HTML/chaînes de caractères vers des documents PDF
URL vers PDF
Convertir des images
Image vers de nouveaux documents PDF
PDF à l'image
Paramètres de papier personnalisés
Format, orientation et rotation du papier personnalisés
Marges (mm, pouce & zéro)
Couleur et niveaux de gris, résolution et qualité JPEG
Caractéristiques supplémentaires
Connexion au site web et au système
Agents utilisateurs et mandataires personnalisés
En-têtes HTTP
Bibliothèque Apache PDFBox
Apache PDFBox est une bibliothèque Java open source permettant de travailler avec des fichiers PDF. Il permet de générer, d'éditer et de manipuler des documents existants. Il peut également extraire le contenu des fichiers. La bibliothèque propose plusieurs utilitaires permettant d'effectuer diverses opérations sur les documents.
Voici les principales caractéristiques d'Apache PDFBox.
Extraire le texte
Extraction de texte Unicode à partir de fichiers.
Séparer et fusionner
Diviser un seul PDF en plusieurs fichiers
Fusionner plusieurs documents.
Remplir les formulaires
Extraire des données de formulaires
Remplir un formulaire PDF.
Pré-vol
Valider les fichiers par rapport à la norme PDF/A-1b.
Imprimer
Imprimer un PDF à l'aide de l'API d'impression standard.
Enregistrer en tant qu'image
Enregistrez les PDF au format PNG, JPEG ou tout autre type d'image.
Créer des PDF
Développez un PDF à partir de zéro avec des polices et des images intégrées.
Signature
Signer numériquement les fichiers.
Vue d'ensemble
Le reste de l'article se lit comme suit :
Installation d'IronPDF
Installation d'Apache PDFBox
Créer un document PDF
Images à documenter
Cryptage des documents
Licences
Conclusion
Nous allons maintenant télécharger et installer les bibliothèques afin de les comparer et de découvrir leurs puissantes fonctionnalités.
1. Installation d'IronPDF
L'installation d'IronPDF for Java est simple. Il existe différentes manières de procéder. Cette section présente deux des méthodes les plus courantes.
1.1. Télécharger le JAR et ajouter la bibliothèque
Pour télécharger le fichier JAR d'IronPDF, visitez le site Maven pour IronPDF et téléchargez la dernière version d'IronPDF.
Cliquez sur l'option Downloads et téléchargez le JAR.
Télécharger le JAR IronPDF
Une fois le JAR téléchargé, il est temps d'installer la bibliothèque dans notre projet Maven. Vous pouvez utiliser n'importe quel IDE, mais nous utiliserons NetBeans. Dans la section Projets :
Cliquez avec le bouton droit sur le dossier Libraries et sélectionnez l'option Ajouter un JAR/Dossier.
Ajouter la bibliothèque IronPDF dans Netbeans
Déplacez-vous dans le dossier où vous avez téléchargé le JAR.
Sélectionnez le JAR IronPDF et cliquez sur le bouton Ouvrir.
Ouvrir le JAR IronPDF
1.2. Installation via Maven en tant que dépendance
Une autre façon de télécharger et d'installer IronPDF est d'utiliser Maven. Vous pouvez simplement ajouter la dépendance dans le fichier pom.xml ou utiliser l'outil Dependency de NetBeans pour l'inclure dans votre projet.
Ajouter la dépendance de la bibliothèque dans pom.xml
Copiez le code suivant et collez-le dans le pom.xml.
``
#### Ajouter la bibliothèque à l'aide de la fonctionnalité Dépendances
- Clic droit sur les dépendances
- Sélectionnez Add Dependency et remplissez les détails suivants avec la version mise à jour
<div class="content-img-align-center">
<div class="center-image-wrapper">
<a rel="nofollow" href="/static-assets/ironpdf-java/blog/apache-pdfbox-html-to-pdf-java/apache-pdfbox-html-to-pdf-java-4.webp" target="_blank"><img src="/static-assets/ironpdf-java/blog/apache-pdfbox-html-to-pdf-java/apache-pdfbox-html-to-pdf-java-4.webp" alt="Une comparaison entre IronPDF pour Java et Apache PDF Box pour Java - Figure 4 : Ajouter la dépendance IronPDF" class="img-responsive add-shadow"></a>
<p class="content__image-caption">Ajouter la dépendance IronPDF</p>
</div>
</div>
Installons maintenant Apache PDFBox.
## 2. Installation d'Apache PDFBox
Nous pouvons télécharger et installer PDFBox en utilisant les mêmes méthodes qu'IronPDF.
### 2.1. Télécharger le JAR et ajouter la bibliothèque manuellement
Pour installer le JAR PDFBox, visitez le site officiel et [téléchargez la bibliothèque PDFBox](https://pdfbox.apache.org/) dans sa dernière version.
Après avoir créé un projet, dans la section projet :
- Cliquez avec le bouton droit sur le dossier Libraries et sélectionnez l'option **Add JAR/Folder**.
<div class="content-img-align-center">
<div class="center-image-wrapper">
<a rel="nofollow" href="/static-assets/ironpdf-java/blog/apache-pdfbox-html-to-pdf-java/apache-pdfbox-html-to-pdf-java-5.webp" target="_blank"><img src="/static-assets/ironpdf-java/blog/apache-pdfbox-html-to-pdf-java/apache-pdfbox-html-to-pdf-java-5.webp" alt="Une comparaison entre IronPDF pour Java et Apache PDF Box pour Java - Figure 5 : Ajouter la bibliothèque" class="img-responsive add-shadow"></a>
<p class="content__image-caption">Ajouter une bibliothèque</p>
</div>
</div>
- Déplacez-vous dans le dossier où vous avez téléchargé le JAR.
- Sélectionnez le JAR PDFBox et cliquez sur le bouton Ouvrir.
<div class="content-img-align-center">
<div class="center-image-wrapper">
<a rel="nofollow" href="/static-assets/ironpdf-java/blog/apache-pdfbox-html-to-pdf-java/apache-pdfbox-html-to-pdf-java-6.webp" target="_blank"><img src="/static-assets/ironpdf-java/blog/apache-pdfbox-html-to-pdf-java/apache-pdfbox-html-to-pdf-java-6.webp" alt="Une comparaison entre IronPDF for Java et Apache PDF Box for Java - Figure 6 : Ouvrir JAR PDFBox" class="img-responsive add-shadow"></a>
<p class="content__image-caption">Ouvrir le JAR de PDFBox</p>
</div>
</div>
### 2.2. Installation via Maven en tant que dépendance
#### Ajouter une dépendance dans le fichier pom.xml
Copiez le code suivant et collez-le dans le pom.xml.
```xml
<dependencies>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox-app</artifactId>
<version>3.0.0-alpha3</version>
</dependency>
</dependencies>
Le résultat est l'URL ci-dessous qui est bien formaté et sauvegardé comme suit :
Sortie de l'URL IronPDF
Chaîne d'entrée HTML vers PDF
L'exemple de code suivant montre comment une chaîne HTML peut être utilisée pour rendre un PDF en Java. Il suffit d'utiliser une chaîne ou un document HTML pour le convertir en de nouveaux documents.
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
Le résultat est le suivant :
Sortie HTML d'IronPDF
3.2. Utilisation d'Apache PDFBox
PDFBox peut également générer de nouveaux documents PDF à partir de différents formats, mais il ne peut pas convertir directement une URL ou une chaîne HTML.
L'exemple de code suivant crée un document contenant du texte :
//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 Positioned Output
Cependant, si nous supprimons contentStream.newLineAtOffset(25, 700); de l'exemple de code ci-dessus et que nous exécutons ensuite le projet, cela produit un PDF avec une sortie en bas de la page. Cela peut être assez ennuyeux pour certains développeurs, car ils doivent ajuster le texte en utilisant des coordonnées (x,y). y = 0 signifie que le texte apparaîtra en bas.
PDFBox sans sortie de positionnement
4. Images à documenter
4.1. Utilisation d'IronPDF
IronPDF peut facilement convertir plusieurs images en un seul PDF. Le code permettant d'ajouter plusieurs images à un seul document est le suivant :
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
Sortie d'images IronPDF
4.2. Utilisation d'Apache PDFBox
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 Images to Output
5. Cryptage des documents
5.1. Utilisation d'IronPDF
Le code permettant de crypter les PDF avec un mot de passe dans IronPDF est donné ci-dessous :
// 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. Utilisation d'Apache PDFBox
Apache PDFBox permet également le cryptage des documents afin de rendre les fichiers plus sûrs. Vous pouvez également ajouter des informations supplémentaires telles que des métadonnées. Le code est le suivant :
//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. Prix et licences
Prix et licences d'IronPDF
IronPDF est gratuit pour le développement d'applications PDF simples et peut à tout moment faire l'objet d'une licence pour un usage commercial. IronPDF propose des licences pour un seul projet, des licences pour un seul développeur, des licences pour les agences et les organisations multinationales, ainsi que des licences de redistribution SaaS et OEM et une assistance. Toutes les licences sont disponibles avec un essai gratuit, une garantie de remboursement de 30 jours et un an de support logiciel et de mises à jour.
Le package Lite est disponible pour $749. Il n'y a absolument aucun frais récurrent avec les produits IronPDF. Des informations plus détaillées sur les licences logicielles sont disponibles sur la page de licences IronPDF du produit.
Licences d'IronPDF
Prix et licences d'Apache PDFBox
Apache PDFBox est disponible gratuitement. La traduction est gratuite, quelle que soit la manière dont elle est utilisée, que ce soit à des fins personnelles, internes ou commerciales.
Vous pouvez inclure la licence Apache 2.0 (version actuelle) à partir du Texte de la licence Apache 2.0. Pour inclure la copie de la licence, il vous suffit de l'inclure dans votre travail. Vous pouvez également joindre l'avis suivant sous forme de commentaire en haut de votre code source.
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.
Conclusion
En comparaison, IronPDF l'emporte sur Apache PDFBox en termes de fonctionnalités et d'assistance technique. L'entreprise fournit également un support SaaS et OEM, ce qui est une exigence dans le développement de logiciels modernes. Cependant, la bibliothèque n'est pas libre d'utilisation commerciale comme l'est Apache PDFBox.
Les entreprises disposant d'applications logicielles de grande envergure peuvent avoir besoin de corrections de bogues et d'une assistance continue de la part de fournisseurs tiers pour résoudre les problèmes qui surviennent au cours du développement du logiciel. C'est un aspect qui fait défaut à de nombreuses solutions open-source comme Apache PDFBox, qui dépend du soutien volontaire de sa communauté de développeurs pour assurer sa maintenance. En résumé, IronPDF convient mieux à un usage professionnel et commercial, tandis qu'Apache PDFBox est plus adapté aux applications personnelles et non commerciales.
Il existe également une version d'essai gratuite pour tester les fonctionnalités d'IronPDF. Essayez-le ou achetez IronPDF.
Vous pouvez désormais obtenir tous les produits d'Iron Software dans l'Iron Suite à un prix fortement réduit. Visitez cette page web de l'Iron Suite pour plus d'informations sur cette offre incroyable.
Jordi maîtrise parfaitement Python, C# et C++. Lorsqu'il ne met pas à profit ses compétences chez Iron Software, il se consacre à la programmation de jeux. Partageant des responsabilités en matière de tests de produits, de développement de produits et de recherche, Jordi apporte une valeur ajoutée considérable à l'amélioration continue des produits. Cette expérience variée le stimule et l'engage, et il dit que c'est l'un des aspects qu'il préfère dans son travail chez Iron Software. Jordi a grandi à Miami, en Floride, et a étudié l'informatique et les statistiques à l'université de Floride.
< PRÉCÉDENT Comparaison entre IronPDF for Java et Spire.PDF Java
SUIVANT > Comparaison entre IronPDF for Java et iTextPDF itext7 for Java
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucun engagement de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre démo en direct gratuite
Fiable par plus de 2 millions d'ingénieurs dans le monde entier