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.