PDFBox - Guide rapide

Le format PDF (Portable Document Format) est un format de fichier qui permet de présenter les données d'une manière indépendante des logiciels d'application, du matériel et des systèmes d'exploitation.

Chaque fichier PDF contient la description d'un document plat à mise en page fixe, y compris le texte, les polices, les graphiques et d'autres informations nécessaires pour l'afficher.

Il existe plusieurs bibliothèques disponibles pour créer et manipuler des documents PDF via des programmes, tels que -

  • Adobe PDF Library - Cette bibliothèque fournit une API dans des langages tels que C ++, .NET et Java et en utilisant cela, nous pouvons éditer, afficher l'impression et extraire du texte à partir de documents PDF.

  • Formatting Objects Processor- Formateur d'impression open-source piloté par des objets de formatage XSL et un formateur indépendant de sortie. La principale cible de sortie est le PDF.

  • iText - Cette bibliothèque fournit une API dans des langages tels que Java, C # et d'autres langages .NET et en utilisant cette bibliothèque, nous pouvons créer et manipuler des documents PDF, RTF et HTML.

  • JasperReports - Il s'agit d'un outil de création de rapports Java qui génère des rapports dans un document PDF comprenant Microsoft Excel, RTF, ODT, des valeurs séparées par des virgules et des fichiers XML.

Qu'est-ce qu'une PDFBox

Apache PDFBox est une bibliothèque Java open source qui prend en charge le développement et la conversion de documents PDF. En utilisant cette bibliothèque, vous pouvez développer des programmes Java qui créent, convertissent et manipulent des documents PDF.

En plus de cela, PDFBox comprend également un utilitaire de ligne de commande pour effectuer diverses opérations sur PDF à l'aide du fichier Jar disponible.

Caractéristiques de PDFBox

Voici les caractéristiques notables de PDFBox -

  • Extract Text - En utilisant PDFBox, vous pouvez extraire du texte Unicode à partir de fichiers PDF.

  • Split & Merge - En utilisant PDFBox, vous pouvez diviser un seul fichier PDF en plusieurs fichiers et les fusionner en un seul fichier.

  • Fill Forms - En utilisant PDFBox, vous pouvez remplir les données du formulaire dans un document.

  • Print - En utilisant PDFBox, vous pouvez imprimer un fichier PDF à l'aide de l'API d'impression Java standard.

  • Save as Image - En utilisant PDFBox, vous pouvez enregistrer des fichiers PDF en tant que fichiers image, tels que PNG ou JPEG.

  • Create PDFs - En utilisant PDFBox, vous pouvez créer un nouveau fichier PDF en créant des programmes Java et, vous pouvez également inclure des images et des polices.

  • Signing- En utilisant PDFBox, vous pouvez ajouter des signatures numériques aux fichiers PDF.

Applications de PDFBox

Voici les applications de PDFBox -

  • Apache Nutch- Apache Nutch est un logiciel de recherche Web open source. Il s'appuie sur Apache Lucene, en ajoutant des spécificités Web, telles qu'un robot d'exploration, une base de données de graphes de liens, des analyseurs pour HTML et d'autres formats de documents, etc.

  • Apache Tika - Apache Tika est une boîte à outils pour détecter et extraire des métadonnées et du contenu textuel structuré à partir de divers documents en utilisant les bibliothèques d'analyseurs existantes.

Composants de PDFBox

Voici les quatre principaux composants de PDFBox -

  • PDFBox- C'est la partie principale de la PDFBox. Celui-ci contient les classes et les interfaces liées à l'extraction et à la manipulation de contenu.

  • FontBox - Il contient les classes et les interfaces liées à la police, et en utilisant ces classes, nous pouvons modifier la police du texte du document PDF.

  • XmpBox - Il contient les classes et les interfaces qui gèrent les métadonnées XMP.

  • Preflight - Ce composant est utilisé pour vérifier les fichiers PDF par rapport à la norme PDF / A-1b.

Installation de PDFBox

Voici les étapes pour télécharger Apache PDFBox -

Step 1 - Ouvrez la page d'accueil de Apache PDFBox en cliquant sur le lien suivant - https://pdfbox.apache.org/

Step 2 - Le lien ci-dessus vous dirigera vers la page d'accueil comme indiqué dans la capture d'écran suivante -

Step 3 - Maintenant, cliquez sur le Downloadslien mis en évidence dans la capture d'écran ci-dessus. En cliquant, vous serez dirigé vers la page de téléchargement de PDFBox comme indiqué dans la capture d'écran suivante.

Step 4- Dans la page Téléchargements, vous aurez des liens vers PDFBox. Cliquez sur le lien correspondant pour la dernière version. Par exemple, nous optons pourPDFBox 2.0.1 et en cliquant dessus, vous serez dirigé vers les fichiers jar requis comme indiqué dans la capture d'écran suivante.

Step 5 - Téléchargez les fichiers jar pdfbox-2.0.1.jar, fontbox-2.0.1.jar, preflight-2.0.1.jar, xmpbox-2.0.1.jar et pdfbox-tools-2.0.1.jar.

Installation d'Eclipse

Après avoir téléchargé les fichiers JAR requis, vous devez incorporer ces fichiers JAR dans votre environnement Eclipse. Vous pouvez le faire en définissant le chemin de génération vers ces fichiers JAR et en utilisantpom.xml.

Définition du chemin de construction

Voici les étapes pour installer PDFBox dans Eclipse -

Step 1- Assurez-vous que vous avez installé Eclipse dans votre système. Sinon, téléchargez et installez Eclipse dans votre système.

Step 2 - Ouvrez Eclipse, cliquez sur Fichier, Nouveau et ouvrez un nouveau projet comme indiqué dans la capture d'écran suivante.

Step 3 - En sélectionnant le projet, vous obtiendrez New Projectsorcier. Dans cet assistant, sélectionnez le projet Java et continuez en cliquant surNext bouton comme indiqué dans la capture d'écran suivante.

Step 4 - En continuant, vous serez dirigé vers le New Java Project wizard. Créez un nouveau projet et cliquez surNext comme indiqué dans la capture d'écran suivante.

Step 5- Après avoir créé un nouveau projet, faites un clic droit dessus; sélectionnerBuild Path et cliquez sur Configure Build Path… comme indiqué dans la capture d'écran suivante.

Step 6 - En cliquant sur le Build Path option vous serez dirigé vers le Java Build Path wizard. Sélectionnez leAdd External JARs comme indiqué dans la capture d'écran suivante.

Step 7 - Sélectionnez les fichiers jar fontbox-2.0.1.jar, pdfbox-2.0.1.jar, pdfbox-tools-2.0.1.jar, preflight-2.0.1.jar, xmpbox-2.0.1.jar comme indiqué dans la capture d'écran suivante.

Step 8 - En cliquant sur le Open dans la capture d'écran ci-dessus, ces fichiers seront ajoutés à votre bibliothèque comme indiqué dans la capture d'écran suivante.

Step 9 - En cliquant OK, vous ajouterez avec succès les fichiers JAR requis au projet actuel et vous pourrez vérifier ces bibliothèques ajoutées en développant les bibliothèques référencées comme indiqué dans la capture d'écran suivante.

Utilisation de pom.xml

Convertissez le projet en projet maven et ajoutez le contenu suivant à son pom.xml.

<project xmlns="https://maven.apache.org/POM/4.0.0"
   xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="https://maven.apache.org/POM/4.0.0
   https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>my_project</groupId>
   <artifactId>my_project</artifactId>
   <version>0.0.1-SNAPSHOT</version>

   <build>
      <sourceDirectory>src</sourceDirectory>
      <plugins>
         <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.3</version>
            <configuration>
               <source>1.8</source>
               <target>1.8</target>
            </configuration> 
         </plugin>
      </plugins> 
   </build> 
   
   <dependencies>  
      <dependency> 
         <groupId>org.apache.pdfbox</groupId> 
         <artifactId>pdfbox</artifactId> 
         <version>2.0.1</version> 
      </dependency>   
   
      <dependency> 
         <groupId>org.apache.pdfbox</groupId> 
         <artifactId>fontbox</artifactId> 
         <version>2.0.0</version> 
      </dependency>
      
      <dependency>  
         <groupId>org.apache.pdfbox</groupId> 
         <artifactId>jempbox</artifactId> 
         <version>1.8.11</version> 
      </dependency> 
        
      <dependency>
         <groupId>org.apache.pdfbox</groupId> 
         <artifactId>xmpbox</artifactId> 
         <version>2.0.0</version> 
      </dependency> 
     
      <dependency> 
         <groupId>org.apache.pdfbox</groupId> 
         <artifactId>preflight</artifactId> 
         <version>2.0.0</version> 
      </dependency> 
     
      <dependency> 
         <groupId>org.apache.pdfbox</groupId> 
         <artifactId>pdfbox-tools</artifactId> 
         <version>2.0.0</version> 
      </dependency>

   </dependencies>
   
