PDFBox - Ajout de plusieurs lignes

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 en utilisant le ShowText() méthode de la PDPageContentStream classe, en divisant chacun d'eux en utilisant le 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.