PDFBox - Adición de varias líneas

En el ejemplo proporcionado en el capítulo anterior, discutimos cómo agregar texto a una página en un PDF, pero a través de este programa, solo puede agregar el texto que cabría en una sola línea. Si intenta agregar más contenido, no se mostrará todo el texto que exceda el espacio de línea.

Por ejemplo, si ejecuta el programa anterior en el capítulo anterior pasando la siguiente cadena, solo se mostrará una parte.

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";

Reemplace la string textdel ejemplo del capítulo anterior con la cadena mencionada anteriormente y ejecútelo. Tras la ejecución, recibirá el siguiente resultado.

Si observa la salida con atención, puede notar que solo se muestra una parte de la cadena.

Para agregar varias líneas a un PDF, debe establecer el interlineado usando el setLeading() método y cambie a una nueva línea usando newline() método después de terminar cada línea.

Pasos

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 = PDDocument.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 de la transmisión de contenido

Puede insertar varios tipos de elementos de datos utilizando el objeto de la clase denominada 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 mediante el beginText() y endText() métodos del PDPageContentStream clase 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 PDPageContentStream class como se muestra a continuación para este método, debe pasar el tipo y tamaño de la fuente.

contentStream.setFont( font_type, font_size );

Paso 7: configuración del texto inicial

Puede configurar el texto inicial usando el setLeading() método como se muestra a continuación.

contentStream.setLeading(14.5f);

Paso 8: Insertar múltiples cadenas usando newline ()

Puede insertar varias cadenas utilizando el ShowText() método del PDPageContentStream clase, dividiendo cada uno de ellos usando el newline() método como se muestra a continuación.

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

Paso 9: 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 10: Cerrar PDPageContentStream

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

contentstream.close();

Paso 11: 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 12: 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 varias líneas en un PDF usando PDFBox. Guarde este programa en un archivo con nombreAddMultipleLines.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();
   }
}

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

javac AddMultipleLines.java 
java AddMultipleLines

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 en varias líneas como se muestra a continuación.