</project>

Voyons maintenant comment créer un document PDF à l'aide de la bibliothèque PDFBox.

Création d'un document PDF vide

Vous pouvez créer un document PDF vide en instanciant le PDDocumentclasse. Vous pouvez enregistrer le document à l'emplacement souhaité à l'aide duSave() méthode.

Voici les étapes pour créer un document PDF vide.

Étape 1: création d'un document vide

le PDDocument classe qui appartient au package org.apache.pdfbox.pdmodel, est une représentation en mémoire du PDFDocument. Par conséquent, en instanciant cette classe, vous pouvez créer un PDFDocument vide comme indiqué dans le bloc de code suivant.

PDDocument document = new PDDocument();

Étape 2: enregistrement du document

Après avoir créé le document, vous devez enregistrer ce document dans le chemin souhaité, vous pouvez le faire en utilisant le Save() méthode de la PDDocumentclasse. Cette méthode accepte une valeur de chaîne, représentant le chemin où vous souhaitez stocker le document, en tant que paramètre. Voici le prototype de la méthode save () duPDDocument classe.

document.save("Path");

Étape 3: fermeture du document

Lorsque votre tâche est terminée, à la fin, vous devez fermer le PDDocument objet utilisant le close ()méthode. Voici le prototype de la méthode close () dePDDocument classe.

document.close();

Exemple

Cet exemple illustre la création d'un document PDF. Ici, nous allons créer un programme Java pour générer un document PDF nommémy_doc.pdf et enregistrez-le sur le chemin C:/PdfBox_Examples/. Enregistrez ce code dans un fichier avec un nomDocument_Creation.java.

import java.io.IOException; 
import org.apache.pdfbox.pdmodel.PDDocument;
  
public class Document_Creation {
    
   public static void main (String args[]) throws IOException {
       
      //Creating PDF document object 
      PDDocument document = new PDDocument();    
       
      //Saving the document
      document.save("C:/PdfBox_Examples/my_doc.pdf");
         
      System.out.println("PDF created");  
    
      //Closing the document  
      document.close();

   }  
}

Compilez et exécutez le fichier Java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

javac Document_Creation.java 
java Document_Creation

Lors de l'exécution, le programme ci-dessus crée un document PDF affichant le message suivant.

PDF created

Si vous vérifiez le chemin spécifié, vous pouvez trouver le document PDF créé comme indiqué ci-dessous.

Puisqu'il s'agit d'un document vide, si vous essayez d'ouvrir ce document, cela vous donne une invite affichant un message d'erreur comme illustré dans la capture d'écran suivante.

Dans le chapitre précédent, nous avons vu comment créer un document PDF. Après avoir créé un document PDF, vous devez y ajouter des pages. Voyons maintenant comment ajouter des pages dans un document PDF.

Ajout de pages à un document PDF

Vous pouvez créer une page vide en instanciant le PDPage classe et ajoutez-la au document PDF à l'aide de la addPage() méthode de la PDDocument classe.

Voici les étapes pour créer un document vide et y ajouter des pages.

Étape 1: création d'un document vide

Créez un document PDF vide en instanciant le PDDocument classe comme indiqué ci-dessous.

PDDocument document = new PDDocument();

Étape 2: création d'une page vierge

le PDPage classe représente une page dans le PDF document par conséquent, vous pouvez créer une page vide en instanciant cette classe comme indiqué dans le bloc de code suivant.

PDPage my_page = new PDPage();

Étape 3: Ajout d'une page au document

Vous pouvez ajouter une page au document PDF à l'aide du addPage() méthode de la PDDocumentclasse. Pour cette méthode, vous devez passer l'objet PDPage en tant que paramètre.

Par conséquent, ajoutez la page vierge créée à l'étape précédente à l'objet PDDocument comme indiqué dans le bloc de code suivant.

document.addPage(my_page);

De cette façon, vous pouvez ajouter autant de pages que vous le souhaitez à un document PDF.

Étape 4: enregistrement du document

Après avoir ajouté toutes les pages, enregistrez le document PDF à l'aide du save() méthode de la PDDocument class comme indiqué dans le bloc de code suivant.

document.save("Path");

Étape 5: fermeture du document

Fermez enfin le document à l'aide du close() méthode de la PDDocument classe comme indiqué ci-dessous.

document.close();

Exemple

Cet exemple montre comment créer un document PDF et y ajouter des pages. Ici, nous allons créer un document PDF nommémy_doc.pdf et ajoutez-y 10 pages vierges et enregistrez-le dans le chemin C:/PdfBox_Examples/. Enregistrez ce code dans un fichier avec un nomAdding_pages.java.

package document;
 
import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;

public class Adding_Pages {

   public static void main(String args[]) throws IOException {
       
      //Creating PDF document object 
      PDDocument document = new PDDocument();

      for (int i=0; i<10; i++) {
         //Creating a blank page 
         PDPage blankPage = new PDPage();

         //Adding the blank page to the document
         document.addPage( blankPage );
      } 
     
      //Saving the document
      document.save("C:/PdfBox_Examples/my_doc.pdf");
      System.out.println("PDF created");
      
      //Closing the document
      document.close();

   }  
}

Compilez et exécutez le fichier Java enregistré à partir de l'invite de commande à l'aide des commandes suivantes -

javac Adding_pages.java 
java Adding_pages

Lors de l'exécution, le programme ci-dessus crée un document PDF avec des pages vierges affichant le message suivant -

PDF created

Si vous vérifiez le chemin spécifié, vous pouvez trouver le document PDF créé comme indiqué dans la capture d'écran suivante.

Dans les exemples précédents, vous avez vu comment créer un nouveau document et y ajouter des pages. Ce chapitre vous apprend à charger un document PDF qui existe déjà dans votre système et à effectuer certaines opérations dessus.

Chargement d'un document PDF existant

le load() méthode de la PDDocumentclass est utilisé pour charger un document PDF existant. Suivez les étapes ci-dessous pour charger un document PDF existant.

Étape 1: chargement d'un document PDF existant

Charger un document PDF existant en utilisant la méthode statique load() du PDDocumentclasse. Cette méthode accepte un objet fichier en tant que paramètre, puisqu'il s'agit d'une méthode statique, vous pouvez l'invoquer en utilisant le nom de classe comme indiqué ci-dessous.

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

Étape 2: effectuez les opérations requises

Effectuez les opérations requises telles que l'ajout de pages, l'ajout de texte, l'ajout d'images au document chargé.

Étape 3: enregistrement du document

Après avoir ajouté toutes les pages, enregistrez le document PDF à l'aide du save() méthode de la PDDocument class comme indiqué dans le bloc de code suivant.

document.save("Path");

Étape 4: fermeture du document

Fermez enfin le document à l'aide du close() méthode de la PDDocument classe comme indiqué ci-dessous.

document.close();

Exemple

Supposons que nous ayons un document PDF qui contient une seule page, dans le chemin, C:/PdfBox_Examples/ comme indiqué dans la capture d'écran suivante.

Cet exemple montre comment charger un document PDF existant. Ici, nous allons charger le document PDFsample.pdf ci-dessus, ajoutez-y une page et enregistrez-la dans le même chemin avec le même nom.

Step 1 - Enregistrez ce code dans un fichier avec un nom LoadingExistingDocument.java.

import java.io.File;
import java.io.IOException;
 
import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.pdmodel.PDPage;
public class LoadingExistingDocument {

   public static void main(String args[]) throws IOException {
   
      //Loading an existing document 
      File file = new File("C:/PdfBox_Examples/sample.pdf"); 
      PDDocument document = PDDocument.load(file); 
        
      System.out.println("PDF loaded"); 
        
      //Adding a blank page to the document 
      document.addPage(new PDPage());  

      //Saving the document 
      document.save("C:/PdfBox_Examples/sample.pdf");

      //Closing the document  
      document.close(); 
        
   }  
}

Compilez et exécutez le fichier Java enregistré à partir de l'invite de commande à l'aide des commandes suivantes

javac LoadingExistingDocument.java  
java LoadingExistingDocument

