PDFBox - Adicionando várias linhas

No exemplo fornecido no capítulo anterior, discutimos como adicionar texto a uma página em um PDF, mas por meio deste programa, você só pode adicionar o texto que caberia em uma única linha. Se você tentar adicionar mais conteúdo, todo o texto que exceder o espaço da linha não será exibido.

Por exemplo, se você executar o programa acima no capítulo anterior, passando a seguinte string, apenas uma parte dela será exibida.

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

Substitua o string textdo exemplo no capítulo anterior com a string mencionada acima e execute-a. Após a execução, você receberá a seguinte saída.

Se você observar a saída com atenção, poderá notar que apenas uma parte da string é exibida.

Para adicionar várias linhas a um PDF, você precisa definir o entrelinhas usando o setLeading() método e mudar para uma nova linha usando newline() método após terminar cada linha.

Passos

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 = PDDocument.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 chamada 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 o beginText() e endText() métodos do PDPageContentStream classe como 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 PDPageContentStream classe como mostrado abaixo para este método você precisa passar o tipo e tamanho da fonte.

contentStream.setFont( font_type, font_size );

Etapa 7: Definir o Leading do Texto

Você pode definir o texto inicial usando o setLeading() método conforme mostrado abaixo.

contentStream.setLeading(14.5f);

Etapa 8: inserir várias strings usando nova linha ()

Você pode inserir várias strings usando o ShowText() método do PDPageContentStream classe, dividindo cada um deles usando o newline() método conforme mostrado abaixo.

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

Etapa 9: 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 10: Fechando o PDPageContentStream

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

contentstream.close();

Etapa 11: 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 12: 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 várias linhas em um PDF usando PDFBox. Salve este programa em um arquivo com o nomeAddMultipleLines.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 e execute o arquivo Java salvo no prompt de comando usando os comandos a seguir.

javac AddMultipleLines.java 
java AddMultipleLines

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 em várias linhas, conforme mostrado abaixo.