PDFBox - Adicionando Texto

No capítulo anterior, discutimos como adicionar páginas a um documento PDF. Neste capítulo, discutiremos como adicionar texto a um documento PDF existente.

Adicionar texto a um documento PDF existente

Você pode adicionar conteúdo a um documento usando a biblioteca PDFBox, que fornece uma classe chamada PDPageContentStream que contém os métodos necessários para inserir texto, imagens e outros tipos de conteúdo em uma página de um PDFDocument.

A seguir estão as etapas para criar um documento vazio e adicionar conteúdo a uma página nele.

Etapa 1: Carregando um documento existente

Você pode carregar um documento existente usando o load()método da classe PDDocument. Portanto, instancie essa classe e carregue o documento necessário conforme mostrado abaixo.

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

Etapa 2: obtendo a página necessária

Você pode obter a página necessária em um documento usando o getPage()método. Recupere o objeto da página necessária passando seu índice para este método, conforme mostrado abaixo.

PDPage page = doc.getPage(1);

Etapa 3: preparação do fluxo de conteúdo

Você pode inserir vários tipos de elementos de dados usando o objeto da classe PDPageContentStream. Você precisa passar o objeto de documento e o objeto de página para o construtor desta classe, portanto, instancie essa classe passando esses dois objetos criados nas etapas anteriores, conforme mostrado abaixo.

PDPageContentStream contentStream = new PDPageContentStream(doc, page);

Etapa 4: começando o texto

Ao inserir texto em um documento PDF, você pode especificar os pontos inicial e final do texto usando os métodos beginText () e endText () da classe PDPageContentStream conforme mostrado abaixo.

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

Portanto, comece o texto usando o beginText() método conforme mostrado abaixo.

contentStream.beginText();

Etapa 5: Definir a posição do texto

Usando o newLineAtOffset() método, você pode definir a posição no fluxo de conteúdo na página.

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

Etapa 6: Definir a fonte

Você pode definir a fonte do texto para o estilo necessário usando o setFont() método do PDPageContentStreamclasse como mostrado abaixo. Para este método você precisa passar o tipo e o tamanho da fonte.

contentStream.setFont( font_type, font_size );

Etapa 7: Inserindo o Texto

Você pode inserir o texto na página usando o ShowText() método do PDPageContentStreamclasse como mostrado abaixo. Este método aceita o texto necessário na forma de string.

contentStream.showText(text);

Etapa 8: Finalizando o Texto

Depois de inserir o texto, você precisa finalizar o texto usando o endText() método do PDPageContentStream classe como mostrado abaixo.

contentStream.endText();

Etapa 9: Fechando o PDPageContentStream

Feche o PDPageContentStream objeto usando o close() método conforme mostrado abaixo.

contentstream.close();

Etapa 10: Salvar o documento

Depois de adicionar o conteúdo necessário, salve o documento PDF usando o save() método do PDDocument classe conforme mostrado no seguinte bloco de código.

doc.save("Path");

Etapa 11: Fechando o Documento

Finalmente, feche o documento usando o close() método do PDDocument classe como mostrado abaixo.

doc.close();

Exemplo

Este exemplo demonstra como adicionar conteúdo a uma página de um documento. Aqui, criaremos um programa Java para carregar o documento PDF chamadomy_doc.pdf, que é salvo no caminho C:/PdfBox_Examples/, e adicione algum texto a ele. Salve este código em um arquivo com o nomeAddingContent.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 e execute o arquivo Java salvo no prompt de comando usando os comandos a seguir.

javac AddingContent.java 
java AddingContent

Após a execução, o programa acima adiciona o texto fornecido ao documento e exibe a seguinte mensagem.

Content added

Se você verificar o documento PDF new.pdf no caminho especificado, você pode observar que o conteúdo fornecido é adicionado ao documento conforme mostrado abaixo.