Lors de l'exécution, le programme ci-dessus charge le document PDF spécifié et y ajoute une page vierge affichant le message suivant.

PDF loaded

Si vous vérifiez le chemin spécifié, vous pouvez trouver une page supplémentaire ajoutée au document PDF spécifié comme indiqué ci-dessous.

Apprenons maintenant à supprimer des pages d'un document PDF.

Suppression de pages d'un document existant

Vous pouvez supprimer une page d'un document PDF existant à l'aide du removePage() méthode de la PDDocument classe.

Étape 1: chargement d'un document PDF existant

Charger un document PDF existant en utilisant la méthode statique load() du PDDocumentclasse. Cette méthode accepte un objet fichier en tant que paramètre, puisqu'il s'agit d'une méthode statique, vous pouvez l'invoquer en utilisant le nom de classe comme indiqué ci-dessous.

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

Étape 2: lister le nombre de pages

Vous pouvez lister le nombre de pages qui existe dans le document PDF à l'aide du getNumberOfPages() méthode comme indiqué ci-dessous.

int noOfPages= document.getNumberOfPages();
System.out.print(noOfPages);

Étape 3: suppression de la page

Vous pouvez supprimer une page du document PDF à l'aide du removePage() méthode de la PDDocumentclasse. Pour cette méthode, vous devez passer l'index de la page à supprimer.

Lorsque vous spécifiez l'index des pages d'un document PDF, gardez à l'esprit que l'indexation de ces pages commence à zéro, c'est-à-dire que si vous souhaitez supprimer la 1ère page, la valeur d'index doit être 0.

document.removePage(2);

Étape 4: enregistrement du document

Après avoir supprimé la page, enregistrez le document PDF à l'aide du save() méthode de la PDDocument class comme indiqué dans le bloc de code suivant.

document.save("Path");

Étape 5: fermeture du document

Enfin, fermez le document à l'aide du close() méthode de la PDDocument classe comme indiqué ci-dessous.

document.close();

Exemple

Supposons que nous ayons un document PDF avec un nom sample.pdf et il contient trois pages vides comme indiqué ci-dessous.

Cet exemple montre comment supprimer des pages d'un document PDF existant. Ici, nous allons charger le document PDF spécifié ci-dessus nommésample.pdf, supprimez une page et enregistrez-la dans le chemin C:/PdfBox_Examples/. Enregistrez ce code dans un fichier avec un nomRemoving_pages.java.

import java.io.File;
import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;

public class RemovingPages {

   public static void main(String args[]) throws IOException {

      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument document = PDDocument.load(file);
       
      //Listing the number of existing pages
      int noOfPages= document.getNumberOfPages();
      System.out.print(noOfPages);
       
      //Removing the pages
      document.removePage(2);
      
      System.out.println("page removed");

      //Saving the document
      document.save("C:/PdfBox_Examples/sample.pdf");

      //Closing the document
      document.close();

   }
}

Compilez et exécutez le fichier Java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

javac RemovingPages.java 
java RemovingPages

Lors de l'exécution, le programme ci-dessus crée un document PDF avec des pages vierges affichant le message suivant.

3
page removed

Si vous vérifiez le chemin spécifié, vous pouvez constater que la page requise a été supprimée et que seules deux pages sont restées dans le document, comme indiqué ci-dessous.

Comme les autres fichiers, un document PDF possède également des propriétés de document. Ces propriétés sont des paires clé-valeur. Chaque propriété donne des informations particulières sur le document.

Voici les propriétés d'un document PDF -

S.No. Propriété et description
1

File

Cette propriété contient le nom du fichier.

2

Title

En utilisant cette propriété, vous pouvez définir le titre du document.

3

Author

À l'aide de cette propriété, vous pouvez définir le nom de l'auteur du document.

4

Subject

En utilisant cette propriété, vous pouvez spécifier le sujet du document PDF.

5

Keywords

En utilisant cette propriété, vous pouvez lister les mots-clés avec lesquels nous pouvons rechercher le document.

6

Created

À l'aide de cette propriété, vous pouvez définir la date de création du document.

sept

Modified

Grâce à cette propriété, vous pouvez définir la date de modification du document.

8

Application

À l'aide de cette propriété, vous pouvez définir l'application du document.

Voici une capture d'écran du tableau des propriétés du document d'un document PDF.

Définition des propriétés du document

PDFBox vous fournit une classe nommée PDDocumentInformation. Cette classe a un ensemble de méthodes setter et getter.

Les méthodes setter de cette classe sont utilisées pour définir des valeurs sur diverses propriétés d'un document et les méthodes getter qui sont utilisées pour récupérer ces valeurs.

Voici les méthodes de pose du PDDocumentInformation classe.

S.No. Méthode et description
1

setAuthor(String author)

Cette méthode est utilisée pour définir la valeur de la propriété du document PDF nommé Author.

2

setTitle(String title)

Cette méthode est utilisée pour définir la valeur de la propriété du document PDF nommé Title.

3

setCreator(String creator)

Cette méthode est utilisée pour définir la valeur de la propriété du document PDF nommé Creator.

4

setSubject(String subject)

Cette méthode est utilisée pour définir la valeur de la propriété du document PDF nommé Subject.

5

setCreationDate(Calendar date)

Cette méthode est utilisée pour définir la valeur de la propriété du document PDF nommé CreationDate.

6

setModificationDate(Calendar date)

Cette méthode est utilisée pour définir la valeur de la propriété du document PDF nommé ModificationDate.

sept

setKeywords(String keywords list)

Cette méthode est utilisée pour définir la valeur de la propriété du document PDF nommé Keywords.

Exemple

PDFBox fournit une classe appelée PDDocumentInformationet cette classe fournit diverses méthodes. Ces méthodes peuvent définir diverses propriétés du document et les récupérer.

Cet exemple montre comment ajouter des propriétés telles que Author, Title, Date, and Subjectà un document PDF. Ici, nous allons créer un document PDF nommédoc_attributes.pdf, ajoutez-y divers attributs et enregistrez-le dans le chemin C:/PdfBox_Examples/. Enregistrez ce code dans un fichier avec un nomAddingAttributes.java.

import java.io.IOException; 
import java.util.Calendar; 
import java.util.GregorianCalendar;
  
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
import org.apache.pdfbox.pdmodel.PDPage;

public class AddingDocumentAttributes {
   public static void main(String args[]) throws IOException {

      //Creating PDF document object
      PDDocument document = new PDDocument();

      //Creating a blank page
      PDPage blankPage = new PDPage();
       
      //Adding the blank page to the document
      document.addPage( blankPage );

      //Creating the PDDocumentInformation object 
      PDDocumentInformation pdd = document.getDocumentInformation();

      //Setting the author of the document
      pdd.setAuthor("Tutorialspoint");
       
      // Setting the title of the document
      pdd.setTitle("Sample document"); 
       
      //Setting the creator of the document 
      pdd.setCreator("PDF Examples"); 
       
      //Setting the subject of the document 
      pdd.setSubject("Example document"); 
       
      //Setting the created date of the document 
      Calendar date = new GregorianCalendar();
      date.set(2015, 11, 5); 
      pdd.setCreationDate(date);
      //Setting the modified date of the document 
      date.set(2016, 6, 5); 
      pdd.setModificationDate(date); 
       
      //Setting keywords for the document 
      pdd.setKeywords("sample, first example, my pdf"); 
 
      //Saving the document 
      document.save("C:/PdfBox_Examples/doc_attributes.pdf");

      System.out.println("Properties added successfully ");
       
      //Closing the document
      document.close();

   }
}

Compilez et exécutez le fichier Java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

javac AddingAttributes.java 
java AddingAttributes

Lors de l'exécution, le programme ci-dessus ajoute tous les attributs spécifiés au document affichant le message suivant.

Properties added successfully

Maintenant, si vous visitez le chemin donné, vous pouvez trouver le PDF qui y est créé. Cliquez avec le bouton droit sur le document et sélectionnez l'option des propriétés du document comme indiqué ci-dessous.

Cela vous donnera la fenêtre des propriétés du document et ici vous pouvez observer que toutes les propriétés du document ont été définies sur des valeurs spécifiées.

Récupération des propriétés du document

Vous pouvez récupérer les propriétés d'un document à l'aide du getter méthodes fournies par le PDDocumentInformation classe.

Voici les méthodes getter du PDDocumentInformation classe.

S.No. Méthode et description
1

getAuthor()

