PDFBox - Ajout de texte

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.