iText - 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. 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. Usando 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.
PDF Box- 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.
Jasper Reports - 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 é o iText?
Semelhante ao software listado acima, o iText é uma biblioteca Java PDF com a qual você pode desenvolver programas Java que criam, convertem e manipulam documentos PDF.
Recursos do iText
A seguir estão os recursos notáveis da biblioteca iText -
Interactive- O iText fornece classes (APIs) para gerar documentos PDF interativos. Usando isso, você pode criar mapas e livros.
Adding bookmarks, page numbers, etc - Usando o iText, você pode adicionar marcadores, números de página e marcas d'água.
Split & Merge - Usando o iText, você pode dividir um PDF existente em vários PDFs e também adicionar / concatenar páginas adicionais a ele.
Fill Forms - Usando o iText, você pode preencher formulários interativos em um documento PDF.
Save as Image - Usando o iText, você pode salvar PDFs como arquivos de imagem, como PNG ou JPEG.
Canvas - A biblioteca iText fornece uma classe Canvas com a qual você pode desenhar várias formas geométricas em um documento PDF, como círculo, linha, etc.
Create PDFs- Usando o iText, você pode criar um novo arquivo PDF a partir de seus programas Java. Você pode incluir imagens e fontes também.
Ambiente IText
Siga as etapas fornecidas abaixo para definir o ambiente do iText no Eclipse.
Step 1 - Instale o Eclipse e abra um novo projeto como mostrado abaixo.
Step 2 - Crie um iTextSample projeto como mostrado abaixo.
Step 3- Clique com o botão direito do mouse no projeto e converta-o em um projeto Maven conforme mostrado abaixo. Depois de convertê-lo em projeto Maven, ele lhe dará umpom.xmlonde você precisa mencionar as dependências necessárias. Depois disso, ojar os arquivos dessas dependências serão baixados automaticamente para o seu projeto.
Step 4 - Agora, no pom.xml do projeto, copie e cole o seguinte conteúdo (dependências para o aplicativo iText) e atualize o projeto.
Using pom.xml
Converta o projeto em projeto Maven e adicione o seguinte conteúdo ao seu pom.xml.
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>SanthoshExample</groupId>
<artifactId>SanthoshExample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- always needed -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>kernel</artifactId>
<version>7.0.2</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>io</artifactId>
<version>7.0.2</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>layout</artifactId>
<version>7.0.2</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>forms</artifactId>
<version>7.0.2</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>pdfa</artifactId>
<version>7.0.2</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>sign</artifactId>
<version>7.0.2</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>barcodes</artifactId>
<version>7.0.2</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>font-asian</artifactId>
<version>7.0.2</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>hyph</artifactId>
<version>7.0.2</version>
</dependency>
</dependencies>
</project>
Finalmente, se você observar as dependências do Maven, poderá observar que todos os jar arquivos foram baixados.
Vamos agora entender como criar um documento PDF usando a biblioteca iText.
Criação de um documento PDF vazio
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocument objeto como um parâmetro para seu construtor.
A seguir estão as etapas para criar um documento PDF vazio.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o Doc Writer para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/sample.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie a classe PdfDocument passando o objeto PdfWriter criado acima para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: adicionar uma página vazia
o addNewPage() método do PdfDocument classe é usada para criar uma página vazia no documento PDF.
Adicione uma página vazia ao documento PDF criado na etapa anterior, conforme mostrado abaixo.
// Adding an empty page
pdfDoc.addNewPage();
Etapa 4: Criando um objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classe PdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 5: Fechando o Documento
Feche o documento usando o close() método do Document classe como mostrado abaixo.
// Closing the document
document.close();
Exemplo
A seguir está o programa Java que demonstra a criação de um documento PDF. Ele cria um documento PDF com o nomesample.pdf, adiciona uma página vazia a ele e a salva no caminho C:/itextExamples/
Salve este código em um arquivo com o nome create_PDF.java.
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
public class create_PDF {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter
String dest = "C:/itextExamples/sample.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
// Adding a new page
pdfDoc.addNewPage();
// Creating a Document
Document document = new Document(pdfDoc);
// Closing the document
document.close();
System.out.println("PDF Created");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac create_PDF.java
java create_PDF
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.
Por se tratar de um documento vazio, se você tentar abri-lo, será exibida uma mensagem de erro, conforme mostrado na imagem a seguir.
Neste capítulo, veremos como criar um documento PDF com AreaBreak usando a biblioteca iText.
Criando um AreaBreak
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocumentobjeto como um parâmetro, para seu construtor. Então, para adicionar uma quebra de área ao documento, você precisa instanciar oAreaBreak classe e add este objeto para documentar usando o add() método.
A seguir estão as etapas para criar um documento PDF vazio com AreaBreak.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriter classe representa o Doc Writer para um PDF, esta classe pertence ao pacote com.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string que representa o caminho onde você precisa criar um PDF, para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/addingAreaBreak.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocument classe é a classe que representa o documento PDF no iText, esta classe pertence ao pacote com.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita) você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie a classe PdfDocument passando o objeto PdfWriter criado acima para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Uma vez que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo, manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criando um objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classe PdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores, conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criação de um objeto de quebra de área
o AreaBreak classe pertence ao pacote com.itextpdf.layout.element. Ao instanciar esta classe, a área de contexto atual será encerrada e uma nova será criada com o mesmo tamanho (no caso de usarmos o construtor padrão).
Instancie o AreaBreak classe como mostrado abaixo.
// Creating an Area Break
AreaBreak aB = new AreaBreak();
Etapa 5: Adicionando AreaBreak
Adicione o areabreak objeto criado na etapa anterior usando o add() método da classe Document, conforme mostrado abaixo.
// Adding area break to the PDF
document.add(aB);
Etapa 6: Fechando o Documento
Feche o documento usando o close() método do Document classe como mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como criar um documento PDF com AreaBreak usando a biblioteca iText. Ele cria um documento PDF com o nomeaddingAreaBreak.pdf, adiciona um areabreak para ele, e salva no caminho C:/itextExamples/.
Salve este código em um arquivo com o nome AddingAreaBreak.java.
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.AreaBreak;
public class AddingAreaBreak {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter
String dest = "C:/itextExamples/addingAreaBreak.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument
PdfDocument pdf = new PdfDocument(writer);
// Creating a Document by passing PdfDocument object to its constructor
Document document = new Document(pdf);
// Creating an Area Break
AreaBreak aB = new AreaBreak();
// Adding area break to the PDF
document.add(aB);
// Closing the document
document.close();
System.out.println("Pdf created");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac AddingAreaBreak.java
java AddingAreaBreak
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.
Neste capítulo, veremos como criar um documento PDF e adicionar um parágrafo a ele usando a biblioteca iText.
Criando um Parágrafo
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocumentobjeto como um parâmetro, para seu construtor. Então, para adicionar um parágrafo ao documento, você precisa instanciar oParagraph classe e adicionar este objeto ao documento usando o add() método.
A seguir estão as etapas para criar um documento PDF com um parágrafo.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o Doc Writer para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/addingParagraph.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando o objeto deste tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criando um PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie a classe PdfDocument passando o objeto PdfWriter criado acima para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criando a classe Document
o Document classe do pacote com.itextpdf.layouté o elemento raiz. Ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classe PdfDocument.
Instancie a classe Document passando o objeto da classe PdfDocument criado nas etapas anteriores conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criação de um objeto de parágrafo
o Paragraphclasse representa um bloco independente de informações textuais e gráficas. Pertence ao pacotecom.itextpdf.layout.element.
Instancie o Paragraph passando o conteúdo do texto como uma string para seu construtor, conforme mostrado abaixo.
String para = "Welcome to Tutorialspoint.";
// Creating an Area Break
Paragraph para = new Paragraph (para);
Etapa 5: Adicionando Parágrafo
Adicione o Paragraph objeto criado na etapa anterior usando o add() método do Document classe, conforme mostrado abaixo.
// Adding area break to the PDF
document.add(para);
Etapa 6: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como criar um documento PDF e adicionar um parágrafo a ele usando a biblioteca iText. Ele cria um documento PDF com o nomeaddingParagraph.pdf, adiciona um parágrafo a ele e o salva no caminho C:/itextExamples/.
Salve este código em um arquivo com o nome AddingParagraph.java.
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
public class AddingParagraph {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter
String dest = "C:/itextExamples/addingParagraph.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument
PdfDocument pdf = new PdfDocument(writer);
// Creating a Document
Document document = new Document(pdf);
String para1 = "Tutorials Point originated from the idea that there exists
a class of readers who respond better to online content and prefer to learn
new skills at their own pace from the comforts of their drawing rooms.";
String para2 = "The journey commenced with a single tutorial on HTML in 2006
and elated by the response it generated, we worked our way to adding fresh
tutorials to our repository which now proudly flaunts a wealth of tutorials
and allied articles on topics ranging from programming languages to web designing
to academics and much more.";
// Creating Paragraphs
Paragraph paragraph1 = new Paragraph(para1);
Paragraph paragraph2 = new Paragraph(para2);
// Adding paragraphs to document
document.add(paragraph1);
document.add(paragraph2);
// Closing the document
document.close();
System.out.println("Paragraph added");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac AddingParagraph.java
java AddingParagraph
Após a execução, o programa acima cria um documento PDF, exibindo a seguinte mensagem.
Paragraph added
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado, conforme mostrado abaixo.
Neste capítulo, veremos como criar um documento PDF e adicionar uma lista a ele usando a biblioteca iText.
Criação de uma lista
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocumentobjeto como um parâmetro, para seu construtor. Então, para adicionar uma lista ao documento, você precisa instanciar oList classe e adicionar este objeto ao documento usando o add() método.
A seguir estão as etapas para criar um documento PDF e adicionar uma lista a ele.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/addingList.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando o objeto deste tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocument classe é a classe que representa o documento PDF no iText, esta classe pertence ao pacote com.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie a classe PdfDocument passando o objeto PdfWriter criado acima para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classe PdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores, conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criação de um objeto Lista
o Listclasse representa uma série de objetos que são contornados verticalmente. Pertence ao pacotecom.itextpdf.layout.element.
Instancie o List classe como mostrado abaixo.
// Creating a list
List list = new List();
Etapa 5: adicionar elementos à lista
Adicione conteúdo ao list objeto usando o add() método do List classe passando valores String, conforme mostrado abaixo.
// Add elements to the list
list.add("Java");
list.add("JavaFX");
list.add("Apache Tika");
list.add("OpenCV");
Etapa 6: Adicionando lista ao documento
Adicione o list objeto criado na etapa anterior usando o add() método do Document classe, conforme mostrado abaixo.
// Adding list to the document
document.add(list);
Etapa 7: Fechando o Documento
Feche o documento usando o close() método do Document classe como mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como criar um documento PDF e adicionar uma lista a ele usando a biblioteca iText. Ele cria um documento PDF com o nomeaddingList.pdf, adiciona uma lista a ele e salva no caminho C:/itextExamples/.
Salve este código em um arquivo com o nome AddingList.java.
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.List;
import com.itextpdf.layout.element.Paragraph;
public class AddingList {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter
String dest = "C:/itextExamples/addngList.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument
PdfDocument pdf = new PdfDocument(writer);
// Creating a Document
Document document = new Document(pdf);
// Creating a Paragraph
Paragraph paragraph = new Paragraph("Tutorials Point provides the following tutorials");
// Creating a list
List list = new List();
// Add elements to the list
list.add("Java");
list.add("JavaFX");
list.add("Apache Tika");
list.add("OpenCV");
list.add("WebGL");
list.add("Coffee Script");
list.add("Java RMI");
list.add("Apache Pig");
// Adding paragraph to the document
document.add(paragraph);
// Adding list to the document
document.add(list);
// Closing the document
document.close();
System.out.println("List added");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac AddingList.java
java AddingList
Após a execução, o programa acima cria um documento PDF, exibindo a seguinte mensagem.
List added
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado, conforme mostrado abaixo.
Neste capítulo, veremos como criar um documento PDF e adicionar uma tabela a ele usando a biblioteca iText.
Adicionando uma Tabela a um Pdf
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocumentobjeto como um parâmetro para seu construtor. Então, para adicionar uma tabela ao documento, você precisa instanciar oTable classe e adicionar este objeto ao documento usando o add() método.
A seguir estão as etapas para criar um documento PDF com uma tabela.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie o PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, como mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/addingTable.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando o objeto deste tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie a classe PdfDocument passando o objeto PdfWriter criado acima para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classePdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores, conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criando um objeto Tabela
o Tableclasse representa uma grade bidimensional preenchida com células ordenadas em linhas e colunas. Pertence ao pacotecom.itextpdf.layout.element.
Instancie o Table classe como mostrado abaixo.
// Creating a table object
float [] pointColumnWidths = {150F, 150F, 150F};
Table table = new Table(pointColumnWidths);
Etapa 5: Adicionar células à tabela
Criar uma cell objeto instanciando o Cell classe do pacote com.itextpdf.layout.element. Adicione o conteúdo da célula usando oadd() método desta classe.
Finalmente, para adicionar esta célula à tabela, chame o addCell() método do Table classe e passar no cell objeto como parâmetro para este método, conforme mostrado a seguir.
// Adding cell 1 to the table
Cell cell1 = new Cell(); // Creating a cell
cell1.add("Name"); // Adding content to the cell
table.addCell(cell1); // Adding cell to the table
// Adding cell 2 to the table Cell
cell2 = new Cell(); // Creating a cell
cell2.add("Raju"); // Adding content to the cell
table.addCell(cell2); // Adding cell to the table
Etapa 6: Adicionar tabela ao documento
Adicione o table objeto criado na etapa anterior usando o add() método do Document classe como mostrado abaixo.
// Adding list to the document
document.add(table);
Etapa 7: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como criar um documento PDF e adicionar uma tabela a ele usando a biblioteca iText. Ele cria um documento PDF com o nomeaddingTable.pdf, adiciona uma tabela a ele e salva no caminho C:/itextExamples/
Salve este código em um arquivo com o nome AddingTable.java.
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Table;
public class AddingTable {
public static void main(String args[]) throws Exception {
// Creating a PdfDocument object
String dest = "C:/itextExamples/addingTable.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument object
PdfDocument pdf = new PdfDocument(writer);
// Creating a Document object
Document doc = new Document(pdf);
// Creating a table
float [] pointColumnWidths = {150F, 150F, 150F};
Table table = new Table(pointColumnWidths);
// Adding cells to the table
table.addCell(new Cell().add("Name"));
table.addCell(new Cell().add("Raju"));
table.addCell(new Cell().add("Id"));
table.addCell(new Cell().add("1001"));
table.addCell(new Cell().add("Designation"));
table.addCell(new Cell().add("Programmer"));
// Adding Table to document
doc.add(table);
// Closing the document
doc.close();
System.out.println("Table created successfully..");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac AddingTable.java
java AddingTable
Após a execução, o programa acima cria um documento PDF, exibindo a seguinte mensagem.
Table created successfully..
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado, conforme mostrado abaixo.
Neste capítulo, veremos como criar um documento PDF e adicionar uma tabela e formatar o conteúdo de uma célula na tabela usando a biblioteca iText.
Formatando as células em uma tabela
Você pode criar um PDF vazio Documentinstanciando a classe Document. Ao instanciar esta classe, você precisa passar por umPdfDocumentobjeto como um parâmetro, para seu construtor. Então, para adicionar uma tabela ao documento, você precisa instanciar oTable classe e adicionar este objeto ao documento usando o add()método. Você pode formatar o conteúdo de uma célula em uma tabela usando os métodos doCell classe.
A seguir estão as etapas para formatar o conteúdo de uma célula em uma tabela.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/addingBackground.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o PDFDocument no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie o PdfDocument classe passando o criado acima PdfWriter objeto ao seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Uma vez por PdfDocument objeto é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classe PdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores, conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criando um objeto Tabela
o Tableclasse representa uma grade bidimensional preenchida com células, ordenadas em linhas e colunas. Pertence ao pacotecom.itextpdf.layout.element.
Instancie a classe Table conforme mostrado abaixo.
// Creating a table
float [] pointColumnWidths = {200F, 200F};
Table table = new Table(pointColumnWidths);
Etapa 5: Criação de células
Criar uma cell objeto instanciando o Cell classe do pacote com.itextpdf.layout.element. Adicione o conteúdo da célula usando oadd() método do Cell classe, conforme mostrado abaixo.
// Adding cell 1 to the table
Cell cell1 = new Cell(); // Creating a cell
cell1.add("Name"); // Adding content to the cell
// Adding cell 2 to the table
Cell cell2 = new Cell(); // Creating a cell
cell2.add("Raju"); // Adding content to the cell
Etapa 6: Adicionar plano de fundo à célula
Depois de criar a célula e adicionar conteúdo a ela, você pode formatar a célula. Por exemplo, você pode definir seu plano de fundo, alinhar o texto dentro da célula, alterar a cor do texto, etc., usando diferentes métodos da classe de célula, comosetBackgroundColor(), setBorder(), setTextAlignment().
Você pode definir a cor de fundo, a borda e o alinhamento do texto para a célula criada na etapa anterior, conforme mostrado abaixo.
c1.setBackgroundColor(Color.DARK_GRAY); // Setting background color to cell1
c1.setBorder(Border.NO_BORDER); // Setting border to cell1
c1.setTextAlignment(TextAlignment.CENTER); // Setting text alignment to cell1
Etapa 7: Adicionar célula à tabela
Finalmente, para adicionar esta célula à tabela, chame o addCell() método do Table classe e passar no cell objeto como parâmetro para este método, conforme mostrado a seguir.
table.addCell(c1);
Etapa 8: Adicionando tabela ao documento
Adicione o table objeto criado na etapa anterior usando o add() método do Document classe como mostrado abaixo.
// Adding list to the document
document.add(table);
Etapa 9: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como formatar o conteúdo de uma célula em uma tabela usando a biblioteca iText. Ele cria um documento PDF com o nomeaddingBackground.pdf, adiciona uma tabela a ele, formata o conteúdo de suas células e o salva no caminho C:/itextExamples/
Salve este código em um arquivo com o nome BackgroundToTable.java.
import com.itextpdf.kernel.color.Color;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.border.Border;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.property.TextAlignment;
public class BackgroundToTable {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter object
String dest = "C:/itextExamples/addingBackground.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument object
PdfDocument pdfDoc = new PdfDocument(writer);
// Creating a Document object
Document doc = new Document(pdfDoc);
// Creating a table
float [] pointColumnWidths = {200F, 200F};
Table table = new Table(pointColumnWidths);
// Populating row 1 and adding it to the table
Cell c1 = new Cell(); // Creating cell 1
c1.add("Name"); // Adding name to cell 1
c1.setBackgroundColor(Color.DARK_GRAY); // Setting background color
c1.setBorder(Border.NO_BORDER); // Setting border
c1.setTextAlignment(TextAlignment.CENTER); // Setting text alignment
table.addCell(c1); // Adding cell 1 to the table
Cell c2 = new
Cell();
c2.add("Raju");
c2.setBackgroundColor(Color.GRAY);
c2.setBorder(Border.NO_BORDER);
c2.setTextAlignment(TextAlignment.CENTER);
table.addCell(c2);
// Populating row 2 and adding it to the table
Cell c3 = new Cell();
c3.add("Id");
c3.setBackgroundColor(Color.WHITE);
c3.setBorder(Border.NO_BORDER);
c3.setTextAlignment(TextAlignment.CENTER);
table.addCell(c3);
Cell c4 = new Cell();
c4.add("001");
c4.setBackgroundColor(Color.WHITE);
c4.setBorder(Border.NO_BORDER);
c4.setTextAlignment(TextAlignment.CENTER);
table.addCell(c4);
// Populating row 3 and adding it to the table
Cell c5 = new Cell();
c5.add("Designation");
c5.setBackgroundColor(Color.DARK_GRAY);
c5.setBorder(Border.NO_BORDER);
c5.setTextAlignment(TextAlignment.CENTER);
table.addCell(c5);
Cell c6 = new Cell();
c6.add("Programmer");
c6.setBackgroundColor(Color.GRAY);
c6.setBorder(Border.NO_BORDER);
c6.setTextAlignment(TextAlignment.CENTER);
table.addCell(c6);
// Adding Table to document
doc.add(table);
// Closing the document
doc.close();
System.out.println("Background added successfully..");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac BackgroundToTable.java
java BackgroundToTable
Após a execução, o programa acima cria um documento PDF, exibindo a seguinte mensagem.
Background added successfully..
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado, conforme mostrado abaixo.
Neste capítulo, veremos como formatar as bordas de uma célula em uma tabela usando a biblioteca iText.
Formatando as bordas de uma célula
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocument objeto como um parâmetro para seu construtor.
Então, para adicionar uma tabela ao documento, você precisa instanciar o Table classe e adicionar este objeto ao documento usando o add() método.
Você pode adicionar vários tipos de bordas, como DashedBorder, SolidBorder, DottedBorder, DoubleBorder, RoundDotsBorder, etc. com várias cores usando o setBorder() método do Cell classe.
A seguir estão as etapas para formatar as bordas de uma célula em uma tabela.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/coloredBorders.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o PDFDocument no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie o PdfDocument classe passando o criado acima PdfWriter objeto ao seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classe PdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores, conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criando um objeto Tabela
o Tableclasse representa uma grade bidimensional preenchida com células ordenadas em linhas e colunas. Pertence ao pacotecom.itextpdf.layout.element.
Instancie o Table classe como mostrado abaixo.
// Creating a table
float [] pointColumnWidths = {200F, 200F};
Table table = new Table(pointColumnWidths);
Etapa 5: Criação de células
Crie um objeto de célula instanciando o Cell classe do pacote com.itextpdf.layout.element adicione o conteúdo da célula usando o add() método do Cell classe, conforme mostrado abaixo.
// Adding cell 1 to the table
Cell cell1 = new Cell(); // Creating a cell
cell1.add("Name"); // Adding content to the cell
Etapa 6: formatar a borda da célula
A biblioteca iText oferece várias classes que representam a fronteira, como DashedBorder, SolidBorder, DottedBorder, DoubleBorder, RoundDotsBorderetc.
Os construtores dessas classes aceitam dois parâmetros: a color objeto que representa a cor da borda e um integer representando a largura da borda.
Escolha um desses tipos de borda e instancie a respectiva borda passando o color objeto e um integer representando a largura, conforme mostrado abaixo.
Border b1 = new DashedBorder(Color.RED, 3);
Agora, defina a borda da célula usando o setBorder() método do cellclasse. Este método aceita um objeto do tipoBorder como um parâmetro.
Defina a borda da célula passando o criado acima Border objeto como um parâmetro para o setBorder() método conforme mostrado abaixo.
c1.setBorder(b1)
Finalmente, para adicionar esta célula à tabela, chame o addCell() método do Table classe e passar no cell objeto como parâmetro para este método, conforme mostrado a seguir.
table.addCell(c1);
Etapa 7: Adicionar tabela ao documento
Adicione o table objeto criado na etapa anterior usando o add() método do Document classe, conforme mostrado abaixo.
// Adding list to the document
document.add(table);
Etapa 8: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como formatar a borda de uma célula em uma tabela usando a biblioteca iText. Ele cria um documento PDF com o nomecoloredBorders.pdf, adiciona uma tabela a ele, formata o conteúdo de suas células e o salva no caminho C:/itextExamples/
Salve este código em um arquivo com o nome FormatedBorders.java.
import com.itextpdf.kernel.color.Color;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.border.Border;
import com.itextpdf.layout.border.DashedBorder;
import com.itextpdf.layout.border.DottedBorder;
import com.itextpdf.layout.border.DoubleBorder;
import com.itextpdf.layout.border.RoundDotsBorder;
import com.itextpdf.layout.border.SolidBorder;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.property.TextAlignment;
public class FormatedBorders {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter object
String dest = "C:/itextExamples/coloredBorders.pdf";
PdfWriter writer = new
PdfWriter(dest);
// Creating a PdfDocument object
PdfDocument pdfDoc = new PdfDocument(writer);
// Creating a Document object
Document doc = new Document(pdfDoc);
// Creating a table
float [] pointColumnWidths = {200F, 200F};
Table table = new Table(pointColumnWidths);
// Adding row 1 to the table
Cell c1 = new Cell();
// Adding the contents of the cell
c1.add("Name");
// Setting the back ground color of the cell
c1.setBackgroundColor(Color.DARK_GRAY);
// Instantiating the Border class
Border b1 = new DashedBorder(Color.RED, 3);
// Setting the border of the cell
c1.setBorder(b1);
// Setting the text alignment
c1.setTextAlignment(TextAlignment.CENTER);
// Adding the cell to the table
table.addCell(c1);
Cell c2 = new Cell();
c2.add("Raju");
c1.setBorder(new SolidBorder(Color.RED, 3));
c2.setTextAlignment(TextAlignment.CENTER);
table.addCell(c2);
// Adding row 2 to the table
Cell c3 = new Cell();
c3.add("Id");
c3.setBorder(new DottedBorder(Color.DARK_GRAY, 3));
c3.setTextAlignment(TextAlignment.CENTER);
table.addCell(c3);
Cell c4 = new Cell();
c4.add("001");
c4.setBorder(new DoubleBorder(Color.DARK_GRAY, 3));
c4.setTextAlignment(TextAlignment.CENTER);
table.addCell(c4);
// Adding row 3 to the table
Cell c5 = new Cell();
c5.add("Designation");
c5.setBorder(new RoundDotsBorder(Color.RED, 3));
c5.setTextAlignment(TextAlignment.CENTER);
table.addCell(c5);
Cell c6 = new Cell();
c6.add("Programmer");
c6.setBorder(new RoundDotsBorder(Color.RED, 3));
c6.setTextAlignment(TextAlignment.CENTER);
table.addCell(c6);
// Adding Table to document
doc.add(table);
// Closing the document
doc.close();
System.out.println("Borders added successfully..");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac FormatedBorders.java
java FormatedBorders
Após a execução, o programa acima cria um documento PDF, exibindo a seguinte mensagem.
Borders added successfully
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado, conforme mostrado abaixo.
Neste capítulo, veremos como adicionar uma imagem a uma tabela em um documento PDF usando a biblioteca iText.
Adicionar uma imagem a uma mesa
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocumentobjeto como um parâmetro, para seu construtor. Então, para adicionar uma tabela ao documento, você precisa instanciar oTable classe e adicionar este objeto ao documento usando o add() método.
Para adicionar uma imagem a esta tabela, você precisa instanciar o Cell classe, crie e um objeto da imagem que deve ser adicionado, adicione a imagem ao cell objeto usando o add() método do Cell classe.
A seguir estão as etapas para inserir uma imagem na célula de uma tabela.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriter classe representa o Doc Writer para um PDF, esta classe pertence ao pacote com.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string que representa o caminho onde você precisa criar um PDF, para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/addingImage.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie o PdfDocument passando o objeto PdfWriter criado acima para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classePdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores, conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criando um objeto Tabela
o Tableclasse representa uma grade bidimensional preenchida com células, ordenadas em linhas e colunas. Pertence ao pacotecom.itextpdf.layout.element.
Instancie o Table classe como mostrado abaixo.
// Creating a table
float [] pointColumnWidths = {200F, 200F};
Table table = new Table(pointColumnWidths);
Etapa 5: Criação da célula
Criar uma cell objeto instanciando o Cell classe do pacote com.itextpdf.layout, como mostrado abaixo.
// Adding cell to the table
Cell cell = new Cell(); // Creating a cell
Etapa 6: Criação de uma imagem
Para criar o image objeto, em primeiro lugar, crie um ImageData objeto usando o create() método do ImageDataFactoryclasse. Como parâmetro deste método, passe um parâmetro string que representa o caminho da imagem, conforme mostrado abaixo.
// Creating an ImageData object
String imageFile = "C:/itextExamples/javafxLogo.jpg";
ImageData data = ImageDataFactory.create(imageFile);
Agora, instancie o Image classe do com.itextpdf.layout.elementpacote. Durante a instanciação, passe oImageData objeto criado acima, como parâmetro para seu construtor, conforme mostrado a seguir.
// Creating an Image object
Image img = new Image(data);
Adicione o image objeto para a célula usando o add() método da classe de célula, conforme mostrado abaixo.
// Adding image to the cell
cell.add(img.setAutoScale(true));
Etapa 7: Adicionar célula à tabela
Finalmente, para adicionar esta célula à tabela, chame o addCell() método do Table classe e passar no cell objeto como parâmetro para este método, conforme mostrado a seguir.
table.addCell(cell);
Etapa 8: Adicionando tabela ao documento
Adicione o table objeto criado na etapa anterior usando o add() método do Document classe, conforme mostrado abaixo.
// Adding list to the document
document.add(table);
Etapa 9: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como adicionar uma imagem a uma célula de uma tabela em um documento PDF usando a biblioteca iText. Ele cria um documento PDF com o nomeaddingImage.pdf, adiciona uma tabela a ele, insere uma imagem (javafxLogo.jpg) em uma de suas células e a salva no caminho C:/itextExamples/.
Salve este código em um arquivo com o nome AddingImageToTable.java.
import com.itextpdf.io.image.ImageData;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Image;
import com.itextpdf.layout.element.Table;
public class a3AddingImageToTable {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter object
String dest = "C:/itextExamples/addingImage.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument object
PdfDocument pdfDoc = new PdfDocument(writer);
// Creating a Document object
Document doc = new Document(pdfDoc);
// Creating a table
float [] pointColumnWidths = {150f, 150f};
Table table = new Table(pointColumnWidths);
// Populating row 1 and adding it to the table
Cell cell1 = new Cell();
cell1.add("Tutorial ID");
table.addCell(cell1);
Cell cell2 = new Cell();
cell2.add("1");
table.addCell(cell2);
// Populating row 2 and adding it to the table
Cell cell3 = new Cell();
cell3.add("Tutorial Title");
table.addCell(cell3);
Cell cell4 = new Cell();
cell4.add("JavaFX");
table.addCell(cell4);
// Populating row 3 and adding it to the table
Cell cell5 = new Cell();
cell5.add("Tutorial Author");
table.addCell(cell5);
Cell cell6 = new Cell();
cell6.add("Krishna Kasyap");
table.addCell(cell6);
// Populating row 4 and adding it to the table
Cell cell7 = new Cell();
cell7.add("Submission date");
table.addCell(cell7);
Cell cell8 = new Cell();
cell8.add("2016-07-06");
table.addCell(cell8);
// Populating row 5 and adding it to the table
Cell cell9 = new Cell();
cell9.add("Tutorial Icon");
table.addCell(cell9);
// Creating the cell10
Cell cell10 = new Cell();
// Creating an ImageData object
String imageFile = "C:/itextExamples/javafxLogo.jpg";
ImageData data = ImageDataFactory.create(imageFile);
// Creating the image
Image img = new Image(data);
// Adding image to the cell10
cell10.add(img.setAutoScale(true));
// Adding cell110 to the table
table.addCell(cell10);
// Adding Table to document
doc.add(table);
// Closing the document
doc.close();
System.out.println("Image added to table successfully..");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac AddingImageToTable.java
java AddingImageToTable
Após a execução, o programa acima cria um documento PDF, exibindo a seguinte mensagem.
Image added to table successfully..
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado, conforme mostrado abaixo.
Neste capítulo, veremos como adicionar uma tabela aninhada a uma tabela em um documento PDF usando a biblioteca iText.
Adicionando tabelas aninhadas em um PDF
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocumentobjeto como um parâmetro, para seu construtor. Então, para adicionar uma tabela ao documento, você precisa instanciar oTable classe e adicionar este objeto ao documento usando o add() método.
Para adicionar uma tabela a esta tabela, você precisa criar outra tabela (tabela aninhada) e passá-la para o objeto de célula usando o add() método do Cell classe.
A seguir estão as etapas para inserir uma tabela na célula de uma tabela.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/addingNestedTable.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classe PdfWriter para seu construtor.
Instancie a classe PdfDocument passando o objeto PdfWriter criado acima para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classe PdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores, conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criando um objeto Tabela
o Tableclasse representa uma grade bidimensional preenchida com células, ordenadas em linhas e colunas. Pertence ao pacotecom.itextpdf.layout.element.
Instancie o Table classe como mostrado abaixo.
// Creating a table
float [] pointColumnWidths = {200F, 200F};
Table table = new Table(pointColumnWidths);
Etapa 5: Criação da célula
Criar uma cell objeto instanciando o Cell classe do pacote com.itextpdf.layout, como mostrado abaixo.
// Adding cell to the table
Cell contact = new Cell(); // Creating a cell
Etapa 6: Criação de tabela aninhada
Depois de criar o cell, crie uma tabela aninhada e preencha suas células, conforme mostrado abaixo.
// Creating nested table for contact
float [] pointColumnWidths2 = {150f, 150f};
Table nestedTable = new Table(pointColumnWidths2);
// Populating row 1 and adding it to the nested table
Cell nested1 = new Cell();
nested1.add("Phone");
nestedTable.addCell(nested1);
Cell nested2 = new Cell();
nested2.add("9848022338");
nestedTable.addCell(nested2);
// Populating row 2 and adding it to the nested table
Cell nested3 = new Cell();
nested3.add("email");
nestedTable.addCell(nested3);
Cell nested4 = new Cell();
nested4.add("[email protected]");
nestedTable.addCell(nested4);
// Populating row 3 and adding it to the nested table
Cell nested5 = new Cell();
nested5.add("Address");
nestedTable.addCell(nested5);
Cell nested6 = new Cell();
nested6.add("Hyderabad");
nestedTable.addCell(nested6);
Etapa 7: Adicionar tabela aninhada à célula
Agora, adicione a tabela aninhada criada acima à célula da tabela pai (contêiner) usando o add() método do Cellclasse. E, adicione esta célula à tabela pai usando oaddCell() método do Table classe, conforme mostrado abaixo.
contact.add(nestedTable);
table.addCell(contact);
Etapa 8: Adicionando tabela ao documento
Adicione o table objeto criado na etapa anterior usando o add() método do Document classe, conforme mostrado abaixo.
// Adding list to the document
document.add(table);
Etapa 9: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como adicionar uma tabela a uma célula de uma tabela (tabela aninhada) em um documento PDF usando a biblioteca iText. Ele cria um documento PDF com o nomeaddingNestedTable.pdf, adiciona uma tabela a ele, insere outra tabela em uma de suas células e a salva no caminho C:/itextExamples/.
Salve este código em um arquivo com o nome AddNestedTable.java.
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Table;
public class a4AddNestedTablesPdf {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter object
String dest = "C:/itextExamples/addingNestedTable.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument object
PdfDocument pdfDoc = new PdfDocument(writer);
// Creating a Document object
Document doc = new Document(pdfDoc);
// Creating a table
float [] pointColumnWidths1 = {150f, 150f};
Table table = new Table(pointColumnWidths1);
// Populating row 1 and adding it to the table
Cell cell1 = new Cell();
cell1.add("Name");
table.addCell(cell1);
Cell cell2 = new Cell();
cell2.add("Raju");
table.addCell(cell2);
// Populating row 2 and adding it to the table
Cell cell3 = new Cell();
cell3.add("Id");
table.addCell(cell3);
Cell cell4 = new Cell();
cell4.add("1001");
table.addCell(cell4);
// Populating row 3 and adding it to the table
Cell cell5 = new Cell();
cell5.add("Designation");
table.addCell(cell5);
Cell cell6 = new Cell();
cell6.add("Programmer");
table.addCell(cell6);
// Creating nested table for contact
float [] pointColumnWidths2 = {150f, 150f};
Table nestedTable = new Table(pointColumnWidths2);
// Populating row 1 and adding it to the nested table
Cell nested1 = new Cell();
nested1.add("Phone");
nestedTable.addCell(nested1);
Cell nested2 = new Cell();
nested2.add("9848022338");
nestedTable.addCell(nested2);
// Populating row 2 and adding it to the nested table
Cell nested3 = new Cell();
nested3.add("email");
nestedTable.addCell(nested3);
Cell nested4 = new Cell();
nested4.add("[email protected]");
nestedTable.addCell(nested4);
// Populating row 3 and adding it to the nested table
Cell nested5 = new Cell();
nested5.add("Address");
nestedTable.addCell(nested5);
Cell nested6 = new Cell();
nested6.add("Hyderabad");
nestedTable.addCell(nested6);
// Adding table to the cell
Cell cell7 = new Cell();
cell7.add("Contact");
table.addCell(cell7);
Cell cell8 = new Cell();
cell8.add(nestedTable);
table.addCell(cell8);
// Adding table to the document
doc.add(table);
// Closing the document
doc.close();
System.out.println("Nested Table Added successfully..");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac AddNestedTable.java
java AddNestedTable
Após a execução, o programa acima cria um documento PDF exibindo a seguinte mensagem.
Nested Table Added successfully..
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado, conforme mostrado abaixo.
Neste capítulo, veremos como adicionar uma lista a uma tabela em um documento PDF usando a biblioteca iText.
Adicionar listas a uma tabela em um PDF
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocumentobjeto como um parâmetro para seu construtor. Então, para adicionar uma tabela ao documento, você precisa instanciar oTable classe e adicionar este objeto ao documento usando o add() método.
Para adicionar um list para a mesa, você precisa instanciar o List classe do com.itextpdf.layout.element pacote e insira-o no cell objeto usando o add() método do Cell classe.
A seguir estão as etapas para adicionar uma lista à célula de uma tabela.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o Doc Writer para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, conforme mostrado abaixo
// Creating a PdfWriter
String dest = "C:/itextExamples/addingObjects.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacote com.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie o PdfDocument passando o objeto PdfWriter criado acima para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classe PdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores, conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criando um objeto Tabela
o Tableclasse representa uma grade bidimensional preenchida com células, ordenadas em linhas e colunas. Pertence ao pacotecom.itextpdf.layout.element.
Instancie o Table classe como mostrado abaixo.
// Creating a table
float [] pointColumnWidths = {200F, 200F};
Table table = new Table(pointColumnWidths);
Etapa 5: Criação da célula
Criar uma cell objeto instanciando o Cell classe do pacote com.itextpdf.layout, como mostrado abaixo.
// Adding cell to the table
Cell listCell = new Cell(); // Creating a cell
Etapa 6: Criação do objeto Lista
Depois de criar a célula, crie um list objeto instanciando o List classe do pacote com.itextpdf.layout.element. Crie os itens da lista instanciando oListItem classe e adicionar os itens criados usando o add() método do List classe, conforme mostrado abaixo.
List list = new List();
ListItem item1 = new ListItem("JavaFX");
ListItem item2 = new ListItem("Java");
ListItem item3 = new ListItem("Java Servlets");
list.add(item1);
list.add(item2);
list.add(item3);
Etapa 7: Adicionar lista à célula de uma tabela
Agora, adicione a lista criada acima à célula da tabela usando o add()método da classe Cell. E, adicione esta célula à tabela usando oaddCell() método do Table classe, conforme mostrado abaixo.
listCell.add(list);
table.addCell(listCell);
Etapa 8: Adicionando tabela ao documento
Adicione o table objeto criado na etapa anterior usando o add() método do Document classe, conforme mostrado abaixo.
// Adding list to the document
document.add(table);
Etapa 9: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como adicionar uma lista a uma célula de uma tabela em um documento PDF usando a biblioteca iText. Ele cria um documento PDF com o nomeaddingObjects.pdf, adiciona uma tabela a ele, insere uma lista em uma de suas células e a salva no caminho C:/itextExamples/
Salve este código em um arquivo com o nome AddingListsToTable.java.
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.List;
import com.itextpdf.layout.element.ListItem;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.property.TextAlignment;
public class AddingListsToTable {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter object
String file = "C:/itextExamples/addingObjects.pdf";
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(file));
// Creating a Document object
Document doc = new Document(pdfDoc);
// Creating a table
float [] pointColumnWidths = {300F, 300F};
Table table = new Table(pointColumnWidths);
// Adding row 1 to the table
Cell c1 = new Cell();
c1.add("Java Related Tutorials");
c1.setTextAlignment(TextAlignment.LEFT);
table.addCell(c1);
List list1 = new List();
ListItem item1 = new ListItem("JavaFX");
ListItem item2 = new ListItem("Java");
ListItem item3 = new ListItem("Java Servlets");
list1.add(item1);
list1.add(item2);
list1.add(item3);
Cell c2 = new Cell();
c2.add(list1);
c2.setTextAlignment(TextAlignment.LEFT);
table.addCell(c2);
// Adding row 2 to the table
Cell c3 = new Cell();
c3.add("No SQL Databases");
c3.setTextAlignment(TextAlignment.LEFT);
table.addCell(c3);
List list2 = new List();
list2.add(new ListItem("HBase"));
list2.add(new ListItem("Neo4j"));
list2.add(new ListItem("MongoDB"));
Cell c4 = new Cell();
c4.add(list2);
c4.setTextAlignment(TextAlignment.LEFT);
table.addCell(c4);
// Adding Table to document
doc.add(table);
// Closing the document
doc.close();
System.out.println("Lists added to table successfully..");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac AddingListsToTable.java
java AddingListsToTable
Após a execução, o programa acima cria um documento PDF, exibindo a seguinte mensagem.
Lists added to table successfully..
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado, conforme mostrado abaixo.
Neste capítulo, veremos como adicionar uma imagem a um documento PDF usando a biblioteca iText.
Adicionar imagem a um PDF
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocumentobjeto como um parâmetro, para seu construtor. Para adicionar imagem ao PDF, crie um objeto da imagem que deve ser adicionado e adicione-o usando oadd() método do Document classe.
A seguir estão as etapas para adicionar uma imagem ao documento PDF.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/addingImage.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie a classe PdfDocument passando o objeto PdfWriter criado acima para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classe PdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores, conforme mostrado abaixo.
// Creating a Document Document
document = new Document(pdfDoc);
Etapa 4: Criando um objeto Image
Para criar o image objeto, em primeiro lugar, crie um ImageData objeto usando o create() método do ImageDataFactoryclasse. Como parâmetro deste método, passe um parâmetro string que representa o caminho da imagem, conforme mostrado abaixo.
// Creating an ImageData object
String imageFile = "C:/itextExamples/javafxLogo.jpg";
ImageData data = ImageDataFactory.create(imageFile);
Agora, instancie o Image classe do com.itextpdf.layout.elementpacote. Durante a instanciação, passe o criado acimaImageData objeto como parâmetro para seu construtor, conforme mostrado a seguir.
// Creating an Image object
Image img = new Image(data);
Etapa 5: Adicionar imagem ao documento
Adicione o objeto de imagem criado na etapa anterior usando o add() método do Document classe, conforme mostrado abaixo.
// Adding image to the document
document.add(img);
Etapa 6: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como adicionar uma imagem a um documento PDF usando a biblioteca iText. Ele cria um documento PDF com o nomeaddingImage.pdf, adiciona uma imagem a ele e salva no caminho C:/itextExamples/.
Salve este código em um arquivo com o nome AddingImage.java.
import com.itextpdf.io.image.ImageData;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Image;
public class AddingImage {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter
String dest = "C:/itextExamples/addingImage.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument
PdfDocument pdf = new PdfDocument(writer);
// Creating a Document
Document document = new Document(pdf);
// Creating an ImageData object
String imFile = "C:/itextExamples/logo.jpg";
ImageData data = ImageDataFactory.create(imFile);
// Creating an Image object
Image image = new Image(data);
// Adding image to the document
document.add(image);
// Closing the document
document.close();
System.out.println("Image added");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac AddingImage.java
java AddingImage
Após a execução, o programa acima cria um documento PDF exibindo a seguinte mensagem.
Image added
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado, conforme mostrado abaixo.
Neste capítulo, veremos como definir a posição de uma imagem em um documento PDF usando a biblioteca iText.
Definir a posição da imagem
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocument objeto como um parâmetro para seu construtor.
Para adicionar uma imagem ao pdf, crie um objeto da imagem que deve ser adicionado e adicione-o usando o add() método do Documentclasse. Você pode inserir a imagem na posição desejada no documento usando o métodosetFixedPosition() do Image classe.
A seguir estão as etapas para definir a posição de uma imagem no documento PDF.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/positionOfImage.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie a classe PdfDocument passando o objeto PdfWriter criado acima para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classe PdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores, conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criando um objeto Image
Para criar o objeto de imagem, em primeiro lugar, crie um ImageData objeto usando o create() método do ImageDataFactoryclasse. Como parâmetro deste método, passe um parâmetro string que representa o caminho da imagem, conforme mostrado abaixo.
// Creating an ImageData object
String imageFile = "C:/itextExamples/javafxLogo.jpg";
ImageData data = ImageDataFactory.create(imageFile);
Agora, instancie o Image classe do com.itextpdf.layout.elementpacote. Durante a instanciação, passe oImageData objeto como parâmetro para seu construtor, conforme mostrado a seguir.
// Creating an Image object
Image img = new Image(data);
Etapa 5: Definir a posição da imagem
Você pode definir a posição da imagem em um documento PDF usando o setFixedPosition()método da imagem. Defina a posição da imagem para as coordenadas (100, 250) no documento usando este método, conforme mostrado abaixo.
// Setting the position of the image to the center of the page
image.setFixedPosition(100, 250);
Etapa 6: Adicionar imagem ao documento
Agora, adicione o objeto de imagem, criado na etapa anterior, usando o add() método do Document classe, conforme mostrado abaixo.
// Adding image to the document
document.add(img);
Etapa 7: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como definir uma imagem em uma posição desejada em um documento PDF usando a biblioteca iText. Ele cria um documento PDF com o nomepositionOfImage.pdf, adiciona uma imagem a ele, define-o mais próximo do centro da página e salva no caminho C:/itextExamples/
Salve este código em um arquivo com o nome SettingPosition.java.
import com.itextpdf.io.image.ImageData;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Image;
public class SettingPosition {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter
String dest = "C:/EXAMPLES/itextExamples/3images/positionOfImage.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
// Creating a Document
Document document = new Document(pdfDoc);
// Creating an ImageData object
String imFile = "C:/EXAMPLES/itextExamples/3images/logo.jpg";
ImageData data = ImageDataFactory.create(imFile);
// Creating an Image object
Image image = new Image(data);
// Setting the position of the image to the center of the page
image.setFixedPosition(100, 250);
// Adding image to the document
document.add(image);
// Closing the document
document.close();
System.out.println("Image added");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os comandos a seguir.
javac SettingPosition.java
java SettingPosition
Após a execução, o programa acima cria um documento PDF, exibindo a seguinte mensagem.
Image added
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado conforme mostrado abaixo.
Neste capítulo, veremos como dimensionar uma imagem em um documento PDF usando a biblioteca iText.
Dimensionando uma imagem em um PDF
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocument objeto como um parâmetro para seu construtor.
Para adicionar imagem ao PDF, crie um objeto da imagem que deve ser adicionado e adicione-o usando o add() método do Documentclasse. Você pode dimensionar uma imagem usando osetAutoScale() método.
A seguir estão as etapas para dimensionar uma imagem existente no documento PDF.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/autoScale.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie o PdfDocument passando o objeto PdfWriter criado acima para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classe PdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores, conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criando um objeto Image
Para criar um objeto de imagem, em primeiro lugar, crie um ImageData objeto usando o create() método do ImageDataFactoryclasse. Como parâmetro deste método, passe um parâmetro string que representa o caminho da imagem, conforme mostrado abaixo.
// Creating an ImageData object
String imageFile = "C:/itextExamples/javafxLogo.jpg";
ImageData data = ImageDataFactory.create(imageFile);
Agora, instancie o Image classe do com.itextpdf.layout.elementpacote. Durante a instanciação, passe oImageData objeto como parâmetro para seu construtor, conforme mostrado a seguir.
// Creating an Image object
Image img = new Image(data);
Etapa 5: Dimensionamento de uma imagem
Você pode dimensionar uma imagem usando o setAutoScale() método.
// Setting the position of the image to the center of the page
image.setFixedPosition(100, 250);
Etapa 6: Adicionar imagem ao documento
Agora, adicione o image objeto criado na etapa anterior usando o add() método do Document classe, conforme mostrado abaixo.
// Adding image to the document
document.add(img);
Etapa 7: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como dimensionar uma imagem de acordo com o tamanho do documento em um documento PDF usando a biblioteca iText. Ele cria um documento PDF com o nomeautoScale.pdf, adiciona uma imagem a ele, dimensiona em relação às dimensões da página, salva no caminho C:/itextExamples/.
Salve este código em um arquivo com o nome SettingAutoScale.java.
import com.itextpdf.io.image.ImageData;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Image;
public class SettingAutoScale {
public static void main(String args[]) throws Exception{
// Creating a PdfWriter
String dest = "C:/itextExamples/positionOfImage.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
// Creating a Document
Document document = new Document(pdfDoc);
// Creating an ImageData object
String imFile = "C:/itextExamples/logo.jpg";
ImageData data = ImageDataFactory.create(imFile);
// Creating an Image object
Image image = new Image(data);
// Setting the position of the image to the center of the page
image.setFixedPosition(100,250);
// Adding image to the document
document.add(image);
// Closing the document
document.close();
System.out.println("Image Scaled");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os comandos a seguir.
javac SettingAutoScale.java
java SettingAutoScale
Após a execução, o programa acima cria um documento PDF exibindo a seguinte mensagem.
Image Scaled
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado conforme mostrado abaixo.
Neste capítulo, veremos como inserir uma imagem em um documento PDF e como girar essa imagem, usando as funções disponíveis na biblioteca iText.
Como girar uma imagem em um PDF
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocument objeto como um parâmetro para seu construtor.
Para adicionar imagem ao PDF, crie um objeto da imagem que deve ser adicionado e adicione-o usando o add() método do Documentclasse. Você pode girar uma imagem usando osetRotationAngle() método.
A seguir estão as etapas para girar uma imagem em um documento PDF.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/rotatingImage.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie a classe PdfDocument passando o objeto PdfWriter para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classe PdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores, conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criando um objeto Image
Para criar um objeto de imagem, em primeiro lugar, crie um ImageData objeto usando o create()método do ImageDataFactoryclasse. Como parâmetro deste método, passe um parâmetro string que representa o caminho da imagem, conforme mostrado abaixo.
// Creating an ImageData object
String imageFile = "C:/itextExamples/javafxLogo.jpg";
ImageData data = ImageDataFactory.create(imageFile);
Agora, instancie o Image classe do com.itextpdf.layout.elementpacote. Durante a instanciação, passe oImageData object, como um parâmetro para seu construtor, conforme mostrado abaixo.
// Creating an Image object
Image img = new Image(data);
Etapa 5: girar uma imagem
Você pode girar uma imagem usando o setRotationAngle()método. Para este método, você precisa passar um número inteiro que representa o ângulo de rotação pelo qual deseja girar a imagem.
// Rotating the image
image.setRotationAngle(45);
Etapa 6: Adicionar imagem ao documento
Agora, adicione o objeto de imagem criado na etapa anterior usando o add() método do Document classe, conforme mostrado abaixo.
// Adding image to the document
document.add(img);
Etapa 7: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como girar uma imagem em um determinado ângulo em um documento PDF usando a biblioteca iText.
Ele cria um documento PDF com o nome rotatingImage.pdf, adiciona uma imagem a ele, gira e salva no caminho C:/itextExamples/.
Salve este código em um arquivo com o nome RotatingImage.java.
import com.itextpdf.io.image.ImageData;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Image;
public class RotatingImage {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter
String dest = "C:/itextExamples/rotatingImage.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
// Creating a Document
Document document = new Document(pdfDoc);
// Creating an ImageData object
String imFile = "C:/itextExamples/logo.jpg";
ImageData data = ImageDataFactory.create(imFile);
// Creating an Image object
Image image = new Image(data);
// Rotating the image
image.setRotationAngle(45);
// Adding image to the document
document.add(image);
// Closing the document
document.close();
System.out.println("Image rotated");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac RotatingImage.java
java RotatingImage
Após a execução, o programa acima cria um documento PDF exibindo a seguinte mensagem.
Image Rotated
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado conforme mostrado abaixo.
Neste capítulo, veremos como adicionar anotações de texto a um documento PDF usando a biblioteca iText.
Criação de uma anotação de texto em um PDF
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocument objeto como um parâmetro para seu construtor.
Para usar anotações de texto em seu documento PDF, você precisa criar um objeto de PdfTextAnnotation classe e adicione isso ao PdfPage.
A seguir estão as etapas para usar anotações de texto no documento PDF.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/textAnnotation.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie o PdfDocument classe passando no PdfWriter objeto ao seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classePdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores, conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criação do objeto PdfAnnotation
o PdfAnnotation classe do pacote com.itextpdf.kernel.pdf.annot representa a superclasse de todas as anotações.
Entre suas classes derivadas, PdfTextAnnotationclasse representa a anotação de texto. Crie um objeto desta classe conforme mostrado abaixo.
// Creating PdfAnnotation
Rectangle rect = new Rectangle(20, 800, 0, 0);
PdfAnnotation ann = new PdfTextAnnotation(rect);
Etapa 5: definir a cor da anotação
Defina a cor da anotação usando o setColor() método do PdfAnnotationclasse. Para este método, passe ocolor objeto que representa a cor da anotação como um parâmetro.
// Setting color to the annotation
ann.setColor(Color.GREEN);
Etapa 6: definir o título e o conteúdo da anotação
Defina o título e o conteúdo da anotação usando o setTitle() e setContents() métodos do PdfAnnotation classe respectivamente, conforme mostrado abaixo.
// Setting title to the annotation
ann.setTitle(new PdfString("Hello"));
// Setting contents of the annotation
ann.setContents("Hi welcome to Tutorialspoint.");
Etapa 7: Adicionar a anotação a uma página
Crie um novo PdfPage classe usando o addNewPage() método da classe PdfDocument e adicione a anotação acima usando o addAnnotation() método de PdfPage classe, conforme mostrado abaixo.
// Creating a new page PdfPage page =
pdf.addNewPage();
// Adding annotation to a page in a PDF
page.addAnnotation(ann);
Etapa 8: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como adicionar anotações de texto a um documento PDF usando a biblioteca iText. Ele cria um documento PDF com o nometextAnnotation.pdf, adiciona uma anotação de texto e salva no caminho C:/itextExamples/
Salve este código em um arquivo com o nome TextAnnotation.java.
import com.itextpdf.kernel.color.Color;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfString;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.annot.PdfAnnotation;
import com.itextpdf.kernel.pdf.annot.PdfTextAnnotation;
import com.itextpdf.layout.Document;
public class TextAnnotation {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter
String dest = "C:/itextExamples/textAnnotation.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument
PdfDocument pdf = new PdfDocument(writer);
// Creating a Document
Document document = new Document(pdf);
// Creating PdfTextAnnotation object
Rectangle rect = new Rectangle(20, 800, 0, 0);
PdfAnnotation ann = new PdfTextAnnotation(rect);
// Setting color to the annotation
ann.setColor(Color.GREEN);
// Setting title to the annotation
ann.setTitle(new PdfString("Hello"));
// Setting contents of the annotation
ann.setContents("Hi welcome to Tutorialspoint.");
// Creating a new page
PdfPage page = pdf.addNewPage();
// Adding annotation to a page in a PDF
page.addAnnotation(ann);
// Closing the document
document.close();
System.out.println("Annotation added successfully");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os comandos a seguir.
javac TextAnnotation.java
java TextAnnotation
Após a execução, o programa acima cria um documento PDF exibindo a seguinte mensagem.
Annotation added successfully
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado, conforme mostrado abaixo.
Neste capítulo, veremos como adicionar anotação de link a um documento PDF usando a biblioteca iText.
Criação de uma anotação de link em um PDF
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocument objeto como um parâmetro para seu construtor.
Para usar anotações de texto em seu documento PDF, você precisa criar um objeto da classe PdfTextAnnotation e adicioná-lo à PdfPage.
A seguir estão as etapas para usar anotações de texto em um documento PDF.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie o PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, como mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/linkAnnotation.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie a classe PdfDocument passando o PdfWriter objeto ao seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classePdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criada nas etapas anteriores, conforme mostrado a seguir.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criação do objeto PdfAnnotation
o PdfAnnotation classe do pacote com.itextpdf.kernel.pdf.annot representa a superclasse de todas as anotações.
Entre suas classes derivadas, PdfLinkAnnotationclasse representa a anotação do link. Crie um objeto desta classe, conforme mostrado abaixo.
// Creating a PdfLinkAnnotation object
Rectangle rect = new Rectangle(0, 0);
PdfLinkAnnotation annotation = new PdfLinkAnnotation(rect);
Etapa 5: definir a ação da anotação
Defina a ação para a anotação usando o setAction() método do PdfLinkAnnotation classe, conforme mostrado abaixo.
// Setting action of the annotation
PdfAction action = PdfAction.createURI("http: // www.tutorialspoint.com/");
annotation.setAction(action);
Etapa 6: Criação de um link
Crie um link instanciando o Link classe do pacote com.itextpdf.layout.element, como mostrado abaixo.
// Creating a link
Link link = new Link("Click here", annotation);
Etapa 7: Adicionar a anotação do link a um parágrafo
Crie um novo parágrafo instanciando o Paragraph classe e adicione o link criado na etapa anterior usando o add() método desta classe, conforme mostrado abaixo.
// Creating a paragraph
Paragraph paragraph = new Paragraph("Hi welcome to Tutorialspoint ");
// Adding link to paragraph
paragraph.add(link.setUnderline());
Etapa 8: Adicionando parágrafo ao documento
Adicione o parágrafo ao documento usando o add() método do Document classe, conforme mostrado abaixo.
// Adding paragraph to document
document.add(paragraph);
Etapa 9: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como adicionar anotação de link a um documento PDF usando a biblioteca iText.
Ele cria um documento PDF com o nome linkAnnotation.pdf, adiciona uma anotação de link a ele e o salva no caminho C:/itextExamples/
Salve este código em um arquivo com o nome LinkAnnotation.java.
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.action.PdfAction;
import com.itextpdf.kernel.pdf.annot.PdfLinkAnnotation;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Link;
import com.itextpdf.layout.element.Paragraph;
public class LinkAnnotation {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter
String dest = "C:/itextExamples/linkAnnotation.pdf";
PdfWriter writer = new
PdfWriter(dest);
// Creating a PdfDocument
PdfDocument pdf = new PdfDocument(writer);
// Creating a Document
Document document = new Document(pdf);
// Creating a PdfLinkAnnotation object
Rectangle rect = new Rectangle(0, 0);
PdfLinkAnnotation annotation = new PdfLinkAnnotation(rect);
// Setting action of the annotation
PdfAction action = PdfAction.createURI("http:// www.tutorialspoint.com/");
annotation.setAction(action);
// Creating a link
Link link = new Link("Click here", annotation);
// Creating a paragraph
Paragraph paragraph = new Paragraph("Hi welcome to Tutorialspoint ");
// Adding link to paragraph
paragraph.add(link.setUnderline());
// Adding paragraph to document
document.add(paragraph);
// Closing the document
document.close();
System.out.println("Annotation added successfully");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac LinkAnnotation.java
java LinkAnnotation
Após a execução, o programa acima cria um documento PDF exibindo a seguinte mensagem.
Annotation added successfully
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado, conforme mostrado abaixo.
Neste capítulo, veremos como adicionar anotação de linha a um documento PDF usando a biblioteca iText.
Criação de uma anotação de linha em um PDF
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocument objeto como um parâmetro, para seu construtor.
Para usar anotações de texto em seu documento PDF, você precisa criar um objeto de PdfTextAnnotation classe e adicione isso ao PdfPage.
A seguir estão as etapas para usar anotações de texto no documento PDF.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string que representa o caminho onde você precisa criar um PDF, para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/lineAnnotation.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o PDFDocument no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie a classe PdfDocument passando o objeto PdfWriter para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Uma vez que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo, manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classePdfDocument.
Instancie a classe Document passando o objeto da classe PdfDocument criado nas etapas anteriores, conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criação do objeto PdfAnnotation
o PdfAnnotation classe do pacote com.itextpdf.kernel.pdf.annot representa é a superclasse de todas as anotações.
Entre suas classes derivadas, PdfLineAnnotationclasse representa a anotação de linha. Crie um objeto desta classe conforme mostrado abaixo.
// Creating PdfAnnotation
Rectangle rect = new Rectangle(20, 800, 0, 0);
PdfAnnotation annotation = new PdfLineAnnotation(rect);
Etapa 5: definir a cor da anotação
Defina a cor da anotação usando o setColor() método do PdfAnnotationclasse. Para este método, passe como parâmetro o objeto de cor que representa a cor da anotação.
// Setting color to the annotation
annotation.setColor(Color.BLUE);
Etapa 6: definir o título e o conteúdo da anotação
Defina o título e o conteúdo da anotação usando o setTitle() e setContents() métodos do PdfAnnotation classe respectivamente, conforme mostrado abaixo.
// Setting title to the PdfLineAnnotation
annotation.setTitle(new PdfString("iText"));
// Setting contents of the PdfLineAnnotation
annotation.setContents("Hi welcome to Tutorialspoint");
Etapa 7: Adicionar a anotação a uma página
Crie um novo PdfPage classe usando o addNewPage() método do PdfDocument e adicione a anotação criada acima usando o método addAnnotation () da classe PdfPage, conforme mostrado abaixo.
// Creating a new page
PdfPage page = pdf.addNewPage();
// Adding annotation to a page in a PDF
page.addAnnotation(annotation);
Etapa 8: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como adicionar anotações de linha a um documento PDF usando a biblioteca iText. Ele cria um documento PDF com o nomelineAnnotation.pdf, adiciona uma anotação de linha e salva no caminho C:/itextExamples/.
Salve este código em um arquivo com o nome LineAnnotation.java.
import com.itextpdf.kernel.color.Color;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfString;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.annot.PdfAnnotation;
import com.itextpdf.kernel.pdf.annot.PdfLineAnnotation;
import com.itextpdf.layout.Document;
public class LineAnnotation {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter
String dest = "C:/itextExamples/lineAnnotations.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument
PdfDocument pdf = new PdfDocument(writer);
// Creating a Document
Document document = new Document(pdf);
// Creating a PdfPage
PdfPage page = pdf.addNewPage();
// creating PdfLineAnnotation object
Rectangle rect = new Rectangle(0, 0);
float[] floatArray = new float[]{
20, 790, page.getPageSize().getWidth() - 20, 790
};
PdfAnnotation annotation = new PdfLineAnnotation(rect, floatArray);
// Setting color of the PdfLineAnnotation
annotation.setColor(Color.BLUE);
// Setting title to the PdfLineAnnotation
annotation.setTitle(new PdfString("iText"));
// Setting contents of the PdfLineAnnotation
annotation.setContents("Hi welcome to Tutorialspoint");
// Adding annotation to the page
page.addAnnotation(annotation);
// Closing the document
document.close();
System.out.println("Annotation added successfully");
}
}
Compile e execute o arquivo Java salvo a partir do prompt de comando usando os seguintes comandos -
javac LineAnnotation.java
java LineAnnotation
Após a execução, o programa acima cria um documento PDF exibindo a seguinte mensagem.
Annotation added successfully
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado conforme mostrado abaixo.
Neste capítulo, veremos como adicionar anotações de marcação de texto a um documento PDF usando a biblioteca iText.
Criação de uma anotação de marcação em um PDF
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocumentobjeto como um parâmetro para seu construtor. Para usar anotações de texto em seu documento PDF, você precisa criar um objeto dePdfTextAnnotation classe e adicione isso ao PdfPage.
A seguir estão as etapas para usar anotações de texto no documento PDF.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/markupAnnotation.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie a classe PdfDocument passando o objeto PdfWriter para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classePdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores, conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criação do objeto PdfAnnotation
o PdfAnnotation classe do pacote com.itextpdf.kernel.pdf.annot representa a superclasse de todas as anotações.
Entre suas classes derivadas, PdfTextMarkupAnnotationclasse representa a anotação de marcação de texto. Crie um objeto desta classe conforme mostrado abaixo.
// Creating a PdfTextMarkupAnnotation object
Rectangle rect = new Rectangle(105, 790, 64, 10);
float[] floatArray = new float[]{169, 790, 105, 790, 169, 800, 105, 800};
PdfAnnotation annotation = PdfTextMarkupAnnotation.createHighLight(rect,floatArray);
Etapa 5: definir a cor da anotação
Defina a cor da anotação usando o setColor() método do PdfAnnotationclasse. Para este método, passe o objeto de cor que representa ocolor da anotação como um parâmetro.
// Setting color to the annotation
annotation.setColor(Color.YELLOW);
Etapa 6: definir o título e o conteúdo da anotação
Defina o título e o conteúdo da anotação usando o setTitle() e setContents() métodos do PdfAnnotation classe respectivamente.
// Setting title to the annotation
annotation.setTitle(new PdfString("Hello!"));
// Setting contents to the annotation
annotation.setContents(new PdfString("Hi welcome to Tutorialspoint"));
Etapa 7: Adicionar a anotação a uma página
Crie um novo PdfPage classe usando o addNewPage() método do PdfDocument classe e adicione a anotação criada acima usando o addAnnotation() método da classe PdfPage, conforme mostrado abaixo.
// Creating a new Pdfpage
PdfPage pdfPage = pdfDoc.addNewPage();
// Adding annotation to a page in a PDF
pdfPage.addAnnotation(annotation);
Etapa 8: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como adicionar anotações de marcação de texto a um documento PDF usando a biblioteca iText. Ele cria um documento PDF com o nomemarkupAnnotation.pdf, adiciona uma anotação de marcação de texto e salva no caminho C:/itextExamples/
Salve este código em um arquivo com o nome MarkupAnnotation.java.
import com.itextpdf.kernel.color.Color;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfString;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.annot.PdfAnnotation;
import com.itextpdf.kernel.pdf.annot.PdfTextMarkupAnnotation;
import com.itextpdf.layout.Document;
public class MarkupAnnotation {
public static void main(String args[]) throws Exception {
// Creating a PdfDocument object
String file = "C:/itextExamples/markupAnnotation.pdf";
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(file));
// Creating a Document object
Document doc = new Document(pdfDoc);
// Creating a PdfTextMarkupAnnotation object
Rectangle rect = new Rectangle(105, 790, 64, 10);
float[] floatArray = new float[]{169, 790, 105, 790, 169, 800, 105, 800};
PdfAnnotation annotation =
PdfTextMarkupAnnotation.createHighLight(rect,floatArray);
// Setting color to the annotation
annotation.setColor(Color.YELLOW);
// Setting title to the annotation
annotation.setTitle(new PdfString("Hello!"));
// Setting contents to the annotation
annotation.setContents(new PdfString("Hi welcome to Tutorialspoint"));
// Creating a new Pdfpage
PdfPage pdfPage = pdfDoc.addNewPage();
// Adding annotation to a page in a PDF
pdfPage.addAnnotation(annotation);
// Closing the document
doc.close();
System.out.println("Annotation added successfully");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac MarkupAnnotation.java
java MarkupAnnotation
Após a execução, o programa acima cria um documento PDF exibindo a seguinte mensagem.
Annotation added successfully
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado conforme mostrado abaixo.
Neste capítulo, veremos como adicionar anotação de círculo a um documento PDF usando a biblioteca iText.
Criação de uma anotação de círculo em um PDF
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocument objeto como um parâmetro para seu construtor.
Para usar anotações de texto em seu documento PDF, você precisa criar um objeto da classe PdfTextAnnotation e adicioná-lo ao Pdfpage.
A seguir estão as etapas para usar anotações de texto no documento PDF.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie o PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, como mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/circleAnnotation.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie a classe PdfDocument passando o objeto PdfWriter para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classe PdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores, conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criação do objeto PdfAnnotation
o PdfAnnotation classe do pacote com.itextpdf.kernel.pdf.annot representa a superclasse de todas as anotações.
Entre suas classes derivadas, PdfCircleAnnotationclasse representa a anotação do círculo. Crie um objeto desta classe conforme mostrado abaixo.
// Creating a PdfCircleAnnotation object Rectangle
rect = new Rectangle(150, 770, 50, 50);
PdfAnnotation annotation = new PdfCircleAnnotation(rect);
Etapa 5: definir a cor da anotação
Defina a cor da anotação usando o setColor() método do PdfAnnotationclasse. Para este método, passe como parâmetro o objeto de cor que representa a cor da anotação.
// Setting color to the annotation
annotation.setColor(Color.YELLOW);
Etapa 6: definir o título e o conteúdo da anotação
Defina o título e o conteúdo da anotação usando o setTitle() e setContents() métodos do PdfAnnotation classe respectivamente.
// Setting title to the annotation
annotation.setTitle(new PdfString("circle annotation"));
// Setting contents of the annotation
annotation.setContents(new PdfString("Hi welcome to Tutorialspoint"));
Etapa 7: Adicionar a anotação a uma página
Crie um novo PdfPage classe usando o addNewPage() método do PdfDocument classe e adicione a anotação criada acima usando o addAnnotation() método da classe PdfPage, conforme mostrado abaixo.
// Creating a new page
PdfPage page = pdf.addNewPage();
// Adding annotation to a page in a PDF
page.addAnnotation(ann);
Etapa 8: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como adicionar anotação de círculo a um documento PDF usando a biblioteca iText. Ele cria um documento PDF com o nomecircleAnnotation.pdf, adiciona uma anotação de círculo a ele e salva no caminho C:/itextExamples/
Salve este código em um arquivo com o nome PdfCircleAnnotation.java.
import com.itextpdf.kernel.color.Color;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfString;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.annot.PdfAnnotation;
import com.itextpdf.kernel.pdf.annot.PdfCircleAnnotation;
import com.itextpdf.layout.Document;
public class CircleAnnotation {
public static void main(String args[]) throws Exception {
// Creating a PdfDocument object
String file = "C:/itextExamples// circleAnnotation.pdf";
PdfDocument pdf = new PdfDocument(new PdfWriter(file));
// Creating a Document object
Document doc = new Document(pdf);
// Creating a PdfCircleAnnotation object
Rectangle rect = new Rectangle(150, 770, 50, 50);
PdfAnnotation annotation = new PdfCircleAnnotation(rect);
// Setting color to the annotation
annotation.setColor(Color.YELLOW);
// Setting title to the annotation
annotation.setTitle(new PdfString("circle annotation"));
// Setting contents of the annotation
annotation.setContents(new PdfString("Hi welcome to Tutorialspoint"));
// Creating a new page
PdfPage page = pdf.addNewPage();
// Adding annotation to a page in a PDF
page.addAnnotation(annotation);
// Closing the document
doc.close();
System.out.println("Annotation added successfully");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac PdfCircleAnnotation.java
java PdfCircleAnnotation
Após a execução, o programa acima cria um documento PDF exibindo a seguinte mensagem.
Annotation added successfully
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado, conforme mostrado abaixo.
Neste capítulo, veremos como desenhar um arco em um documento PDF usando a biblioteca iText.
Desenhar um arco em um PDF
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocument objeto como um parâmetro para seu construtor.
Para desenhar um arco em um PdfDocument, instancie o PdfCanvas classe do pacote com.itextpdf.kernel.pdf.canvas e criar um arco usando o arc() método desta classe.
A seguir estão as etapas para desenhar um arco em um documento PDF.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/drawingArc.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando o objeto deste tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie a classe PdfDocument passando o objeto PdfWriter para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classe PdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criação de um objeto PdfCanvas
Crie um novo PdfPage classe usando o addNewPage() método do PdfDocument classe.
Instancie o PdfCanvas objeto do pacote com.itextpdf.kernel.pdf.canvas passando o criado acima PdfPage objeto ao construtor desta classe, conforme mostrado abaixo.
// Creating a new page
PdfPage pdfPage = pdfDoc.addNewPage();
// Creating a PdfCanvas object
PdfCanvas canvas = new PdfCanvas(pdfPage);
Etapa 5: desenhando o arco
Desenhe o arco usando o arc() método do Canvas classe e preencha-a usando o fill() método, conforme mostrado abaixo.
// Drawing an arc
canvas.arc(50, 50, 300, 545, 0, 360);
// Filling the arc
canvas.fill();
Etapa 6: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como desenhar um arco em um documento PDF usando a biblioteca iText.
Ele cria um documento PDF com o nome drawingArc.pdf, desenha um arco nele e o salva no caminho C:/itextExamples/
Salve este código em um arquivo com o nome DrawingArc.java.
import com.itextpdf.kernel.color.Color;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.layout.Document;
public class DrawingArc {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter
String dest = "C:/itextExamples/drawingArc.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument object
PdfDocument pdfDoc = new PdfDocument(writer);
// Creating a Document object
Document doc = new Document(pdfDoc);
// Creating a new page
PdfPage pdfPage = pdfDoc.addNewPage();
// Creating a PdfCanvas object
PdfCanvas canvas = new PdfCanvas(pdfPage);
// Drawing an arc
canvas.arc(50, 50, 300, 545, 0, 360);
// Filling the arc
canvas.fill();
// Closing the document
doc.close();
System.out.println("Object drawn on pdf successfully");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac DrawingArc.java
java DrawingArc
Após a execução, o programa acima cria um documento PDF, exibindo a seguinte mensagem.
Object drawn on pdf successfully
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado, conforme mostrado abaixo.
Neste capítulo, veremos como desenhar uma linha em um documento PDF usando a biblioteca iText.
Desenhar uma linha em um PDF
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocument objeto como um parâmetro, para seu construtor.
Para desenhar uma linha em um PdfDocument instancie o PdfCanvas classe do pacote com.itextpdf.kernel.pdf.canvas e criar uma linha usando o moveTo() e lineTO() métodos desta classe.
A seguir estão as etapas para traçar uma linha no documento PDF.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/drawingLine.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie a classe PdfDocument passando o objeto PdfWriter criado acima para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classe PdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criação de um objeto PdfCanvas
Crie um novo PdfPage classe usando o addNewPage() método do PdfDocument classe.
Instancie o PdfCanvas objeto do pacote com.itextpdf.kernel.pdf.canvas passando o criado acima PdfPage objeto ao construtor desta classe, conforme mostrado abaixo.
// Creating a new page
PdfPage pdfPage = pdfDoc.addNewPage();
// Creating a PdfCanvas object
PdfCanvas canvas = new PdfCanvas(pdfPage);
Etapa 5: Desenhar a linha
Defina o ponto inicial da linha usando o moveTO() método do Canvas classe, conforme mostrado abaixo.
// Initial point of the line
canvas.moveTo(100, 300);
Agora, desenhe uma linha deste ponto a outro ponto usando o lineTo() método, conforme mostrado abaixo.
// Drawing the line
canvas.lineTo(500, 300);
Etapa 6: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como desenhar uma linha em um documento PDF usando a biblioteca iText. Ele cria um documento PDF com o nomedrawingLine.pdf, desenha um arco nele e o salva no caminho C:/itextExamples/
Salve este código em um arquivo com o nome DrawingLine.java.
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.layout.Document;
public class DrawingLine {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter
String dest = "C:/itextExamples/drawingLine.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument object
PdfDocument pdfDoc = new PdfDocument(writer);
// Creating a Document object
Document doc = new Document(pdfDoc);
// Creating a new page
PdfPage pdfPage = pdfDoc.addNewPage();
// Creating a PdfCanvas object
PdfCanvas canvas = new PdfCanvas(pdfPage);
// Initial point of the line
canvas.moveTo(100, 300);
// Drawing the line
canvas.lineTo(500, 300);
// Closing the path stroke
canvas.closePathStroke();
// Closing the document
doc.close();
System.out.println("Object drawn on pdf successfully");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac DrawingLine.java
java DrawingLine
Após a execução, o programa acima cria um documento PDF, exibindo a seguinte mensagem.
Object drawn on pdf successfully
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado, conforme mostrado abaixo.
Neste capítulo, veremos como desenhar um círculo em um documento PDF usando a biblioteca iText.
Desenhando um Círculo em um Pdf
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocument objeto como um parâmetro para seu construtor.
Para desenhar um círculo em um PdfDocument, instancie o PdfCanvas classe do pacote com.itextpdf.kernel.pdf.canvas e invocar o circle() método desta classe.
A seguir estão as etapas para desenhar um círculo em um documento PDF.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/drawingCircle.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criação de um objeto PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie a classe PdfDocument passando o objeto PdfWriter para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criação do objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classe PdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument criado nas etapas anteriores, conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criação de um objeto PdfCanvas
Crie um novo PdfPage classe usando o addNewPage() método do PdfDocumentclasse. Instancie oPdfCanvas objeto do pacote com.itextpdf.kernel.pdf.canvas passando o PdfPage objeto ao construtor desta classe, conforme mostrado abaixo.
// Creating a new page
PdfPage pdfPage = pdfDoc.addNewPage();
// Creating a PdfCanvas object
PdfCanvas canvas = new PdfCanvas(pdfPage);
Etapa 5 Definir a cor
Defina a cor do círculo usando o setColor() método do Canvas classe, conforme mostrado abaixo.
// Setting color to the circle
Color color = Color.GREEN;
canvas.setColor(color, true);
Etapa 6: Desenhar o Círculo
Desenhe um círculo invocando o circle() método do Canvas, como mostrado abaixo.
// creating a circle
canvas.circle(300, 400, 200);
Etapa 7: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como desenhar um círculo em um documento PDF usando a biblioteca iText. Ele cria um documento PDF com o nomedrawingCircle.pdf, desenha um círculo nele e o salva no caminho C:/itextExamples/
Salve este código em um arquivo com o nome DrawingCircle.java.
import com.itextpdf.kernel.color.Color;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.layout.Document;
public class DrawingCircle {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter
String dest = "C:/itextExamples/drawingCircle.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument object
PdfDocument pdfDoc = new PdfDocument(writer);
// Creating a Document object
Document doc = new Document(pdfDoc);
// Creating a new page
PdfPage pdfPage = pdfDoc.addNewPage();
// Creating a PdfCanvas object
PdfCanvas canvas = new PdfCanvas(pdfPage);
// Setting color to the circle
Color color = Color.GREEN;
canvas.setColor(color, true);
// creating a circle
canvas.circle(300, 400, 200);
// Filling the circle
canvas.fill();
// Closing the document
doc.close();
System.out.println("Object drawn on pdf successfully");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os comandos a seguir.
javac DrawingCircle.java
java DrawingCircle
Após a execução, o programa acima cria um documento PDF exibindo a seguinte mensagem.
Object drawn on pdf successfully
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado, conforme mostrado abaixo.
Neste capítulo, veremos como definir a cor e a fonte do texto em um documento PDF usando a biblioteca iText.
Definindo a fonte do texto em um PDF
Você pode criar um documento PDF vazio instanciando o Documentclasse. Ao instanciar esta classe, você precisa passar por umPdfDocument objeto como um parâmetro para seu construtor.
Para adicionar um parágrafo ao documento, você precisa instanciar o Paragraph classe e adicionar este objeto ao documento usando o add()método. Você pode definir a cor e a fonte do texto usando os métodossetFontColor() e setFont() respectivamente.
A seguir estão as etapas para definir a cor e a fonte do texto em um documento PDF.
Etapa 1: Criação de um objeto PdfWriter
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter
String dest = "C:/itextExamples/fonts.pdf";
PdfWriter writer = new PdfWriter(dest);
Quando um objeto desse tipo é passado para um PdfDocument (classe), cada elemento adicionado a este documento será gravado no arquivo especificado.
Etapa 2: Criando um PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Instancie a classe PdfDocument passando o objeto PdfWriter para seu construtor, conforme mostrado abaixo.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Depois que um objeto PdfDocument é criado, você pode adicionar vários elementos como página, fonte, anexo de arquivo e manipulador de eventos usando os respectivos métodos fornecidos por sua classe.
Etapa 3: Criando a classe Document
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classe PdfDocument.
Instancie a classe Document passando o objeto da classe PdfDocument criado nas etapas anteriores, conforme mostrado abaixo.
// Creating a Document
Document document = new Document(pdfDoc);
Etapa 4: Criação de texto
Crie o texto instanciando o Text classe do pacote com.itextpdf.layout.element como mostrado abaixo.
// Creating text object
Text text = new Text("Tutorialspoint");
Etapa 5: definir a fonte e a cor do texto
Crie o PdfFont objeto usando o createFont() método da aula PdfFontFactory do pacote com.itextpdf.kernel.font como mostrado abaixo
// Setting font of the text PdfFont
font = PdfFontFactory.createFont(FontConstants.HELVETICA_BOLD);
Agora, defina a fonte para o texto usando o setFont() método do Textclasse a este método. Passe oPdfFont objeto como parâmetro, conforme mostrado a seguir.
text1.setFont(font);
Para definir a cor do texto, invoque o setFontColor() método da classe Text, conforme mostrado abaixo.
// Setting font color
text.setFontColor(Color.GREEN);
Etapa 6: Adicionando texto ao parágrafo
Criar uma Paragraph objeto de classe e adicione o texto criado acima usando seu add() método, conforme mostrado abaixo.
// Creating Paragraph
Paragraph paragraph = new Paragraph();
// Adding text to the paragraph
paragraph.add(text);
Etapa 7: Adicionando parágrafo ao documento
Adicione o parágrafo ao documento usando o add() método do Document classe, conforme mostrado abaixo.
doc.add(paragraph1)
Etapa 8: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como definir a cor e a fonte do texto em um PDF usando a biblioteca iText. Ele cria um documento PDF com o nomefonts.pdf, formata o texto e o salva no caminho C:/itextExamples/
Salve este código em um arquivo com o nome FormatingTheText.java.
import com.itextpdf.io.font.FontConstants;
import com.itextpdf.kernel.color.Color;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Text;
public class FormatingTheText {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter object
String dest = "C:/itextExamples/fonts.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument object
PdfDocument pdf = new PdfDocument(writer);
// Creating a Document object
Document doc = new Document(pdf);
// Creating text object
Text text1 = new Text("Tutorialspoint");
// Setting font of the text
PdfFont font = PdfFontFactory.createFont(FontConstants.HELVETICA_BOLD);
text1.setFont(font);
// Setting font color
text1.setFontColor(Color.GREEN);
// Creating text object
Text text2 = new Text("Simply Easy Learning");
text2.setFont(PdfFontFactory.createFont(FontConstants.HELVETICA));
// Setting font color
text2.setFontColor(Color.BLUE);
// Creating Paragraph
Paragraph paragraph1 = new Paragraph();
// Adding text1 to the paragraph
paragraph1.add(text1);
paragraph1.add(text2);
// Adding paragraphs to the document
doc.add(paragraph1);
doc.close();
System.out.println("Text added to pdf ..");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac FormatingTheText.java
java FormatingTheText
Após a execução, o programa acima cria um documento PDF exibindo a seguinte mensagem.
Text added to pdf ..
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado, conforme mostrado abaixo.
Neste capítulo, veremos como dimensionar uma imagem em um documento PDF usando a biblioteca iText.
Reduzindo o conteúdo em um PDF
A seguir estão as etapas para reduzir o conteúdo de uma página PDF usando a biblioteca iText.
Etapa 1: Criando um objeto PdfWriter e PdfReader
o PdfWriterclasse representa o DocWriter para um PDF. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. O construtor dessa classe aceita uma string, representando o caminho do arquivo onde o PDF deve ser criado.
Instancie a classe PdfWriter passando um valor de string (representando o caminho onde você precisa criar um PDF) para seu construtor, conforme mostrado abaixo.
// Creating a PdfWriter object
String dest = "C:/itextExamples/shrinking.pdf";
PdfWriter writer = new PdfWriter(dest);
Para ler os dados de um pdf existente, crie um PdfReader objeto como mostrado abaixo.
// Creating a PdfReader
String src = "C:/itextExamples/pdfWithImage.pdf";
PdfReader reader = new PdfReader(src);
Etapa 2: Criação de objeto (s) PdfDocument
o PdfDocumentclass é a classe que representa o documento PDF no iText. Esta classe pertence ao pacotecom.itextpdf.kernel.pdf. Para instanciar esta classe (no modo de escrita), você precisa passar um objeto da classePdfWriter para seu construtor.
Crie documentos PDF de origem e de destino passando o PdfWriter e PdfReader objetos para os construtores, como mostrado abaixo.
// Creating a PdfDocument objects
PdfDocument destpdf = new PdfDocument(writer);
PdfDocument srcPdf = new PdfDocument(reader);
Etapa 3: abrindo uma página do PDF existente
Obtenha uma página do PDF de origem usando o getPage() método do PdfPageclasse. Usando este objeto, obtenha o tamanho da página do documento fonte, conforme mostrado abaixo.
// Opening a page from the existing PDF
PdfPage origPage = srcPdf.getPage(1);
// Getting the page size
Rectangle orig = origPage.getPageSizeWithRotation();
Etapa 4: Reduzir o conteúdo do pdf de origem
Usando o getScaleInstance() método do AffineTransform classe, reduza o conteúdo de uma página do documento de origem, conforme mostrado abaixo.
// Shrink original page content using transformation matrix
AffineTransform transformationMatrix = AffineTransform.getScaleInstance(
page.getPageSize().getWidth()/ orig.getWidth()/2,
page.getPageSize().getHeight()/ orig.getHeight()/2);
Etapa 5: Copiar a página
Concatenar o affine transform matrix, criado na etapa anterior, para a matriz do canvas objeto do documento PDF de destino, conforme mostrado a seguir.
// Concatenating the affine transform matrix to the current matrix
PdfCanvas canvas = new PdfCanvas(page);
canvas.concatMatrix(transformationMatrix);
Agora, adicione a cópia da página ao canvas objeto do PDF de destino para o documento de origem, conforme mostrado abaixo.
// Add the object to the canvas
PdfFormXObject pageCopy = origPage.copyAsFormXObject(destpdf);
canvas.addXObject(pageCopy, 0, 0);
Etapa 6: Criando o objeto Documento
o Document classe do pacote com.itextpdf.layouté o elemento raiz ao criar um PDF autossuficiente. Um dos construtores desta classe aceita um objeto da classe PdfDocument.
Instancie o Document classe passando o objeto da classe PdfDocument, como mostrado abaixo.
// Creating a Document
Document document = new Document(destpdf);
Etapa 7: Fechando o Documento
Feche o documento usando o close() método do Document classe, conforme mostrado abaixo.
// Closing the document
document.close();
Exemplo
O programa Java a seguir demonstra como reduzir o conteúdo de uma página PDF usando a biblioteca iText. Ele cria um documento PDF com o nomeshrinkingPDF.pdf, reduz a imagem no pdf e a salva no caminho C:/itextExamples/
Salve este código em um arquivo com o nome ShrinkingPDF.java.
import com.itextpdf.kernel.geom.AffineTransform;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.kernel.pdf.xobject.PdfFormXObject;
import com.itextpdf.layout.Document;
public class ShrinkPDF {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter object
String dest = "C:/itextExamples/shrinking.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfReader
String src = "C:/itextExamples/pdfWithImage.pdf";
PdfReader reader = new PdfReader(src);
// Creating a PdfDocument objects
PdfDocument destpdf = new PdfDocument(writer);
PdfDocument srcPdf = new PdfDocument(reader);
// Opening a page from the existing PDF
PdfPage origPage = srcPdf.getPage(1);
// Getting the page size
Rectangle orig = origPage.getPageSizeWithRotation();
// Adding a page to destination Pdf
PdfPage page = destpdf.addNewPage();
// Scaling the image in a Pdf page
AffineTransform transformationMatrix = AffineTransform.getScaleInstance(
page.getPageSize().getWidth()/orig.getWidth()/2,
page.getPageSize().getHeight()/ orig.getHeight()/2);
// Shrink original page content using transformation matrix
PdfCanvas canvas = new PdfCanvas(page);
canvas.concatMatrix(transformationMatrix);
// Add the object to the canvas
PdfFormXObject pageCopy = origPage.copyAsFormXObject(destpdf);
canvas.addXObject(pageCopy, 0, 0);
// Creating a Document object
Document doc = new Document(destpdf);
// Closing the document
doc.close();
System.out.println("Table created successfully..");
}
}
Compile e execute o arquivo Java salvo a partir do prompt de comando usando os seguintes comandos -
javac ShrinkingPDF.java
java ShrinkingPDF
Após a execução, o programa acima cria um documento PDF, exibindo a seguinte mensagem.
Table created successfully..
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado conforme mostrado abaixo.
O programa Java a seguir demonstra como agrupar o conteúdo de uma página PDF em páginas diferentes usando a biblioteca iText. Ele cria um documento PDF com o nometilingPdfPages.pdf e salva no caminho C:/itextExamples/.
Salve este código em um arquivo com o nome TilingPDFPages.java.
import com.itextpdf.kernel.geom.AffineTransform;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.kernel.pdf.xobject.PdfFormXObject;
public class TilingPDFPages {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter object
String dest = "C:/itextExamples/tilingPdfPages.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfReader
String src = "C:/itextExamples/pdfWithImage.pdf";
PdfReader reader = new PdfReader(src);
// Creating a PdfDocument objects
PdfDocument destpdf = new PdfDocument(writer);
PdfDocument srcPdf = new PdfDocument(reader);
// Opening a page from the existing PDF
PdfPage origPage = srcPdf.getPage(1);
// Getting the page size
Rectangle orig = origPage.getPageSizeWithRotation();
// Getting the size of the page
PdfFormXObject pageCopy = origPage.copyAsFormXObject(destpdf);
// Tile size
Rectangle tileSize = PageSize.A4.rotate();
AffineTransform transformationMatrix =
AffineTransform.getScaleInstance(tileSize.getWidth() / orig.getWidth() *
2f, tileSize.getHeight() / orig.getHeight() * 2f);
// The first tile
PdfPage page =
destpdf.addNewPage(PageSize.A4.rotate());
PdfCanvas canvas = new PdfCanvas(page);
canvas.concatMatrix(transformationMatrix);
canvas.addXObject(pageCopy, 0, -orig.getHeight() / 2f);
// The second tile
page = destpdf.addNewPage(PageSize.A4.rotate());
canvas = new PdfCanvas(page);
canvas.concatMatrix(transformationMatrix);
canvas.addXObject(pageCopy, -orig.getWidth() / 2f, -orig.getHeight() / 2f);
// The third tile
page = destpdf.addNewPage(PageSize.A4.rotate());
canvas = new PdfCanvas(page);
canvas.concatMatrix(transformationMatrix);
canvas.addXObject(pageCopy, 0, 0);
// The fourth tile
page = destpdf.addNewPage(PageSize.A4.rotate());
canvas = new PdfCanvas(page);
canvas.concatMatrix(transformationMatrix);
canvas.addXObject(pageCopy, -orig.getWidth() / 2f, 0);
// closing the documents
destpdf.close();
srcPdf.close();
System.out.println("PDF created successfully..");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac TilingPDFPages.java
java TilingPDFPages
Após a execução, o programa acima cria um documento PDF, exibindo a seguinte mensagem.
PDF created successfully..
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado, conforme mostrado abaixo -
O programa Java a seguir demonstra como executar N-up em uma página PDF usando a biblioteca iText. Ele cria um documento PDF com o nomenUppingPDF.pdf e salva no caminho C:/itextExamples/
Salve este código em um arquivo com o nome NUppingPDF.java.
import com.itextpdf.kernel.geom.AffineTransform;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.kernel.pdf.xobject.PdfFormXObject;
public class NUppingPDF {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter object
String dest = "C:/itextExamples/nUppingPDF.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfReader
String src = "C:/itextExamples/pdfWithImage.pdf";
PdfReader reader = new PdfReader(src);
// Creating a PdfDocument objects
PdfDocument destpdf = new PdfDocument(writer);
PdfDocument srcPdf = new PdfDocument(reader);
// Opening a page from the existing PDF
PdfPage origPage = srcPdf.getPage(1);
Rectangle orig = origPage.getPageSize();
PdfFormXObject pageCopy = origPage.copyAsFormXObject(destpdf);
// N-up page
PageSize nUpPageSize = PageSize.A4.rotate();
PdfPage page = destpdf.addNewPage(nUpPageSize);
PdfCanvas canvas = new PdfCanvas(page);
// Scale page
AffineTransform transformationMatrix = AffineTransform.getScaleInstance(
nUpPageSize.getWidth() / orig.getWidth() /
2f, nUpPageSize.getHeight() / orig.getHeight() / 2f);
canvas.concatMatrix(transformationMatrix);
// Add pages to N-up page
canvas.addXObject(pageCopy, 0, orig.getHeight());
canvas.addXObject(pageCopy, orig.getWidth(), orig.getHeight());
canvas.addXObject(pageCopy, 0, 0);
canvas.addXObject(pageCopy, orig.getWidth(), 0);
// closing the documents
destpdf.close();
srcPdf.close();
System.out.println("PDF created successfully..");
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -
javac NUppingPDF.java
java NUppingPDF
Após a execução, o programa acima cria um documento PDF exibindo a seguinte mensagem.
PDF created successfully..
Se você verificar o caminho especificado, poderá encontrar o documento PDF criado, conforme mostrado abaixo.