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.