Cette méthode est utilisée pour récupérer la valeur de la propriété du document PDF nommé Author.

2

getTitle()

Cette méthode est utilisée pour récupérer la valeur de la propriété du document PDF nommé Title.

3

getCreator()

Cette méthode est utilisée pour récupérer la valeur de la propriété du document PDF nommé Creator.

4

getSubject()

Cette méthode est utilisée pour récupérer la valeur de la propriété du document PDF nommé Subject.

5

getCreationDate()

Cette méthode est utilisée pour récupérer la valeur de la propriété du document PDF nommé CreationDate.

6

getModificationDate()

Cette méthode est utilisée pour récupérer la valeur de la propriété du document PDF nommé ModificationDate.

sept

getKeywords()

Cette méthode est utilisée pour récupérer la valeur de la propriété du document PDF nommé Keywords.

Exemple

Cet exemple montre comment récupérer les propriétés d'un document PDF existant. Ici, nous allons créer un programme Java et charger le document PDF nommédoc_attributes.pdf, qui est enregistré dans le chemin C:/PdfBox_Examples/et récupérez ses propriétés. Enregistrez ce code dans un fichier avec un nomRetrivingDocumentAttributes.java.

import java.io.File; 
import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.pdmodel.PDDocumentInformation;

public class RetrivingDocumentAttributes {
   public static void main(String args[]) throws IOException {
      
      //Loading an existing document 
      File file = new File("C:/PdfBox_Examples/doc_attributes.pdf")
      PDDocument document = PDDocument.load(file);
      //Getting the PDDocumentInformation object
      PDDocumentInformation pdd = document.getDocumentInformation();

      //Retrieving the info of a PDF document
      System.out.println("Author of the document is :"+ pdd.getAuthor());
      System.out.println("Title of the document is :"+ pdd.getTitle());
      System.out.println("Subject of the document is :"+ pdd.getSubject());

      System.out.println("Creator of the document is :"+ pdd.getCreator());
      System.out.println("Creation date of the document is :"+ pdd.getCreationDate());
      System.out.println("Modification date of the document is :"+ 
         pdd.getModificationDate()); 
      System.out.println("Keywords of the document are :"+ pdd.getKeywords()); 
       
      //Closing the document 
      document.close();        
   }  
}

Compilez et exécutez le fichier Java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

javac RetrivingDocumentAttributes.java 
java RetrivingDocumentAttributes

Lors de l'exécution, le programme ci-dessus récupère tous les attributs du document et les affiche comme indiqué ci-dessous.

Author of the document is :Tutorialspoint 
Title of the document is :Sample document 
Subject of the document is :Example document 
Creator of the document is :PDF Examples 
Creation date of the document is :11/5/2015
Modification date of the document is :6/5/2016
Keywords of the document are :sample, first example, my pdf

Dans le chapitre précédent, nous avons expliqué comment ajouter des pages à un document PDF. Dans ce chapitre, nous verrons comment ajouter du texte à un document PDF existant.

Ajout de texte à un document PDF existant

Vous pouvez ajouter du contenu à un document à l'aide de la bibliothèque PDFBox, cela vous fournit une classe nommée PDPageContentStream qui contient les méthodes requises pour insérer du texte, des images et d'autres types de contenu dans une page d'un PDFDocument.

Voici les étapes pour créer un document vide et ajouter du contenu à une page qu'il contient.

Étape 1: chargement d'un document existant

Vous pouvez charger un document existant à l'aide du load()méthode de la classe PDDocument. Par conséquent, instanciez cette classe et chargez le document requis comme indiqué ci-dessous.

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

Étape 2: Obtention de la page requise

Vous pouvez obtenir la page requise dans un document en utilisant le getPage()méthode. Récupérez l'objet de la page requise en passant son index à cette méthode comme indiqué ci-dessous.

PDPage page = doc.getPage(1);

Étape 3: Préparation du flux de contenu

Vous pouvez insérer différents types d'éléments de données à l'aide de l'objet de la classe PDPageContentStream. Vous devez passer l'objet document et l'objet page au constructeur de cette classe, par conséquent, instancier cette classe en transmettant ces deux objets créés dans les étapes précédentes comme indiqué ci-dessous.

PDPageContentStream contentStream = new PDPageContentStream(doc, page);

Étape 4: Commencer le texte

Lors de l'insertion de texte dans un document PDF, vous pouvez spécifier les points de début et de fin du texte à l'aide des méthodes beginText () et endText () de la classe PDPageContentStream comme indiqué ci-dessous.

contentStream.beginText(); 
……………………….. 
code to add text content 
……………………….. 
contentStream.endText();

Par conséquent, commencez le texte en utilisant le beginText() méthode comme indiqué ci-dessous.

contentStream.beginText();

Étape 5: Définition de la position du texte

En utilisant le newLineAtOffset() méthode, vous pouvez définir la position sur le flux de contenu dans la page.

//Setting the position for the line 
contentStream.newLineAtOffset(25, 700);

Étape 6: Définition de la police

Vous pouvez définir la police du texte sur le style souhaité à l'aide du setFont() méthode de la PDPageContentStreamclasse comme indiqué ci-dessous. Pour cette méthode, vous devez transmettre le type et la taille de la police.

contentStream.setFont( font_type, font_size );

Étape 7: insertion du texte

Vous pouvez insérer le texte dans la page en utilisant le ShowText() méthode de la PDPageContentStreamclasse comme indiqué ci-dessous. Cette méthode accepte le texte requis sous forme de chaîne.

contentStream.showText(text);

Étape 8: Terminer le texte

Après avoir inséré le texte, vous devez terminer le texte en utilisant le endText() méthode de la PDPageContentStream classe comme indiqué ci-dessous.

contentStream.endText();

Étape 9: fermeture de PDPageContentStream

Fermer la PDPageContentStream objet utilisant le close() méthode comme indiqué ci-dessous.

contentstream.close();

Étape 10: enregistrement du document

Après avoir ajouté le contenu requis, enregistrez le document PDF à l'aide du save() méthode de la PDDocument class comme indiqué dans le bloc de code suivant.

doc.save("Path");

Étape 11: fermeture du document

Enfin, fermez le document à l'aide du close() méthode de la PDDocument classe comme indiqué ci-dessous.

doc.close();

Exemple

Cet exemple montre comment ajouter du contenu à une page dans un document. Ici, nous allons créer un programme Java pour charger le document PDF nommémy_doc.pdf, qui est enregistré dans le chemin C:/PdfBox_Examples/, et ajoutez-y du texte. Enregistrez ce code dans un fichier avec un nomAddingContent.java.

import java.io.File; 
import java.io.IOException;
  
import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.pdmodel.PDPage; 
import org.apache.pdfbox.pdmodel.PDPageContentStream; 
import org.apache.pdfbox.pdmodel.font.PDType1Font;
  
public class AddingContent {
   public static void main (String args[]) throws IOException {

      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/my_doc.pdf");
      PDDocument document = PDDocument.load(file);
       
      //Retrieving the pages of the document 
      PDPage page = document.getPage(1);
      PDPageContentStream contentStream = new PDPageContentStream(document, page);
      
      //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, 500);

      String text = "This is the sample document and we are adding content to it.";

      //Adding text in the form of 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(new File("C:/PdfBox_Examples/new.pdf"));

      //Closing the document
      document.close();
   }
}

Compilez et exécutez le fichier Java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

javac AddingContent.java 
java AddingContent

Lors de l'exécution, le programme ci-dessus ajoute le texte donné au document et affiche le message suivant.

Content added

Si vous vérifiez le document PDF new.pdf dans le chemin spécifié, vous pouvez observer que le contenu donné est ajouté au document comme indiqué ci-dessous.

Dans l'exemple fourni dans le chapitre précédent, nous avons expliqué comment ajouter du texte à une page dans un PDF, mais grâce à ce programme, vous ne pouvez ajouter que le texte qui tiendrait sur une seule ligne. Si vous essayez d'ajouter plus de contenu, tout le texte qui dépasse l'espace de ligne ne sera pas affiché.

Par exemple, si vous exécutez le programme ci-dessus dans le chapitre précédent en passant la chaîne suivante, seule une partie de celui-ci sera affichée.

String text = "This is an example of adding text to a page in the pdf document. we can
   add as many lines as we want like this using the showText() method of the 
   ContentStream class";

Remplace le string textde l'exemple du chapitre précédent avec la chaîne mentionnée ci-dessus et exécutez-la. Lors de l'exécution, vous recevrez la sortie suivante.

