PDFBox - Adicionando retângulos
Este capítulo ensina como criar caixas de cores em uma página de um documento PDF.
Criação de caixas em um documento PDF
Você pode adicionar caixas retangulares em uma página PDF usando o addRect() método do PDPageContentStream classe.
A seguir estão as etapas para criar formas retangulares em uma página de um documento PDF.
Etapa 1: Carregando um documento PDF existente
Carregue um documento PDF existente usando o método estático load() do PDDocumentclasse. Este método aceita um objeto de arquivo como parâmetro, uma vez que é um método estático, você pode invocá-lo usando o nome da classe conforme mostrado abaixo.
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
Etapa 2: Obtendo o objeto da página
Você precisa recuperar o PDPage objeto da página necessária onde você deseja adicionar retângulos usando o getPage() método do PDDocumentclasse. Para este método você precisa passar o índice da página onde deseja adicionar retângulos.
PDPage page = document.getPage(0);
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(document, page);
Etapa 4: Definir a cor sem traços
Você pode definir a cor sem traço para o retângulo usando o setNonStrokingColor() método da aula PDPageContentStream. Para este método, você precisa passar a cor desejada como parâmetro conforme mostrado abaixo.
contentStream.setNonStrokingColor(Color.DARK_GRAY);
Etapa 5: Desenhar o retângulo
Desenhe o retângulo com as dimensões necessárias usando o addRect()método. Para este método, você precisa passar as dimensões do retângulo a ser adicionado conforme mostrado abaixo.
contentStream.addRect(200, 650, 100, 100);
Etapa 6: Preenchendo o retângulo
o fill() método do PDPageContentStream classe preenche o caminho entre as dimensões especificadas com a cor necessária, conforme mostrado abaixo.
contentStream.fill();
Etapa 7: Fechando o Documento
Finalmente feche o documento usando close() método do PDDocument classe como mostrado abaixo.
document.close();
Exemplo
Suponha que temos um documento PDF chamado blankpage.pdf no caminho C:\PdfBox_Examples\ e contém uma única página em branco, conforme mostrado abaixo.
Este exemplo demonstra como criar / inserir retângulos em um documento PDF. Aqui, criaremos uma caixa em um PDF em branco. Salve este código comoAddRectangles.java.
import java.awt.Color;
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
public class ShowColorBoxes {
public static void main(String args[]) throws Exception {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/BlankPage.pdf");
PDDocument document = PDDocument.load(file);
//Retrieving a page of the PDF Document
PDPage page = document.getPage(0);
//Instantiating the PDPageContentStream class
PDPageContentStream contentStream = new PDPageContentStream(document, page);
//Setting the non stroking color
contentStream.setNonStrokingColor(Color.DARK_GRAY);
//Drawing a rectangle
contentStream.addRect(200, 650, 100, 100);
//Drawing a rectangle
contentStream.fill();
System.out.println("rectangle added");
//Closing the ContentStream object
contentStream.close();
//Saving the document
File file1 = new File("C:/PdfBox_Examples/colorbox.pdf");
document.save(file1);
//Closing the document
document.close();
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os comandos a seguir.
javac AddRectangles.java
java AddRectangles
Após a execução, o programa acima cria um retângulo em um documento PDF exibindo a imagem a seguir.
Rectangle created
Se você verificar o caminho fornecido e abrir o documento salvo - colorbox.pdf, você pode observar que uma caixa está inserida nele conforme mostrado abaixo.