PDFBox - Agregar texto

En el capítulo anterior, discutimos cómo agregar páginas a un documento PDF. En este capítulo, discutiremos cómo agregar texto a un documento PDF existente.

Agregar texto a un documento PDF existente

Puede agregar contenido a un documento usando la biblioteca PDFBox, esto le proporciona una clase llamada PDPageContentStream que contiene los métodos necesarios para insertar texto, imágenes y otros tipos de contenido en una página de un PDFDocument.

Los siguientes son los pasos para crear un documento vacío y agregar contenido a una página en él.

Paso 1: carga de un documento existente

Puede cargar un documento existente utilizando el load()método de la clase PDDocument. Por lo tanto, cree una instancia de esta clase y cargue el documento requerido como se muestra a continuación.

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

Paso 2: Obtener la página requerida

Puede obtener la página requerida en un documento utilizando el getPage()método. Recupere el objeto de la página requerida pasando su índice a este método como se muestra a continuación.

PDPage page = doc.getPage(1);

Paso 3: preparación del flujo de contenido

Puede insertar varios tipos de elementos de datos utilizando el objeto de la clase PDPageContentStream. Debe pasar el objeto del documento y el objeto de la página al constructor de esta clase, por lo tanto, cree una instancia de esta clase pasando estos dos objetos creados en los pasos anteriores como se muestra a continuación.

PDPageContentStream contentStream = new PDPageContentStream(doc, page);

Paso 4: comenzar el texto

Al insertar texto en un documento PDF, puede especificar los puntos de inicio y finalización del texto utilizando los métodos beginText () y endText () de la clase PDPageContentStream como se muestra a continuación.

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

Por lo tanto, comience el texto usando el beginText() método como se muestra a continuación.

contentStream.beginText();

Paso 5: Establecer la posición del texto

Utilizando el newLineAtOffset() método, puede establecer la posición en el flujo de contenido en la página.

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

Paso 6: Configuración de la fuente

Puede establecer la fuente del texto en el estilo requerido utilizando el setFont() método del PDPageContentStreamclase como se muestra a continuación. Para este método es necesario pasar el tipo y tamaño de la fuente.

contentStream.setFont( font_type, font_size );

Paso 7: Insertar el texto

Puede insertar el texto en la página utilizando el ShowText() método del PDPageContentStreamclase como se muestra a continuación. Este método acepta el texto requerido en forma de cadena.

contentStream.showText(text);

Paso 8: Finalizar el texto

Después de insertar el texto, debe finalizar el texto con el endText() método del PDPageContentStream clase como se muestra a continuación.

contentStream.endText();

Paso 9: cerrar PDPageContentStream

Cierra el PDPageContentStream objeto usando el close() método como se muestra a continuación.

contentstream.close();

Paso 10: guardar el documento

Después de agregar el contenido requerido, guarde el documento PDF usando el save() método del PDDocument class como se muestra en el siguiente bloque de código.

doc.save("Path");

Paso 11: Cerrar el documento

Finalmente, cierre el documento usando el close() método del PDDocument clase como se muestra a continuación.

doc.close();

Ejemplo

Este ejemplo demuestra cómo agregar contenido a una página en un documento. Aquí, crearemos un programa Java para cargar el documento PDF llamadomy_doc.pdf, que se guarda en el camino C:/PdfBox_Examples/y agregue algo de texto. Guarde este código en un archivo con nombreAddingContent.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();
   }
}

Compile y ejecute el archivo Java guardado desde el símbolo del sistema utilizando los siguientes comandos.

javac AddingContent.java 
java AddingContent

Tras la ejecución, el programa anterior agrega el texto dado al documento y muestra el siguiente mensaje.

Content added

Si verifica el documento PDF new.pdf en la ruta especificada, puede observar que el contenido dado se agrega al documento como se muestra a continuación.