Si vous observez attentivement la sortie, vous pouvez remarquer que seule une partie de la chaîne est affichée.

Pour ajouter plusieurs lignes à un PDF, vous devez définir l'interlignage à l'aide du setLeading() méthode et passer à une nouvelle ligne en utilisant newline() méthode après avoir terminé chaque ligne.

Pas

Voici les étapes pour créer un document vide et ajouter du contenu à une page qu'il contient.

Étape 1: chargement d'un document existant

Vous pouvez charger un document existant à l'aide du load()méthode de la classe PDDocument. Par conséquent, instanciez cette classe et chargez le document requis comme indiqué ci-dessous.

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

Étape 2: Obtention de la page requise

Vous pouvez obtenir la page requise dans un document en utilisant le getPage()méthode. Récupérez l'objet de la page requise en passant son index à cette méthode comme indiqué ci-dessous.

PDPage page = doc.getPage(1);

Étape 3: Préparation du flux de contenu

Vous pouvez insérer différents types d'éléments de données à l'aide de l'objet de la classe nommée PDPageContentStream. Vous devez passer l'objet document et l'objet page au constructeur de cette classe, par conséquent, instancier cette classe en transmettant ces deux objets créés dans les étapes précédentes comme indiqué ci-dessous.

PDPageContentStream contentStream = new PDPageContentStream(doc, page);

Étape 4: Commencer le texte

Lors de l'insertion de texte dans un document PDF, vous pouvez spécifier les points de début et de fin du texte à l'aide du beginText() et endText() méthodes de la PDPageContentStream classe comme indiqué ci-dessous.

contentStream.beginText(); 
……………………….. 
code to add text content 
……………………….. 
contentStream.endText();

Par conséquent, commencez le texte en utilisant le beginText() méthode comme indiqué ci-dessous.

contentStream.beginText();

Étape 5: Définition de la position du texte

En utilisant le newLineAtOffset() méthode, vous pouvez définir la position sur le flux de contenu dans la page.

//Setting the position for the line 
contentStream.newLineAtOffset(25, 700);

Étape 6: Définition de la police

Vous pouvez définir la police du texte sur le style souhaité à l'aide du setFont() méthode de la PDPageContentStream classe comme indiqué ci-dessous à cette méthode, vous devez transmettre le type et la taille de la police.

contentStream.setFont( font_type, font_size );

Étape 7: Définition de l'interlignage du texte

Vous pouvez définir l'interlignage du texte à l'aide du setLeading() méthode comme indiqué ci-dessous.

contentStream.setLeading(14.5f);

Étape 8: Insertion de plusieurs chaînes à l'aide de newline ()

Vous pouvez insérer plusieurs chaînes à l'aide du ShowText() méthode de la PDPageContentStream classe, en divisant chacun d'eux à l'aide du newline() méthode comme indiqué ci-dessous.

contentStream. ShowText(text1); 
contentStream.newLine(); 
contentStream. ShowText(text2);

Étape 9: Terminer le texte

Après avoir inséré le texte, vous devez terminer le texte en utilisant le endText() méthode de la PDPageContentStream classe comme indiqué ci-dessous.

contentStream.endText();

Étape 10: fermeture de PDPageContentStream

Fermer la PDPageContentStream objet utilisant le close() méthode comme indiqué ci-dessous.

contentstream.close();

Étape 11: enregistrement du document

Après avoir ajouté le contenu requis, enregistrez le document PDF à l'aide du save() méthode de la PDDocument class comme indiqué dans le bloc de code suivant.

doc.save("Path");

Étape 12: Fermeture du document

Enfin, fermez le document à l'aide du close() méthode de la PDDocument classe comme indiqué ci-dessous.

doc.close();

Exemple

Cet exemple montre comment ajouter plusieurs lignes dans un PDF à l'aide de PDFBox. Enregistrez ce programme dans un fichier avec un nomAddMultipleLines.java.

import java.io.File;
import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

public class AddMultipleLines {
   public static void main(String args[]) throws IOException {

      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/my_pdf.pdf");
      PDDocument doc = document.load(file);
       
      //Creating a PDF Document
      PDPage page = doc.getPage(1);  
       
      PDPageContentStream contentStream = new PDPageContentStream(doc, page); 
       
      //Begin the Content stream 
      contentStream.beginText(); 
       
      //Setting the font to the Content stream
      contentStream.setFont( PDType1Font.TIMES_ROMAN, 16 );
       
      //Setting the leading
      contentStream.setLeading(14.5f);

      //Setting the position for the line
      contentStream.newLineAtOffset(25, 725);

      String text1 = "This is an example of adding text to a page in the pdf document.
         we can add as many lines";
      String text2 = "as we want like this using the ShowText()  method of the
         ContentStream class";

      //Adding text in the form of string
      contentStream. ShowText(text1);
      contentStream.newLine();
      contentStream. ShowText(text2);
      //Ending the content stream
      contentStream.endText();

      System.out.println("Content added");

      //Closing the content stream
      contentStream.close();

      //Saving the document
      doc.save(new File("C:/PdfBox_Examples/new.pdf"));
            
      //Closing the document
      doc.close();
   }
}

Compilez et exécutez le fichier Java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

javac AddMultipleLines.java 
java AddMultipleLines

Lors de l'exécution, le programme ci-dessus ajoute le texte donné au document et affiche le message suivant.

Content added

Si vous vérifiez le document PDF new.pdf dans le chemin spécifié, vous pouvez observer que le contenu donné est ajouté au document sur plusieurs lignes, comme indiqué ci-dessous.

Dans le chapitre précédent, nous avons vu comment ajouter du texte à un document PDF existant. Dans ce chapitre, nous verrons comment lire du texte à partir d'un document PDF existant.

Extraction de texte à partir d'un document PDF existant

L'extraction de texte est l'une des principales fonctionnalités de la bibliothèque de boîtes PDF. Vous pouvez extraire du texte à l'aide dugetText() méthode de la PDFTextStripperclasse. Cette classe extrait tout le texte du document PDF donné.

Voici les étapes pour extraire le texte d'un document PDF existant.

Étape 1: chargement d'un document PDF existant

Charger un document PDF existant en utilisant la méthode statique load() du PDDocumentclasse. Cette méthode accepte un objet fichier en tant que paramètre, puisqu'il s'agit d'une méthode statique, vous pouvez l'invoquer en utilisant le nom de classe comme indiqué ci-dessous.

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

Étape 2: instancier la classe PDFTextStripper

le PDFTextStripper La classe fournit des méthodes pour récupérer du texte à partir d'un document PDF par conséquent, instanciez cette classe comme indiqué ci-dessous.

PDFTextStripper pdfStripper = new PDFTextStripper();

Étape 3: Récupération du texte

Vous pouvez lire / récupérer le contenu d'une page à partir du document PDF en utilisant le getText() méthode de la PDFTextStripperclasse. Pour cette méthode, vous devez transmettre l'objet document en tant que paramètre. Cette méthode récupère le texte dans un document donné et le renvoie sous la forme d'un objet String.

String text = pdfStripper.getText(document);

Étape 4: fermeture du document

Enfin, fermez le document à l'aide du close() méthode de la classe PDDocument comme indiqué ci-dessous.

document.close();

Exemple

Supposons que nous ayons un document PDF contenant du texte comme indiqué ci-dessous.

Cet exemple montre comment lire le texte du document PDF mentionné ci-dessus. Ici, nous allons créer un programme Java et charger un document PDF nomménew.pdf, qui est enregistré dans le chemin C:/PdfBox_Examples/. Enregistrez ce code dans un fichier avec un nomReadingText.java.

import java.io.File;
import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
public class ReadingText {

   public static void main(String args[]) throws IOException {

      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/new.pdf");
      PDDocument document = PDDocument.load(file);

      //Instantiate PDFTextStripper class
      PDFTextStripper pdfStripper = new PDFTextStripper();

      //Retrieving text from PDF document
      String text = pdfStripper.getText(document);
      System.out.println(text);

      //Closing the document
      document.close();

   }
}

Compilez et exécutez le fichier Java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

javac ReadingText.java 
java ReadingText

Lors de l'exécution, le programme ci-dessus récupère le texte du document PDF donné et l'affiche comme indiqué ci-dessous.

This is an example of adding text to a page in the pdf document. we can add as many lines
as we want like this using the ShowText() method of the ContentStream class.

Dans le chapitre précédent, nous avons vu comment extraire du texte d'un document PDF existant. Dans ce chapitre, nous verrons comment insérer une image dans un document PDF.

