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.