PDFBox - Guia rápido
O Portable Document Format (PDF) é um formato de arquivo que ajuda a apresentar os dados de maneira independente do software, hardware e sistemas operacionais do aplicativo.
Cada arquivo PDF contém a descrição de um documento plano de layout fixo, incluindo texto, fontes, gráficos e outras informações necessárias para exibi-lo.
Existem várias bibliotecas disponíveis para criar e manipular documentos PDF por meio de programas, como -
Adobe PDF Library - Esta biblioteca fornece API em linguagens como C ++, .NET e Java e com isso podemos editar, visualizar, imprimir e extrair texto de documentos PDF.
Formatting Objects Processor- Formatador de impressão de código aberto conduzido por objetos de formatação XSL e um formatador independente de saída. O destino de saída principal é PDF.
iText - Esta biblioteca fornece API em linguagens como Java, C # e outras linguagens .NET e usando esta biblioteca podemos criar e manipular documentos PDF, RTF e HTML.
JasperReports - Esta é uma ferramenta de relatório Java que gera relatórios em documentos PDF, incluindo Microsoft Excel, RTF, ODT, valores separados por vírgula e arquivos XML.
O que é um PDFBox
Apache PDFBox é uma biblioteca Java de código aberto que oferece suporte ao desenvolvimento e à conversão de documentos PDF. Usando esta biblioteca, você pode desenvolver programas Java que criam, convertem e manipulam documentos PDF.
Além disso, o PDFBox também inclui um utilitário de linha de comando para realizar várias operações em PDF usando o arquivo Jar disponível.
Recursos do PDFBox
A seguir estão os recursos notáveis do PDFBox -
Extract Text - Usando o PDFBox, você pode extrair texto Unicode de arquivos PDF.
Split & Merge - Usando o PDFBox, você pode dividir um único arquivo PDF em vários arquivos e mesclá-los novamente como um único arquivo.
Fill Forms - Usando o PDFBox, você pode preencher os dados do formulário em um documento.
Print - Usando o PDFBox, você pode imprimir um arquivo PDF usando a API de impressão Java padrão.
Save as Image - Usando o PDFBox, você pode salvar PDFs como arquivos de imagem, como PNG ou JPEG.
Create PDFs - Usando PDFBox, você pode criar um novo arquivo PDF criando programas Java e, você também pode incluir imagens e fontes.
Signing- Usando o PDFBox, você pode adicionar assinaturas digitais aos arquivos PDF.
Aplicações do PDFBox
A seguir estão os aplicativos do PDFBox -
Apache Nutch- Apache Nutch é um software de pesquisa na web de código aberto. Ele se baseia no Apache Lucene, adicionando específicos da web, como um rastreador, um banco de dados de gráfico de link, analisadores para HTML e outros formatos de documento, etc.
Apache Tika - Apache Tika é um kit de ferramentas para detectar e extrair metadados e conteúdo de texto estruturado de vários documentos usando bibliotecas de analisador existentes.
Componentes do PDFBox
A seguir estão os quatro componentes principais do PDFBox -
PDFBox- Esta é a parte principal do PDFBox. Contém as classes e interfaces relacionadas à extração e manipulação de conteúdo.
FontBox - Contém as classes e interfaces relacionadas à fonte e, usando essas classes, podemos modificar a fonte do texto do documento PDF.
XmpBox - Contém as classes e interfaces que manipulam metadados XMP.
Preflight - Este componente é usado para verificar os arquivos PDF em relação ao padrão PDF / A-1b.
Instalando PDFBox
A seguir estão as etapas para baixar o Apache PDFBox -
Step 1 - Abra a página inicial de Apache PDFBox clicando no seguinte link - https://pdfbox.apache.org/
Step 2 - O link acima irá direcioná-lo para a página inicial, conforme mostrado na imagem a seguir -
Step 3 - Agora, clique no Downloadslink destacado na imagem acima. Ao clicar, você será direcionado para a página de downloads do PDFBox conforme mostrado na imagem a seguir.
Step 4- Na página Downloads, você terá links para PDFBox. Clique no link respectivo para a versão mais recente. Por exemplo, estamos optando porPDFBox 2.0.1 e ao clicar aqui, você será direcionado aos arquivos jar necessários, conforme mostrado na imagem a seguir.
Step 5 - Baixe os arquivos jar pdfbox-2.0.1.jar, fontbox-2.0.1.jar, preflight-2.0.1.jar, xmpbox-2.0.1.jar e pdfbox-tools-2.0.1.jar.
Instalação Eclipse
Depois de fazer download dos arquivos jar necessários, você deve incorporar esses arquivos JAR ao seu ambiente Eclipse. Você pode fazer isso definindo o caminho de construção para esses arquivos JAR e usandopom.xml.
Definir caminho de construção
A seguir estão as etapas para instalar o PDFBox no Eclipse -
Step 1- Certifique-se de ter instalado o Eclipse em seu sistema. Caso contrário, baixe e instale o Eclipse em seu sistema.
Step 2 - Abra o Eclipse, clique em Arquivo, Novo e Abrir um novo projeto, conforme mostrado na captura de tela a seguir.
Step 3 - Ao selecionar o projeto, você obterá New ProjectMago. Neste assistente, selecione o projeto Java e continue clicando emNext botão como mostrado na imagem a seguir.
Step 4 - Ao prosseguir, você será direcionado para o New Java Project wizard. Crie um novo projeto e clique emNext como mostrado na imagem a seguir.
Step 5- Após criar um novo projeto, clique com o botão direito sobre ele; selecionarBuild Path e clique em Configure Build Path… como mostrado na imagem a seguir.
Step 6 - Ao clicar no Build Path opção, você será direcionado para a Java Build Path wizard. Selecione osAdd External JARs como mostrado na imagem a seguir.
Step 7 - Selecione os arquivos jar fontbox-2.0.1.jar, pdfbox-2.0.1.jar, pdfbox-tools-2.0.1.jar, preflight-2.0.1.jar, xmpbox-2.0.1.jar como mostrado na imagem a seguir.
Step 8 - Ao clicar no Open botão na captura de tela acima, esses arquivos serão adicionados à sua biblioteca conforme mostrado na captura de tela a seguir.
Step 9 - Ao clicar OK, você adicionará com êxito os arquivos JAR necessários ao projeto atual e poderá verificar essas bibliotecas adicionadas expandindo as Bibliotecas referenciadas conforme mostrado na captura de tela a seguir.
Usando pom.xml
Converta o projeto em projeto maven e adicione o seguinte conteúdo ao seu pom.xml.
<project xmlns="https://maven.apache.org/POM/4.0.0"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my_project</groupId>
<artifactId>my_project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>jempbox</artifactId>
<version>1.8.11</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>xmpbox</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>preflight</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox-tools</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
</project>
Vamos agora entender como criar um documento PDF usando a biblioteca PDFBox.
Criação de um documento PDF vazio
Você pode criar um documento PDF vazio instanciando o PDDocumentclasse. Você pode salvar o documento no local desejado usando oSave() método.
A seguir estão as etapas para criar um documento PDF vazio.
Etapa 1: Criação de um documento vazio
o PDDocument classe que pertence ao pacote org.apache.pdfbox.pdmodel, é uma representação na memória do PDFDocument. Portanto, ao instanciar essa classe, você pode criar um PDFDocument vazio, conforme mostrado no bloco de código a seguir.
PDDocument document = new PDDocument();
Etapa 2: Salvar o documento
Depois de criar o documento, você precisa salvá-lo no caminho desejado, você pode fazer isso usando o Save() método do PDDocumentclasse. Este método aceita um valor de string, representando o caminho onde você deseja armazenar o documento, como um parâmetro. A seguir está o protótipo do método save () doPDDocument classe.
document.save("Path");
Etapa 3: Fechando o Documento
Quando sua tarefa for concluída, no final, você precisa fechar o PDDocument objeto usando o close ()método. A seguir está o protótipo do método close () dePDDocument classe.
document.close();
Exemplo
Este exemplo demonstra a criação de um documento PDF. Aqui, criaremos um programa Java para gerar um documento PDF chamadomy_doc.pdf e salve-o no caminho C:/PdfBox_Examples/. Salve este código em um arquivo com o nomeDocument_Creation.java.
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
public class Document_Creation {
public static void main (String args[]) throws IOException {
//Creating PDF document object
PDDocument document = new PDDocument();
//Saving the document
document.save("C:/PdfBox_Examples/my_doc.pdf");
System.out.println("PDF created");
//Closing the document
document.close();
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os comandos a seguir.
javac Document_Creation.java
java Document_Creation
Após a execução, o programa acima cria um documento PDF exibindo a seguinte mensagem.
PDF created
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado conforme mostrado abaixo.
Como este é um documento vazio, se você tentar abri-lo, será exibido um prompt exibindo uma mensagem de erro, conforme mostrado na captura de tela a seguir.
No capítulo anterior, vimos como criar um documento PDF. Depois de criar um documento PDF, você precisa adicionar páginas a ele. Vamos agora entender como adicionar páginas em um documento PDF.
Adicionar páginas a um documento PDF
Você pode criar uma página vazia instanciando o PDPage classe e adicioná-lo ao documento PDF usando o addPage() método do PDDocument classe.
A seguir estão as etapas para criar um documento vazio e adicionar páginas a ele.
Etapa 1: Criação de um documento vazio
Crie um documento PDF vazio instanciando o PDDocument classe como mostrado abaixo.
PDDocument document = new PDDocument();
Etapa 2: Criação de uma página em branco
o PDPage classe representa uma página no PDF documento, portanto, você pode criar uma página vazia instanciando essa classe conforme mostrado no bloco de código a seguir.
PDPage my_page = new PDPage();
Etapa 3: Adicionando página ao documento
Você pode adicionar uma página ao documento PDF usando o addPage() método do PDDocumentclasse. Para este método você precisa passar o objeto PDPage como parâmetro.
Portanto, adicione a página em branco criada na etapa anterior ao objeto PDDocument, conforme mostrado no bloco de código a seguir.
document.addPage(my_page);
Desta forma, você pode adicionar quantas páginas quiser a um documento PDF.
Etapa 4: Salvar o documento
Depois de adicionar todas as páginas, salve o documento PDF usando o save() método do PDDocument classe conforme mostrado no seguinte bloco de código.
document.save("Path");
Etapa 5: Fechando o Documento
Finalmente feche o documento usando o close() método do PDDocument classe como mostrado abaixo.
document.close();
Exemplo
Este exemplo demonstra como criar um documento PDF e adicionar páginas a ele. Aqui, criaremos um documento PDF chamadomy_doc.pdf e ainda adicionar 10 páginas em branco a ele e salvá-lo no caminho C:/PdfBox_Examples/. Salve este código em um arquivo com o nomeAdding_pages.java.
package document;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
public class Adding_Pages {
public static void main(String args[]) throws IOException {
//Creating PDF document object
PDDocument document = new PDDocument();
for (int i=0; i<10; i++) {
//Creating a blank page
PDPage blankPage = new PDPage();
//Adding the blank page to the document
document.addPage( blankPage );
}
//Saving the document
document.save("C:/PdfBox_Examples/my_doc.pdf");
System.out.println("PDF created");
//Closing the document
document.close();
}
}
Compile e execute o arquivo Java salvo a partir do prompt de comando usando os seguintes comandos -
javac Adding_pages.java
java Adding_pages
Após a execução, o programa acima cria um documento PDF com páginas em branco exibindo a seguinte mensagem -
PDF created
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado conforme mostrado na captura de tela a seguir.
Nos exemplos anteriores, você viu como criar um novo documento e adicionar páginas a ele. Este capítulo ensina como carregar um documento PDF que já existe em seu sistema e como executar algumas operações nele.
Carregando um documento PDF existente
o load() método do PDDocumentclasse é usada para carregar um documento PDF existente. Siga as etapas abaixo para carregar um documento PDF existente.
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.load(file);
Etapa 2: realizar as operações necessárias
Execute as operações necessárias, como adicionar páginas, adicionar texto, adicionar imagens ao documento carregado.
Etapa 3: Salvar o documento
Depois de adicionar todas as páginas, salve o documento PDF usando o save() método do PDDocument classe conforme mostrado no seguinte bloco de código.
document.save("Path");
Etapa 4: Fechando o Documento
Finalmente feche o documento usando o close() método do PDDocument classe como mostrado abaixo.
document.close();
Exemplo
Suponha que temos um documento PDF que contém uma única página, no caminho, C:/PdfBox_Examples/ como mostrado na imagem a seguir.
Este exemplo demonstra como carregar um documento PDF existente. Aqui, vamos carregar o documento PDFsample.pdf mostrado acima, adicione uma página a ele e salve-o no mesmo caminho com o mesmo nome.
Step 1 - Salve este código em um arquivo com o nome LoadingExistingDocument.java.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
public class LoadingExistingDocument {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
System.out.println("PDF loaded");
//Adding a blank page to the document
document.addPage(new PDPage());
//Saving the document
document.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
document.close();
}
}
Compile e execute o arquivo Java salvo a partir do prompt de comando usando os seguintes comandos
javac LoadingExistingDocument.java
java LoadingExistingDocument
Após a execução, o programa acima carrega o documento PDF especificado e adiciona uma página em branco a ele exibindo a seguinte mensagem.
PDF loaded
Se você verificar o caminho especificado, poderá encontrar uma página adicional adicionada ao documento PDF especificado, conforme mostrado abaixo.
Vamos agora aprender como remover páginas de um documento PDF.
Removendo páginas de um documento existente
Você pode remover uma página de um documento PDF existente usando o removePage() método do PDDocument classe.
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.load(file);
Etapa 2: listando o número de páginas
Você pode listar o número de páginas que existe no documento PDF usando o getNumberOfPages() método conforme mostrado abaixo.
int noOfPages= document.getNumberOfPages();
System.out.print(noOfPages);
Etapa 3: Remover a página
Você pode remover uma página do documento PDF usando o removePage() método do PDDocumentclasse. Para este método, você precisa passar o índice da página a ser deletada.
Enquanto especificando o índice para as páginas de um documento PDF, tenha em mente que a indexação dessas páginas começa do zero, ou seja, se você quiser excluir o 1 st página, em seguida, as necessidades de valor de índice para ser 0.
document.removePage(2);
Etapa 4: Salvar o documento
Depois de remover a página, salve o documento PDF usando o save() método do PDDocument classe conforme mostrado no seguinte bloco de código.
document.save("Path");
Etapa 5: Fechando o Documento
Finalmente, feche o documento usando o close() método do PDDocument classe como mostrado abaixo.
document.close();
Exemplo
Suponha que temos um documento PDF com o nome sample.pdf e contém três páginas vazias, conforme mostrado abaixo.
Este exemplo demonstra como remover páginas de um documento PDF existente. Aqui, carregaremos o documento PDF especificado acima denominadosample.pdf, remova uma página dela e salve-a no caminho C:/PdfBox_Examples/. Salve este código em um arquivo com o nomeRemoving_pages.java.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
public class RemovingPages {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Listing the number of existing pages
int noOfPages= document.getNumberOfPages();
System.out.print(noOfPages);
//Removing the pages
document.removePage(2);
System.out.println("page removed");
//Saving the document
document.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
document.close();
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os comandos a seguir.
javac RemovingPages.java
java RemovingPages
Após a execução, o programa acima cria um documento PDF com páginas em branco exibindo a seguinte mensagem.
3
page removed
Se você verificar o caminho especificado, poderá descobrir que a página necessária foi excluída e apenas duas páginas permaneceram no documento, conforme mostrado abaixo.
Como outros arquivos, um documento PDF também possui propriedades de documento. Essas propriedades são pares de valores-chave. Cada propriedade fornece informações específicas sobre o documento.
A seguir estão as propriedades de um documento PDF -
S.No. | Descrição da Propriedade |
---|---|
1 | File Esta propriedade contém o nome do arquivo. |
2 | Title Usando esta propriedade, você pode definir o título do documento. |
3 | Author Usando esta propriedade, você pode definir o nome do autor do documento. |
4 | Subject Usando esta propriedade, você pode especificar o assunto do documento PDF. |
5 | Keywords Usando esta propriedade, você pode listar as palavras-chave com as quais podemos pesquisar o documento. |
6 | Created Usando esta propriedade, você pode definir a data de criação do documento. |
7 | Modified Usando esta propriedade, você pode definir a data de modificação do documento. |
8 | Application Usando esta propriedade, você pode definir a Aplicação do documento. |
A seguir está uma captura de tela da tabela de propriedades do documento de um documento PDF.
Definir as propriedades do documento
PDFBox oferece uma classe chamada PDDocumentInformation. Essa classe possui um conjunto de métodos setter e getter.
Os métodos setter desta classe são usados para definir valores para várias propriedades de um documento e métodos getter que são usados para recuperar esses valores.
A seguir estão os métodos de setter do PDDocumentInformation classe.
S.No. | Método e Descrição |
---|---|
1 | setAuthor(String author) Este método é usado para definir o valor da propriedade do documento PDF denominado Author. |
2 | setTitle(String title) Este método é usado para definir o valor da propriedade do documento PDF denominado Title. |
3 | setCreator(String creator) Este método é usado para definir o valor da propriedade do documento PDF denominado Creator. |
4 | setSubject(String subject) Este método é usado para definir o valor da propriedade do documento PDF denominado Subject. |
5 | setCreationDate(Calendar date) Este método é usado para definir o valor da propriedade do documento PDF denominado CreationDate. |
6 | setModificationDate(Calendar date) Este método é usado para definir o valor da propriedade do documento PDF denominado ModificationDate. |
7 | setKeywords(String keywords list) Este método é usado para definir o valor da propriedade do documento PDF denominado Keywords. |
Exemplo
PDFBox fornece uma classe chamada PDDocumentInformatione essa classe fornece vários métodos. Esses métodos podem definir várias propriedades para o documento e recuperá-las.
Este exemplo demonstra como adicionar propriedades como Author, Title, Date, and Subjectpara um documento PDF. Aqui, criaremos um documento PDF chamadodoc_attributes.pdf, adicione vários atributos a ele e salve-o no caminho C:/PdfBox_Examples/. Salve este código em um arquivo com o nomeAddingAttributes.java.
import java.io.IOException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
import org.apache.pdfbox.pdmodel.PDPage;
public class AddingDocumentAttributes {
public static void main(String args[]) throws IOException {
//Creating PDF document object
PDDocument document = new PDDocument();
//Creating a blank page
PDPage blankPage = new PDPage();
//Adding the blank page to the document
document.addPage( blankPage );
//Creating the PDDocumentInformation object
PDDocumentInformation pdd = document.getDocumentInformation();
//Setting the author of the document
pdd.setAuthor("Tutorialspoint");
// Setting the title of the document
pdd.setTitle("Sample document");
//Setting the creator of the document
pdd.setCreator("PDF Examples");
//Setting the subject of the document
pdd.setSubject("Example document");
//Setting the created date of the document
Calendar date = new GregorianCalendar();
date.set(2015, 11, 5);
pdd.setCreationDate(date);
//Setting the modified date of the document
date.set(2016, 6, 5);
pdd.setModificationDate(date);
//Setting keywords for the document
pdd.setKeywords("sample, first example, my pdf");
//Saving the document
document.save("C:/PdfBox_Examples/doc_attributes.pdf");
System.out.println("Properties added successfully ");
//Closing the document
document.close();
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os comandos a seguir.
javac AddingAttributes.java
java AddingAttributes
Após a execução, o programa acima adiciona todos os atributos especificados ao documento que exibe a seguinte mensagem.
Properties added successfully
Agora, se você visitar o caminho fornecido, poderá encontrar o PDF criado nele. Clique com o botão direito no documento e selecione a opção de propriedades do documento conforme mostrado abaixo.
Isso lhe dará a janela de propriedades do documento e aqui você pode observar que todas as propriedades do documento foram definidas para os valores especificados.
Recuperando as Propriedades do Documento
Você pode recuperar as propriedades de um documento usando o getter métodos fornecidos pelo PDDocumentInformation classe.
A seguir estão os métodos getter do PDDocumentInformation classe.
S.No. | Método e Descrição |
---|---|
1 | getAuthor() Este método é usado para recuperar o valor da propriedade do documento PDF denominado Author. |
2 | getTitle() Este método é usado para recuperar o valor da propriedade do documento PDF denominado Title. |
3 | getCreator() Este método é usado para recuperar o valor da propriedade do documento PDF denominado Creator. |
4 | getSubject() Este método é usado para recuperar o valor da propriedade do documento PDF denominado Subject. |
5 | getCreationDate() Este método é usado para recuperar o valor da propriedade do documento PDF denominado CreationDate. |
6 | getModificationDate() Este método é usado para recuperar o valor da propriedade do documento PDF denominado ModificationDate. |
7 | getKeywords() Este método é usado para recuperar o valor da propriedade do documento PDF denominado Keywords. |
Exemplo
Este exemplo demonstra como recuperar as propriedades de um documento PDF existente. Aqui, criaremos um programa Java e carregaremos o documento PDF chamadodoc_attributes.pdf, que é salvo no caminho C:/PdfBox_Examples/e recupere suas propriedades. Salve este código em um arquivo com o nomeRetrivingDocumentAttributes.java.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
public class RetrivingDocumentAttributes {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/doc_attributes.pdf")
PDDocument document = PDDocument.load(file);
//Getting the PDDocumentInformation object
PDDocumentInformation pdd = document.getDocumentInformation();
//Retrieving the info of a PDF document
System.out.println("Author of the document is :"+ pdd.getAuthor());
System.out.println("Title of the document is :"+ pdd.getTitle());
System.out.println("Subject of the document is :"+ pdd.getSubject());
System.out.println("Creator of the document is :"+ pdd.getCreator());
System.out.println("Creation date of the document is :"+ pdd.getCreationDate());
System.out.println("Modification date of the document is :"+
pdd.getModificationDate());
System.out.println("Keywords of the document are :"+ pdd.getKeywords());
//Closing the document
document.close();
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os comandos a seguir.
javac RetrivingDocumentAttributes.java
java RetrivingDocumentAttributes
Após a execução, o programa acima recupera todos os atributos do documento e os exibe conforme mostrado abaixo.
Author of the document is :Tutorialspoint
Title of the document is :Sample document
Subject of the document is :Example document
Creator of the document is :PDF Examples
Creation date of the document is :11/5/2015
Modification date of the document is :6/5/2016
Keywords of the document are :sample, first example, my pdf
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.
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 do 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 entrelinha 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.
No capítulo anterior, vimos como adicionar texto a um documento PDF existente. Neste capítulo, discutiremos como ler texto de um documento PDF existente.
Extração de texto de um documento PDF existente
Extrair texto é um dos principais recursos da biblioteca PDF Box. Você pode extrair texto usando ogetText() método do PDFTextStripperclasse. Esta classe extrai todo o texto do documento PDF fornecido.
A seguir estão as etapas para extrair texto de um documento PDF existente.
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: instancie a classe PDFTextStripper
o PDFTextStripper A classe fornece métodos para recuperar texto de um documento PDF, portanto, instancie essa classe conforme mostrado abaixo.
PDFTextStripper pdfStripper = new PDFTextStripper();
Etapa 3: Recuperando o Texto
Você pode ler / recuperar o conteúdo de uma página do documento PDF usando o getText() método do PDFTextStripperclasse. Para este método você precisa passar o objeto do documento como parâmetro. Este método recupera o texto em um determinado documento e o retorna na forma de um objeto String.
String text = pdfStripper.getText(document);
Etapa 4: Fechando o Documento
Finalmente, feche o documento usando o close() método da classe PDDocument conforme mostrado abaixo.
document.close();
Exemplo
Suponha que temos um documento PDF com algum texto, conforme mostrado abaixo.
Este exemplo demonstra como ler o texto do documento PDF mencionado acima. Aqui, criaremos um programa Java e carregaremos um documento PDF chamadonew.pdf, que é salvo no caminho C:/PdfBox_Examples/. Salve este código em um arquivo com o nomeReadingText.java.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
public class ReadingText {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/new.pdf");
PDDocument document = PDDocument.load(file);
//Instantiate PDFTextStripper class
PDFTextStripper pdfStripper = new PDFTextStripper();
//Retrieving text from PDF document
String text = pdfStripper.getText(document);
System.out.println(text);
//Closing the document
document.close();
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os comandos a seguir.
javac ReadingText.java
java ReadingText
Após a execução, o programa acima recupera o texto do documento PDF fornecido e o exibe conforme mostrado abaixo.
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.
No capítulo anterior, vimos como extrair texto de um documento PDF existente. Neste capítulo, discutiremos como inserir imagens em um documento PDF.
Inserindo imagem em um documento PDF
Você pode inserir uma imagem em um documento PDF usando o createFromFile() e drawImage() métodos das aulas PDImageXObject e PDPageContentStream respectivamente.
A seguir estão as etapas para extrair texto de um documento PDF existente.
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 doc = PDDocument.load(file);
Etapa 2: Recuperando uma página
Selecione uma página no documento PDF e recupere seu objeto de página usando o getPage() método conforme mostrado abaixo.
PDPage page = doc.getPage(0);
Etapa 3: Criação do objeto PDImageXObject
A classe PDImageXObjectna biblioteca PDFBox representa uma imagem. Ele fornece todos os métodos necessários para realizar operações relacionadas a uma imagem, como inserir uma imagem, definir sua altura, definir sua largura, etc.
Podemos criar um objeto desta classe usando o método createFromFile(). Para este método, precisamos passar o caminho da imagem que queremos adicionar na forma de uma string e o objeto de documento ao qual a imagem deve ser adicionada.
PDImageXObject pdImage = PDImageXObject.createFromFile("C:/logo.png", doc);
Etapa 4: preparando o 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 5: Desenhar a imagem no documento PDF
Você pode inserir uma imagem no documento PDF usando o drawImage()método. Para este método, você precisa adicionar o objeto de imagem criado na etapa acima e as dimensões necessárias da imagem (largura e altura) como mostrado abaixo.
contentstream.drawImage(pdImage, 70, 250);
Etapa 6: Fechando o PDPageContentStream
Feche o PDPageContentStream objeto usando o close() método conforme mostrado abaixo.
contentstream.close();
Etapa 7: 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 8: Fechando o Documento
Finalmente, feche o documento usando o close() método do PDDocument classe como mostrado abaixo.
doc.close();
Exemplo
Suponha que temos um documento PDF chamado sample.pdf, no caminho C:/PdfBox_Examples/ com páginas vazias como mostrado abaixo.
Este exemplo demonstra como adicionar imagem a uma página em branco do documento PDF mencionado acima. Aqui, vamos carregar o documento PDF chamadosample.pdfe adicionar imagem a ele. Salve este código em um arquivo com o nomeInsertingImage.java.
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
public class InsertingImage {
public static void main(String args[]) throws Exception {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument doc = PDDocument.load(file);
//Retrieving the page
PDPage page = doc.getPage(0);
//Creating PDImageXObject object
PDImageXObject pdImage = PDImageXObject.createFromFile("C:/PdfBox_Examples/logo.png",doc);
//creating the PDPageContentStream object
PDPageContentStream contents = new PDPageContentStream(doc, page);
//Drawing the image in the PDF document
contents.drawImage(pdImage, 70, 250);
System.out.println("Image inserted");
//Closing the PDPageContentStream object
contents.close();
//Saving the document
doc.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
doc.close();
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os comandos a seguir.
javac InsertingImage.java
java InsertingImage
Após a execução, o programa acima insere uma imagem na página especificada do documento PDF fornecido exibindo a seguinte mensagem.
Image inserted
Se você verificar o documento sample.pdf, você pode observar que uma imagem está inserida nele conforme mostrado abaixo.
No capítulo anterior, vimos como inserir uma imagem em um documento PDF. Neste capítulo, discutiremos como criptografar um documento PDF.
Criptografar um documento PDF
Você pode criptografar um documento PDF usando os métodos fornecidos por StandardProtectionPolicy e AccessPermission classes.
o AccessPermissionclasse é usada para proteger o documento PDF atribuindo permissões de acesso a ele. Usando esta classe, você pode impedir que os usuários realizem as seguintes operações.
- Imprima o documento
- Modifique o conteúdo do documento
- Copie ou extraia o conteúdo do documento
- Adicionar ou modificar anotações
- Preencha os campos do formulário interativo
- Extraia texto e gráficos para acessibilidade a pessoas com deficiência visual
- Monte o documento
- Impressão com qualidade degradada
o StandardProtectionPolicy classe é usada para adicionar uma proteção baseada em senha a um documento.
A seguir estão as etapas para criptografar um documento PDF existente.
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: Criação de objeto de permissão de acesso
Instancie o AccessPermission classe como mostrado abaixo.
AccessPermission accessPermission = new AccessPermission();
Etapa 3: Criação do objeto StandardProtectionPolicy
Instancie o StandardProtectionPolicy classe passando a senha do proprietário, a senha do usuário e o AccessPermission objeto como mostrado abaixo.
StandardProtectionPolicy spp = new StandardProtectionPolicy("1234","1234",accessPermission);
Etapa 4: Definir o comprimento da chave de criptografia
Defina o comprimento da chave de criptografia usando o setEncryptionKeyLength() método conforme mostrado abaixo.
spp.setEncryptionKeyLength(128);
Etapa 5: Definir as permissões
Defina as permissões usando o setPermissions()método da classe StandardProtectionPolicy. Este método aceita umAccessPermission objeto como parâmetro.
spp.setPermissions(accessPermission);
Etapa 6: Protegendo o Documento
Você pode proteger seu documento usando o protect() método do PDDocumentclasse como mostrado abaixo. Passe oStandardProtectionPolicy objeto como parâmetro para este método.
document.protect(spp);
Etapa 7: 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.
document.save("Path");
Etapa 8: Fechando o Documento
Por fim, feche o documento usando close() método de PDDocument classe como mostrado abaixo.
document.close();
Exemplo
Suponha que temos um documento PDF chamado sample.pdf, no caminho C:/PdfBox_Examples/ com páginas vazias como mostrado abaixo.
Este exemplo demonstra como criptografar o documento PDF mencionado acima. Aqui, vamos carregar o documento PDF chamadosample.pdfe criptografá-lo. Salve este código em um arquivo com o nomeEncriptingPDF.java.
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
public class EncriptingPDF {
public static void main(String args[]) throws Exception {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Creating access permission object
AccessPermission ap = new AccessPermission();
//Creating StandardProtectionPolicy object
StandardProtectionPolicy spp = new StandardProtectionPolicy("1234", "1234", ap);
//Setting the length of the encryption key
spp.setEncryptionKeyLength(128);
//Setting the access permissions
spp.setPermissions(ap);
//Protecting the document
document.protect(spp);
System.out.println("Document encrypted");
//Saving the document
document.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
document.close();
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os comandos a seguir.
javac EncriptingPDF.java
java EncriptingPDF
Após a execução, o programa acima criptografa o documento PDF fornecido exibindo a seguinte mensagem.
Document encrypted
Se você tentar abrir o documento sample.pdf, você não pode, uma vez que é criptografado. Em vez disso, ele solicita a digitação da senha para abrir o documento, conforme mostrado abaixo.
No capítulo anterior, aprendemos como inserir imagens em um documento PDF. Neste capítulo, discutiremos como adicionar JavaScript a um documento PDF.
Adicionando JavaScript a um documento PDF
Você pode adicionar ações JavaScript a um documento PDF usando o PDActionJavaScriptclasse. Isso representa uma ação JavaScript.
A seguir estão as etapas para adicionar ações JavaScript a um documento PDF existente.
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: Criação do objeto PDActionJavaScript
Instancie o PDActionJavaScriptobjeto como mostrado abaixo. Para o construtor desta classe, passe o JavaScript necessário na forma de String, conforme mostrado abaixo.
String javaScript = "app.alert( {cMsg: 'this is an example', nIcon: 3,"
+ " nType: 0,cTitle: 'PDFBox Javascript example' } );";
PDActionJavaScript PDAjavascript = new PDActionJavaScript(javaScript);
Etapa 3: Incorporação de script Java no documento
Incorpore a string necessária ao documento PDF conforme mostrado abaixo.
document.getDocumentCatalog().setOpenAction(PDAjavascript);
Etapa 4: 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.
document.save("Path");
Etapa 5: Fechando o Documento
Por fim, feche o documento usando close() método do PDDocument classe como mostrado abaixo.
document.close();
Exemplo
Suponha que temos um documento PDF chamado sample.pdf, no caminho C:/PdfBox_Examples/ com páginas vazias como mostrado abaixo.
Este exemplo demonstra como incorporar JavaScript no documento PDF mencionado acima. Aqui, vamos carregar o documento PDF chamadosample.pdfe incorporar JavaScript nele. Salve este código em um arquivo com o nomeAddJavaScript.java.
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.interactive.action.PDActionJavaScript;
public class AddJavaScript {
public static void main(String args[]) throws Exception {
//Loading an existing file
File file = new File("C:/PdfBox_Examples/new.pdf");
PDDocument document = PDDocument.load(file);
String javaScript = "app.alert( {cMsg: 'this is an example', nIcon: 3,"
+ " nType: 0, cTitle: 'PDFBox Javascript example’} );";
//Creating PDActionJavaScript object
PDActionJavaScript PDAjavascript = new PDActionJavaScript(javaScript);
//Embedding java script
document.getDocumentCatalog().setOpenAction(PDAjavascript);
//Saving the document
document.save( new File("C:/PdfBox_Examples/new.pdf") );
System.out.println("Data added to the given PDF");
//Closing the document
document.close();
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os comandos a seguir.
javac AddJavaScript.java
java AddJavaScript
Após a execução, o programa acima incorpora JavaScript no documento PDF fornecido exibindo a seguinte mensagem.
Data added to the given PDF
Se você tentar abrir o documento new.pdf ele exibirá uma mensagem de alerta conforme mostrado abaixo.
No capítulo anterior, vimos como adicionar JavaScript a um documento PDF. Vamos agora aprender como dividir um determinado documento PDF em vários documentos.
Dividindo as páginas em um documento PDF
Você pode dividir o documento PDF fornecido em vários documentos PDF usando a classe chamada Divisor. Esta classe é usada para dividir o documento PDF fornecido em vários outros documentos.
A seguir estão as etapas para dividir um documento PDF existente
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: instanciar a classe do divisor
A classe chamada Splitter contém os métodos para dividir o documento PDF fornecido, portanto, instancie essa classe conforme mostrado abaixo.
Splitter splitter = new Splitter();
Etapa 3: Dividindo o documento PDF
Você pode dividir o documento fornecido usando o Split() método do Splitterclasse esta classe. Este método aceita um objeto daPDDocument classe como um parâmetro.
List<PDDocument> Pages = splitter.split(document);
o split() O método divide cada página de um determinado documento como um documento individual e retorna todos eles na forma de uma lista.
Etapa 4: Criando um objeto Iterator
A fim de percorrer a lista de documentos, você precisa obter um objeto iterador da lista adquirida na etapa acima, você precisa obter o objeto iterador da lista usando o listIterator() método conforme mostrado abaixo.
Iterator<PDDocument> iterator = Pages.listIterator();
Etapa 5: Fechando o Documento
Por fim, feche o documento usando close() método de PDDocument classe como mostrado abaixo.
document.close();
Exemplo
Suponha que haja um documento PDF com o nome sample.pdf no caminho C:\PdfBox_Examples\ e este documento contém duas páginas - uma página contendo imagem e outra página contendo texto conforme mostrado abaixo.
Este exemplo demonstra como dividir o documento PDF mencionado acima. Aqui, vamos dividir o documento PDF chamadosample.pdf em dois documentos diferentes sample1.pdf e sample2.pdf. Salve este código em um arquivo com o nomeSplitPages.java.
import org.apache.pdfbox.multipdf.Splitter;
import org.apache.pdfbox.pdmodel.PDDocument;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Iterator;
public class SplitPages {
public static void main(String[] args) throws IOException {
//Loading an existing PDF document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Instantiating Splitter class
Splitter splitter = new Splitter();
//splitting the pages of a PDF document
List<PDDocument> Pages = splitter.split(document);
//Creating an iterator
Iterator<PDDocument> iterator = Pages.listIterator();
//Saving each page as an individual document
int i = 1;
while(iterator.hasNext()) {
PDDocument pd = iterator.next();
pd.save("C:/PdfBox_Examples/sample"+ i++ +".pdf");
}
System.out.println("Multiple PDF’s created");
document.close();
}
}
Compile e execute o arquivo Java salvo a partir do prompt de comando usando os seguintes comandos
javac SplitPages.java
java SplitPages
Após a execução, o programa acima criptografa o documento PDF fornecido exibindo a seguinte mensagem.
Multiple PDF’s created
Se você verificar o caminho fornecido, poderá observar que vários PDFs foram criados com nomes sample1 e sample2 como mostrado abaixo.
No capítulo anterior, vimos como dividir um determinado documento PDF em vários documentos. Vamos agora aprender como mesclar vários documentos PDF em um único documento.
Mesclando vários documentos PDF
Você pode mesclar vários documentos PDF em um único documento PDF usando a classe chamada PDFMergerUtility , esta classe fornece métodos para mesclar dois ou mais documentos PDF em um único documento PDF.
A seguir estão as etapas para mesclar vários documentos PDF.
Etapa 1: instanciando a classe PDFMergerUtility
Instancie a classe do utilitário de mesclagem conforme mostrado abaixo.
PDFMergerUtility PDFmerger = new PDFMergerUtility();
Etapa 2: definir o arquivo de destino
Defina os arquivos de destino usando o método setDestinationFileName () conforme mostrado abaixo.
PDFmerger.setDestinationFileName("C:/PdfBox_Examples/data1/merged.pdf");
Etapa 3: definir os arquivos de origem
Defina os arquivos de origem usando o método addSource () conforme mostrado abaixo.
File file = new File("path of the document")
PDFmerger.addSource(file);
Etapa 4: Mesclar os documentos
Mescle os documentos usando o método mergeDocuments () da classe PDFmerger, conforme mostrado abaixo.
PDFmerger.mergeDocuments();
Exemplo
Suponha que temos dois documentos PDF - sample1.pdf e sample2.pdf, no caminho C:\PdfBox_Examples\ como mostrado abaixo.
Este exemplo demonstra como mesclar os documentos PDF acima. Aqui, mesclaremos os documentos PDF chamadossample1.pdf e sample2.pdf em um único documento PDF merged.pdf. Salve este código em um arquivo com o nomeMergePDFs.java.
import org.apache.pdfbox.multipdf.PDFMergerUtility;
import java.io.File;
import java.io.IOException;
public class MergePDFs {
public static void main(String[] args) throws IOException {
File file1 = new File("C:\\EXAMPLES\\Demo1.pdf");
File file2 = new File("C:\\EXAMPLES\\Demo2.pdf");
//Instantiating PDFMergerUtility class
PDFMergerUtility PDFmerger = new PDFMergerUtility();
//Setting the destination file
PDFmerger.setDestinationFileName("C:\\Examples\\merged.pdf");
//adding the source files
PDFmerger.addSource(file1);
PDFmerger.addSource(file2);
//Merging the two documents
PDFmerger.mergeDocuments();
System.out.println("Documents merged");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os comandos a seguir.
javac MergePDFs.java
java MergePDFs
Após a execução, o programa acima criptografa o documento PDF fornecido exibindo a seguinte mensagem.
Documents merged
Se você verificar o caminho fornecido, você pode observar que um documento PDF com o nome merged.pdf é criado e contém as páginas de ambos os documentos de origem, conforme mostrado abaixo.
No capítulo anterior, vimos como mesclar vários documentos PDF. Neste capítulo, vamos entender como extrair uma imagem de uma página de um documento PDF.
Gerando uma imagem de um documento PDF
A biblioteca PDFBox oferece uma classe chamada PDFRenderer que renderiza um documento PDF em um AWT BufferedImage.
A seguir estão as etapas para gerar uma imagem a partir 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: instanciando a classe PDFRenderer
A classe chamada PDFRenderer renderiza um documento PDF em um AWT BufferedImage. Portanto, você precisa instanciar essa classe conforme mostrado abaixo. O construtor desta classe aceita um objeto de documento; passe o objeto de documento criado na etapa anterior conforme mostrado abaixo.
PDFRenderer renderer = new PDFRenderer(document);
Etapa 3: Renderizando a imagem do documento PDF
Você pode renderizar a imagem em uma página específica usando o método renderImage() da classe Renderer, para este método você precisa passar o índice da página onde você tem a imagem a ser renderizada.
BufferedImage image = renderer.renderImage(0);
Etapa 4: gravando a imagem em um arquivo
Você pode gravar a imagem renderizada na etapa anterior em um arquivo usando o write()método. Para este método, você precisa passar três parâmetros -
- O objeto de imagem renderizado.
- String que representa o tipo de imagem (jpg ou png).
- Objeto de arquivo no qual você precisa salvar a imagem extraída.
ImageIO.write(image, "JPEG", new File("C:/PdfBox_Examples/myimage.jpg"));
Etapa 5: Fechando o Documento
Finalmente, feche o documento usando o close() método da classe PDDocument conforme mostrado abaixo.
document.close();
Exemplo
Suponha que temos um documento PDF - sample.pdf no caminho C:\PdfBox_Examples\ e contém uma imagem em sua primeira página, conforme mostrado abaixo.
Este exemplo demonstra como converter o documento PDF acima em um arquivo de imagem. Aqui, vamos recuperar a imagem da 1ª página do documento PDF e salvá-la comomyimage.jpg. Salve este código comoPdfToImage.java
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
public class PdfToImage {
public static void main(String args[]) throws Exception {
//Loading an existing PDF document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Instantiating the PDFRenderer class
PDFRenderer renderer = new PDFRenderer(document);
//Rendering an image from the PDF document
BufferedImage image = renderer.renderImage(0);
//Writing the image to a file
ImageIO.write(image, "JPEG", new File("C:/PdfBox_Examples/myimage.jpg"));
System.out.println("Image created");
//Closing the document
document.close();
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os comandos a seguir.
javac PdfToImage.java
java PdfToImage
Após a execução, o programa acima recupera a imagem no documento PDF fornecido exibindo a seguinte mensagem.
Image created
Se você verificar o caminho fornecido, pode observar que a imagem é gerada e salva como myimage.jpg como mostrado abaixo.
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ços para o retângulo usando o setNonStrokingColor() método da aula PDPageContentStream. Para este método, você precisa passar a cor necessária 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.