Insertion d'une image dans un document PDF

Vous pouvez insérer une image dans un document PDF à l'aide du createFromFile() et drawImage() méthodes des classes PDImageXObject et PDPageContentStream respectivement.

Voici les étapes pour extraire le texte d'un document PDF existant.

Étape 1: chargement d'un document PDF existant

Charger un document PDF existant en utilisant la méthode statique load() du PDDocumentclasse. Cette méthode accepte un objet fichier en tant que paramètre, puisqu'il s'agit d'une méthode statique, vous pouvez l'invoquer en utilisant le nom de classe comme indiqué ci-dessous.

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

Étape 2: Récupération d'une page

Sélectionnez une page dans le document PDF et récupérez son objet page à l'aide du getPage() méthode comme indiqué ci-dessous.

PDPage page = doc.getPage(0);

Étape 3: Création de l'objet PDImageXObject

La classe PDImageXObjectdans la bibliothèque PDFBox représente une image. Il fournit toutes les méthodes nécessaires pour effectuer des opérations liées à une image, telles que l'insertion d'une image, le réglage de sa hauteur, le réglage de sa largeur, etc.

Nous pouvons créer un objet de cette classe en utilisant la méthode createFromFile(). Pour cette méthode, nous devons passer le chemin de l'image que nous voulons ajouter sous la forme d'une chaîne et l'objet document auquel l'image doit être ajoutée.

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

Étape 4: Préparation du flux de contenu

Vous pouvez insérer différents types d'éléments de données à l'aide de l'objet de la classe nommée PDPageContentStream. Vous devez passer l'objet document et l'objet page au constructeur de cette classe, par conséquent, instancier cette classe en transmettant ces deux objets créés dans les étapes précédentes comme indiqué ci-dessous.

PDPageContentStream contentStream = new PDPageContentStream(doc, page);

Étape 5: Dessiner l'image dans le document PDF

Vous pouvez insérer une image dans le document PDF à l'aide du drawImage()méthode. Pour cette méthode, vous devez ajouter l'objet image créé à l'étape ci-dessus et les dimensions requises de l'image (largeur et hauteur) comme indiqué ci-dessous.

contentstream.drawImage(pdImage, 70, 250);

Étape 6: fermeture de PDPageContentStream

Fermer la PDPageContentStream objet utilisant le close() méthode comme indiqué ci-dessous.

contentstream.close();

Étape 7: enregistrement du document

Après avoir ajouté le contenu requis, enregistrez le document PDF à l'aide du save() méthode de la PDDocument class comme indiqué dans le bloc de code suivant.

doc.save("Path");

Étape 8: fermeture du document

Enfin, fermez le document à l'aide du close() méthode de la PDDocument classe comme indiqué ci-dessous.

doc.close();

Exemple

Supposons que nous ayons un document PDF nommé sample.pdf, Sur le chemin C:/PdfBox_Examples/ avec des pages vides comme indiqué ci-dessous.

Cet exemple montre comment ajouter une image à une page vierge du document PDF mentionné ci-dessus. Ici, nous allons charger le document PDF nommésample.pdfet ajoutez-y une image. Enregistrez ce code dans un fichier avec un nomInsertingImage.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();
     
   }
}

Compilez et exécutez le fichier Java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

javac InsertingImage.java 
java InsertingImage

Lors de l'exécution, le programme ci-dessus insère une image dans la page spécifiée du document PDF donné affichant le message suivant.

Image inserted

Si vous vérifiez le document sample.pdf, vous pouvez observer qu'une image y est insérée comme indiqué ci-dessous.

Dans le chapitre précédent, nous avons vu comment insérer une image dans un document PDF. Dans ce chapitre, nous verrons comment crypter un document PDF.

Crypter un document PDF

Vous pouvez crypter un document PDF en utilisant les méthodes fournies par StandardProtectionPolicy et AccessPermission classes.

le AccessPermissionLa classe est utilisée pour protéger le document PDF en lui attribuant des autorisations d'accès. En utilisant cette classe, vous pouvez empêcher les utilisateurs d'effectuer les opérations suivantes.

  • Imprimez le document
  • Modifier le contenu du document
  • Copier ou extraire le contenu du document
  • Ajouter ou modifier des annotations
  • Remplissez les champs de formulaire interactifs
  • Extraire du texte et des graphiques pour l'accessibilité aux personnes malvoyantes
  • Assemblez le document
  • Impression en qualité dégradée

le StandardProtectionPolicy La classe est utilisée pour ajouter une protection basée sur un mot de passe à un document.

Voici les étapes pour crypter un document PDF existant.

Étape 1: chargement d'un document PDF existant

Charger un document PDF existant en utilisant la méthode statique load() du PDDocumentclasse. Cette méthode accepte un objet fichier en tant que paramètre, puisqu'il s'agit d'une méthode statique, vous pouvez l'invoquer en utilisant le nom de classe comme indiqué ci-dessous.

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

Étape 2: création d'un objet d'autorisation d'accès

Instancier le AccessPermission classe comme indiqué ci-dessous.

AccessPermission accessPermission = new AccessPermission();

Étape 3: Création d'un objet StandardProtectionPolicy

Instancier le StandardProtectionPolicy classe en passant le mot de passe du propriétaire, le mot de passe de l'utilisateur et le AccessPermission objet comme indiqué ci-dessous.

StandardProtectionPolicy spp = new StandardProtectionPolicy("1234","1234",accessPermission);

Étape 4: Définition de la longueur de la clé de chiffrement

Définissez la longueur de la clé de chiffrement à l'aide du setEncryptionKeyLength() méthode comme indiqué ci-dessous.

spp.setEncryptionKeyLength(128);

Étape 5: Définition des autorisations

Définissez les autorisations à l'aide du setPermissions()méthode de la classe StandardProtectionPolicy. Cette méthode accepte unAccessPermission objet comme paramètre.

spp.setPermissions(accessPermission);

Étape 6: protection du document

Vous pouvez protéger votre document en utilisant le protect() méthode de la PDDocumentclasse comme indiqué ci-dessous. Passe leStandardProtectionPolicy objet comme paramètre de cette méthode.

document.protect(spp);

Étape 7: enregistrement du document

Après avoir ajouté le contenu requis, enregistrez le document PDF à l'aide du save() méthode de la PDDocument class comme indiqué dans le bloc de code suivant.

document.save("Path");

Étape 8: fermeture du document

Enfin, fermez le document en utilisant close() méthode de PDDocument classe comme indiqué ci-dessous.

document.close();

Exemple

Supposons que nous ayons un document PDF nommé sample.pdf, Sur le chemin C:/PdfBox_Examples/ avec des pages vides comme indiqué ci-dessous.

Cet exemple montre comment crypter le document PDF mentionné ci-dessus. Ici, nous allons charger le document PDF nommésample.pdfet cryptez-le. Enregistrez ce code dans un fichier avec un nomEncriptingPDF.java.

import java.io.File;
 
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
public class EncriptingPDF {
  
   public static void main(String args[]) throws Exception {
      //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/sample.pdf");
      //Closing the document
      document.close();

   }
}

Compilez et exécutez le fichier Java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

javac EncriptingPDF.java
java EncriptingPDF

Lors de l'exécution, le programme ci-dessus crypte le document PDF donné affichant le message suivant.

Document encrypted

Si vous essayez d'ouvrir le document sample.pdf, vous ne pouvez pas, car il est crypté. Au lieu de cela, il vous invite à taper le mot de passe pour ouvrir le document comme indiqué ci-dessous.

Dans le chapitre précédent, nous avons appris à insérer une image dans un document PDF. Dans ce chapitre, nous verrons comment ajouter du JavaScript à un document PDF.

Ajout de JavaScript à un document PDF

Vous pouvez ajouter des actions JavaScript à un document PDF à l'aide de PDActionJavaScriptclasse. Cela représente une action JavaScript.

Voici les étapes pour ajouter des actions JavaScript à un document PDF existant.

Étape 1: chargement d'un document PDF existant

Charger un document PDF existant en utilisant la méthode statique load() du PDDocumentclasse. Cette méthode accepte un objet fichier en tant que paramètre, puisqu'il s'agit d'une méthode statique, vous pouvez l'invoquer en utilisant le nom de classe comme indiqué ci-dessous.

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

Étape 2: Création de l'objet PDActionJavaScript

Instancier le PDActionJavaScriptobjet comme indiqué ci-dessous. Au constructeur de cette classe, transmettez le JavaScript requis sous la forme de String comme indiqué ci-dessous.

