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.