String javaScript = "app.alert( {cMsg: 'this is an example', nIcon: 3,"
   + " nType: 0,cTitle: 'PDFBox Javascript example' } );";       
PDActionJavaScript PDAjavascript = new PDActionJavaScript(javaScript);

Étape 3: intégration du script Java dans le document

Incorporez la chaîne requise au document PDF comme indiqué ci-dessous.

document.getDocumentCatalog().setOpenAction(PDAjavascript);

Étape 4: enregistrement du document

Après avoir ajouté le contenu requis, enregistrez le document PDF à l'aide du save() méthode de la PDDocument class comme indiqué dans le bloc de code suivant.

document.save("Path");

Étape 5: fermeture du document

Enfin, fermez le document en utilisant close() méthode de la PDDocument classe comme indiqué ci-dessous.

document.close();

Exemple

Supposons que nous ayons un document PDF nommé sample.pdf, Sur le chemin C:/PdfBox_Examples/ avec des pages vides comme indiqué ci-dessous.

Cet exemple montre comment incorporer JavaScript dans le document PDF mentionné ci-dessus. Ici, nous allons charger le document PDF nommésample.pdfet intégrez-y JavaScript. Enregistrez ce code dans un fichier avec un nomAddJavaScript.java.

import java.io.File;
  
import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.pdmodel.interactive.action.PDActionJavaScript;

public class AddJavaScript {

   public static void main(String args[]) throws Exception {

      //Loading an existing file
      File file = new File("C:/PdfBox_Examples/new.pdf");
      PDDocument document = PDDocument.load(file);

      String javaScript = "app.alert( {cMsg: 'this is an example', nIcon: 3,"
         + " nType: 0, cTitle: 'PDFBox Javascript example’} );";

      //Creating PDActionJavaScript object 
      PDActionJavaScript PDAjavascript = new PDActionJavaScript(javaScript);

      //Embedding java script
      document.getDocumentCatalog().setOpenAction(PDAjavascript);

      //Saving the document
      document.save( new File("C:/PdfBox_Examples/new.pdf") );
      System.out.println("Data added to the given PDF"); 

      //Closing the document
      document.close();

   }
}

Compilez et exécutez le fichier Java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

javac AddJavaScript.java 
java AddJavaScript

Lors de l'exécution, le programme ci-dessus incorpore JavaScript dans le document PDF donné affichant le message suivant.

Data added to the given PDF

Si vous essayez d'ouvrir le document new.pdf il affichera un message d'alerte comme indiqué ci-dessous.

Dans le chapitre précédent, nous avons vu comment ajouter du JavaScript à un document PDF. Apprenons maintenant à diviser un document PDF donné en plusieurs documents.

Division des pages dans un document PDF

Vous pouvez diviser le document PDF donné en plusieurs documents PDF à l'aide de la classe nommée Splitter. Cette classe est utilisée pour diviser le document PDF donné en plusieurs autres documents.

Voici les étapes pour diviser un document PDF existant

Étape 1: chargement d'un document PDF existant

Charger un document PDF existant en utilisant la méthode statique load() du PDDocumentclasse. Cette méthode accepte un objet fichier en tant que paramètre, puisqu'il s'agit d'une méthode statique, vous pouvez l'invoquer en utilisant le nom de classe comme indiqué ci-dessous.

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

Étape 2: instancier la classe Splitter

La classe nommée Splitter contient les méthodes pour diviser le document PDF donné, donc instanciez cette classe comme indiqué ci-dessous.

Splitter splitter = new Splitter();

Étape 3: Division du document PDF

Vous pouvez diviser le document donné en utilisant le Split() méthode de la Splitterclasse cette classe. Cette méthode accepte un objet duPDDocument classe comme paramètre.

List<PDDocument> Pages = splitter.split(document);

le split() La méthode divise chaque page du document donné en tant que document individuel et renvoie tous ceux-ci sous la forme d'une liste.

Étape 4: Création d'un objet Iterator

Pour parcourir la liste des documents, vous devez obtenir un objet itérateur de la liste acquise à l'étape ci-dessus, vous devez obtenir l'objet itérateur de la liste en utilisant le listIterator() méthode comme indiqué ci-dessous.

Iterator<PDDocument> iterator = Pages.listIterator();

Étape 5: fermeture du document

Enfin, fermez le document en utilisant close() méthode de PDDocument classe comme indiqué ci-dessous.

document.close();

Exemple

Supposons qu'il existe un document PDF avec un nom sample.pdf Sur le chemin C:\PdfBox_Examples\ et ce document contient deux pages - une page contenant une image et une autre page contenant du texte comme indiqué ci-dessous.

Cet exemple montre comment diviser le document PDF mentionné ci-dessus. Ici, nous allons diviser le document PDF nommésample.pdf en deux documents différents sample1.pdf et sample2.pdf. Enregistrez ce code dans un fichier avec un nomSplitPages.java.

import org.apache.pdfbox.multipdf.Splitter; 
import org.apache.pdfbox.pdmodel.PDDocument;

import java.io.File; 
import java.io.IOException; 
import java.util.List; 
import java.util.Iterator;
  
public class SplitPages {
   public static void main(String[] args) throws IOException {

      //Loading an existing PDF document
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument document = PDDocument.load(file); 

      //Instantiating Splitter class
      Splitter splitter = new Splitter();

      //splitting the pages of a PDF document
      List<PDDocument> Pages = splitter.split(document);

      //Creating an iterator 
      Iterator<PDDocument> iterator = Pages.listIterator();

      //Saving each page as an individual document
      int i = 1;
      while(iterator.hasNext()) {
         PDDocument pd = iterator.next();
         pd.save("C:/PdfBox_Examples/sample"+ i++ +".pdf");
      }
      System.out.println("Multiple PDF’s created");
      document.close();
   }
}

Compilez et exécutez le fichier Java enregistré à partir de l'invite de commande à l'aide des commandes suivantes

javac SplitPages.java 
java SplitPages

Lors de l'exécution, le programme ci-dessus crypte le document PDF donné affichant le message suivant.

Multiple PDF’s created

Si vous vérifiez le chemin donné, vous pouvez observer que plusieurs fichiers PDF ont été créés avec des noms sample1 et sample2 comme indiqué ci-dessous.

Dans le chapitre précédent, nous avons vu comment diviser un document PDF donné en plusieurs documents. Apprenons maintenant à fusionner plusieurs documents PDF en un seul document.

Fusion de plusieurs documents PDF

Vous pouvez fusionner plusieurs documents PDF en un seul document PDF à l'aide de la classe nommée PDFMergerUtility classe, cette classe fournit des méthodes pour fusionner deux ou plusieurs documents PDF en un seul document PDF.

Voici les étapes pour fusionner plusieurs documents PDF.

Étape 1: instanciation de la classe PDFMergerUtility

Instanciez la classe d'utilitaire de fusion comme indiqué ci-dessous.

PDFMergerUtility PDFmerger = new PDFMergerUtility();

Étape 2: Définition du fichier de destination

Définissez les fichiers de destination à l'aide de la méthode setDestinationFileName () comme indiqué ci-dessous.

PDFmerger.setDestinationFileName("C:/PdfBox_Examples/data1/merged.pdf");

Étape 3: Définition des fichiers source

Définissez les fichiers source à l'aide de la méthode addSource () comme indiqué ci-dessous.

File file = new File("path of the document")
PDFmerger.addSource(file);

Étape 4: fusion des documents

Fusionnez les documents à l'aide de la méthode mergeDocuments () de la classe PDFmerger comme indiqué ci-dessous.

PDFmerger.mergeDocuments();

Exemple

Supposons que nous ayons deux documents PDF - sample1.pdf et sample2.pdf, Sur le chemin C:\PdfBox_Examples\ comme indiqué ci-dessous.

Cet exemple montre comment fusionner les documents PDF ci-dessus. Ici, nous fusionnerons les documents PDF nomméssample1.pdf et sample2.pdf dans un seul document PDF merged.pdf. Enregistrez ce code dans un fichier avec un nomMergePDFs.java.

import org.apache.pdfbox.multipdf.PDFMergerUtility; 
import java.io.File; 
import java.io.IOException;
public class MergePDFs {
   public static void main(String[] args) throws IOException {
      File file1 = new File("C:\\EXAMPLES\\Demo1.pdf");       
      File file2 = new File("C:\\EXAMPLES\\Demo2.pdf");    
		
      //Instantiating PDFMergerUtility class
      PDFMergerUtility PDFmerger = new PDFMergerUtility();
		
      //Setting the destination file
      PDFmerger.setDestinationFileName("C:\\Examples\\merged.pdf");
		
      //adding the source files
      PDFmerger.addSource(file1);
      PDFmerger.addSource(file2);
		
      //Merging the two documents
      PDFmerger.mergeDocuments();
      System.out.println("Documents merged");
   }
}

Compilez et exécutez le fichier Java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

javac MergePDFs.java 
java MergePDFs

Lors de l'exécution, le programme ci-dessus crypte le document PDF donné affichant le message suivant.

Documents merged

Si vous vérifiez le chemin donné, vous pouvez observer qu'un document PDF avec le nom merged.pdf est créé et contient les pages des deux documents source comme indiqué ci-dessous.

Dans le chapitre précédent, nous avons vu comment fusionner plusieurs documents PDF. Dans ce chapitre, nous allons comprendre comment extraire une image d'une page d'un document PDF.

Génération d'une image à partir d'un document PDF

La bibliothèque PDFBox vous fournit une classe nommée PDFRenderer qui rend un document PDF dans une AWT BufferedImage.

Voici les étapes pour générer une image à partir d'un document PDF.

Étape 1: chargement d'un document PDF existant

Charger un document PDF existant en utilisant la méthode statique load() du PDDocumentclasse. Cette méthode accepte un objet fichier en tant que paramètre, puisqu'il s'agit d'une méthode statique, vous pouvez l'invoquer en utilisant le nom de classe comme indiqué ci-dessous.

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

Étape 2: instanciation de la classe PDFRenderer

La classe nommée PDFRenderer rend un document PDF en un AWT BufferedImage. Par conséquent, vous devez instancier cette classe comme indiqué ci-dessous. Le constructeur de cette classe accepte un objet document; transmettez l'objet document créé à l'étape précédente comme indiqué ci-dessous.

PDFRenderer renderer = new PDFRenderer(document);

Étape 3: Rendu de l'image à partir du document PDF

Vous pouvez rendre l'image dans une page particulière en utilisant la méthode renderImage() de la classe Renderer, à cette méthode, vous devez transmettre l'index de la page où vous avez l'image qui doit être rendue.

BufferedImage image = renderer.renderImage(0);

Étape 4: écriture de l'image dans un fichier

Vous pouvez écrire l'image rendue à l'étape précédente dans un fichier à l'aide de write()méthode. Pour cette méthode, vous devez passer trois paramètres -

  • L'objet image rendu.
  • Chaîne représentant le type de l'image (jpg ou png).
  • Objet fichier dans lequel vous devez enregistrer l'image extraite.
ImageIO.write(image, "JPEG", new File("C:/PdfBox_Examples/myimage.jpg"));

Étape 5: fermeture du document

Enfin, fermez le document à l'aide du close() méthode de la classe PDDocument comme indiqué ci-dessous.

document.close();

Exemple

Supposons que nous ayons un document PDF - sample.pdf Sur le chemin C:\PdfBox_Examples\ et cela contient une image dans sa première page comme indiqué ci-dessous.

Cet exemple montre comment convertir le document PDF ci-dessus en fichier image. Ici, nous allons récupérer l'image dans la 1ère page du document PDF et l'enregistrer sousmyimage.jpg. Enregistrez ce code sousPdfToImage.java

import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
public class PdfToImage {

   public static void main(String args[]) throws Exception {

      //Loading an existing PDF document
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument document = PDDocument.load(file);
       
      //Instantiating the PDFRenderer class
      PDFRenderer renderer = new PDFRenderer(document);

      //Rendering an image from the PDF document
      BufferedImage image = renderer.renderImage(0);

      //Writing the image to a file
      ImageIO.write(image, "JPEG", new File("C:/PdfBox_Examples/myimage.jpg"));
       
      System.out.println("Image created");
       
      //Closing the document
      document.close();

   }
}

Compilez et exécutez le fichier Java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

javac PdfToImage.java 
java PdfToImage

Lors de l'exécution, le programme ci-dessus récupère l'image dans le document PDF donné affichant le message suivant.

Image created

Si vous vérifiez le chemin indiqué, vous pouvez observer que l'image est générée et enregistrée sous myimage.jpg comme indiqué ci-dessous.

Ce chapitre vous apprend à créer des cases de couleur dans une page d'un document PDF.

Création de boîtes dans un document PDF

Vous pouvez ajouter des boîtes rectangulaires dans une page PDF à l'aide du addRect() méthode de la PDPageContentStream classe.

Voici les étapes pour créer des formes rectangulaires dans une page d'un document PDF.

Étape 1: chargement d'un document PDF existant

Charger un document PDF existant en utilisant la méthode statique load() du PDDocumentclasse. Cette méthode accepte un objet fichier en tant que paramètre, puisqu'il s'agit d'une méthode statique, vous pouvez l'invoquer en utilisant le nom de classe comme indiqué ci-dessous.

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

Étape 2: Obtention de l'objet Page

Vous devez récupérer le PDPage objet de la page souhaitée où vous souhaitez ajouter des rectangles à l'aide du getPage() méthode de la PDDocumentclasse. Pour cette méthode, vous devez passer l'index de la page où vous souhaitez ajouter des rectangles.

PDPage page = document.getPage(0);

Étape 3: Préparation du flux de contenu

Vous pouvez insérer différents types d'éléments de données à l'aide de l'objet de la classe nommée PDPageContentStream. Vous devez passer l'objet document et l'objet page au constructeur de cette classe, par conséquent, instancier cette classe en transmettant ces deux objets créés dans les étapes précédentes comme indiqué ci-dessous.

PDPageContentStream contentStream = new PDPageContentStream(document, page);

Étape 4: Définition de la couleur sans contour

Vous pouvez définir la couleur sans contour du rectangle à l'aide du bouton setNonStrokingColor() méthode de la classe PDPageContentStream. Pour cette méthode, vous devez passer la couleur requise comme paramètre comme indiqué ci-dessous.

contentStream.setNonStrokingColor(Color.DARK_GRAY);

Étape 5: Dessiner le rectangle

Dessinez le rectangle avec les dimensions requises à l'aide du addRect()méthode. Pour cette méthode, vous devez transmettre les dimensions du rectangle à ajouter comme indiqué ci-dessous.

contentStream.addRect(200, 650, 100, 100);

Étape 6: Remplir le rectangle

le fill() méthode de la PDPageContentStream class remplit le chemin entre les dimensions spécifiées avec la couleur requise comme indiqué ci-dessous.

contentStream.fill();

Étape 7: fermeture du document

Fermez enfin le document en utilisant close() méthode de la PDDocument classe comme indiqué ci-dessous.

document.close();

Exemple

Supposons que nous ayons un document PDF nommé blankpage.pdf Sur le chemin C:\PdfBox_Examples\ et celui-ci contient une seule page vierge comme indiqué ci-dessous.

Cet exemple montre comment créer / insérer des rectangles dans un document PDF. Ici, nous allons créer une boîte dans un PDF vierge. Enregistrez ce code sousAddRectangles.java.

import java.awt.Color;
import java.io.File;
  
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
public class ShowColorBoxes {

   public static void main(String args[]) throws Exception {

      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/BlankPage.pdf");
      PDDocument document = PDDocument.load(file);
        
      //Retrieving a page of the PDF Document
      PDPage page = document.getPage(0);

      //Instantiating the PDPageContentStream class
      PDPageContentStream contentStream = new PDPageContentStream(document, page);
       
      //Setting the non stroking color
      contentStream.setNonStrokingColor(Color.DARK_GRAY);

      //Drawing a rectangle 
      contentStream.addRect(200, 650, 100, 100);

      //Drawing a rectangle
      contentStream.fill();

      System.out.println("rectangle added");

      //Closing the ContentStream object
      contentStream.close();

      //Saving the document
      File file1 = new File("C:/PdfBox_Examples/colorbox.pdf");
      document.save(file1);

      //Closing the document
      document.close();
   }
}

Compilez et exécutez le fichier Java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

javac AddRectangles.java 
java AddRectangles

Lors de l'exécution, le programme ci-dessus crée un rectangle dans un document PDF affichant l'image suivante.

Rectangle created

Si vous vérifiez le chemin indiqué et ouvrez le document enregistré - colorbox.pdf, vous pouvez observer qu'une boîte y est insérée comme indiqué ci-dessous.