iText 快速指南



iText - 概述

可移植文档格式 (PDF) 是一种文件格式,它有助于以独立于应用程序软件、硬件和操作系统的方式呈现数据。每个 PDF 文件都包含对固定版式平面文档的描述,包括文本、字体、图形以及显示它所需的其他信息。

有几个库可用于通过程序创建和操作 PDF 文档,例如:

  • Adobe PDF 库 - 此库提供 C++、.NET 和 Java 等语言的 API。使用它,我们可以编辑、查看、打印和从 PDF 文档中提取文本。

  • 格式对象处理器 - 由 XSL 格式对象驱动的开源打印格式化程序和与输出无关的格式化程序。主要输出目标是 PDF。

  • PDF Box - Apache PDFBox 是一个开源 Java 库,支持 PDF 文档的开发和转换。使用此库,您可以开发创建、转换和操作 PDF 文档的 Java 程序。

  • Jasper Reports - 这是一款 Java 报表工具,可以生成 PDF 文档中的报表,包括 Microsoft Excel、RTF、ODT、逗号分隔值和 XML 文件。

什么是 iText?

与上面列出的软件类似,iText 是一个 Java PDF 库,可以使用它开发创建、转换和操作 PDF 文档的 Java 程序。

iText 的特性

以下是 iText 库的显著特性:

  • 交互式 - iText 提供类 (API) 来生成交互式 PDF 文档。使用这些,您可以创建地图和书籍。

  • 添加书签、页码等 - 使用 iText,您可以添加书签、页码和水印。

  • 分割和合并 - 使用 iText,您可以将现有 PDF 分割成多个 PDF,也可以向其中添加/连接其他页面。

  • 填写表单 - 使用 iText,您可以填写 PDF 文档中的交互式表单。

  • 另存为图像 - 使用 iText,您可以将 PDF 另存为图像文件,例如 PNG 或 JPEG。

  • 画布 - iText 库提供了一个 Canvas 类,您可以使用它在 PDF 文档上绘制各种几何形状,例如圆形、直线等。

  • 创建 PDF - 使用 iText,您可以从 Java 程序创建一个新的 PDF 文件。您也可以包含图像和字体。

iText 环境

按照以下步骤在 Eclipse 中设置 iText 环境。

步骤 1 - 安装 Eclipse 并打开一个新项目,如下所示。

Eclipse Project

步骤 2 - 创建一个名为 iTextSample 的项目,如下所示。

New Project Window

步骤 3 - 右键单击项目,将其转换为 Maven 项目,如下所示。一旦将其转换为 Maven 项目,它将为您提供一个 pom.xml 文件,您需要在其中提及所需的依赖项。之后,这些依赖项的 jar 文件将自动下载到您的项目中。

Maven Configuration

步骤 4 - 现在,在项目的 pom.xml 中,复制并粘贴以下内容(iText 应用程序的依赖项)并刷新项目。

使用 pom.xml

将项目转换为 Maven 项目,并将以下内容添加到其 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>

最后,如果您查看 Maven 依赖项,您可以看到所有所需的 jar 文件都已下载。

iText Sample Application

iText - 创建 PDF 文档

现在让我们了解如何使用 iText 库创建 PDF 文档。

创建空 PDF 文档

您可以通过实例化 Document 类来创建一个空的 PDF 文档。实例化此类时,需要将 PdfDocument 对象作为参数传递给其构造函数。

以下是创建空 PDF 文档的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter 类代表 PDF 的文档编写器。此类属于 com.itextpdf.kernel.pdf 包。此类的构造函数接受一个字符串,表示要创建 PDF 文件的路径。

通过将字符串值(表示您需要创建 PDF 的路径)传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/sample.pdf"; 
PdfWriter writer = new PdfWriter(dest);

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument 类是代表 iText 中 PDF 文档的类。此类属于 com.itextpdf.kernel.pdf 包。要实例化此类(在写入模式下),需要将 PdfWriter 类的对象传递给其构造函数。

通过将上面创建的 PdfWriter 对象传递给其构造函数来实例化 PdfDocument 类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer);

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤 3:添加空页面

PdfDocument 类的 addNewPage() 方法用于在 PDF 文档中创建空页面。

如下所示,向上一步骤中创建的 PDF 文档添加一个空页面。

// Adding an empty page 
pdfDoc.addNewPage(); 

步骤 4:创建 Document 对象

com.itextpdf.layout 包的 Document 类是创建自包含 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document   
Document document = new Document(pdfDoc); 

步骤 5:关闭 Document

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close();

示例

以下 Java 程序演示了如何创建 PDF 文档。它创建一个名为 sample.pdf 的 PDF 文档,向其中添加一个空页面,并将其保存在 C:/itextExamples/ 路径下。

将此代码保存在名为 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");    
   } 
} 

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac create_PDF.java 
java create_PDF

执行后,上述程序将创建一个 PDF 文档,并显示以下消息。

PDF created

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

iText Example

由于这是一个空文档,如果您尝试打开此文档,它将显示错误消息,如下面的屏幕截图所示。

Sample

iText - 添加 AreaBreak

在本节中,我们将学习如何使用 iText 库创建包含 AreaBreak 的 PDF 文档。

创建 AreaBreak

您可以通过实例化 Document 类来创建一个空的 PDF 文档。实例化此类时,需要将 PdfDocument 对象作为参数传递给其构造函数。然后,要向文档添加 areabreak,需要实例化 AreaBreak 类,并使用 add() 方法将此对象添加到文档中。

以下是创建包含 AreaBreak 的空 PDF 文档的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter 类代表 PDF 的文档编写器,此类属于 com.itextpdf.kernel.pdf 包。此类的构造函数接受一个字符串,表示要创建 PDF 文件的路径。

通过将表示您需要创建 PDF 的路径的字符串值传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/addingAreaBreak.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument 类是代表 iText 中 PDF 文档的类,此类属于 com.itextpdf.kernel.pdf 包。要实例化此类(在写入模式下),需要将 PdfWriter 类的对象传递给其构造函数。

通过将上面创建的 PdfWriter 对象传递给其构造函数来实例化 PdfDocument 类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤 3:创建 Document 对象

com.itextpdf.layout 包的 Document 类是创建自包含 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document   
Document document = new Document(pdfDoc); 

步骤 4:创建 Area Break 对象

AreaBreak 类属于 com.itextpdf.layout.element 包。实例化此类时,当前上下文区域将被终止,并将创建一个具有相同大小的新区域(如果我们使用默认构造函数)。

如下所示实例化 AreaBreak 类。

// Creating an Area Break    
AreaBreak aB = new AreaBreak(); 

步骤 5:添加 AreaBreak

使用 Document 类的 add() 方法添加上一步骤中创建的 areabreak 对象,如下所示。

// Adding area break to the PDF 
document.add(aB); 

步骤 6:关闭 Document

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close(); 

示例

以下 Java 程序演示了如何使用 iText 库创建包含 AreaBreak 的 PDF 文档。它创建一个名为 addingAreaBreak.pdf 的 PDF 文档,向其中添加一个 areabreak,并将其保存在 C:/itextExamples/ 路径下。

将此代码保存在名为 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");       
   } 
}  

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac AddingAreaBreak.java 
java AddingAreaBreak 

执行后,上述程序将创建一个 PDF 文档,并显示以下消息。

Pdf Created 

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Adding AreaBreak

iText - 添加段落

在本节中,我们将学习如何使用 iText 库创建 PDF 文档并在其中添加段落。

创建段落

您可以通过实例化 Document 类来创建一个空的 PDF 文档。实例化此类时,需要将 PdfDocument 对象作为参数传递给其构造函数。然后,要向文档添加段落,需要实例化 Paragraph 类,并使用 add() 方法将此对象添加到文档中。

以下是创建包含段落的 PDF 文档的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter 类代表 PDF 的文档编写器。此类属于 com.itextpdf.kernel.pdf 包。此类的构造函数接受一个字符串,表示要创建 PDF 文件的路径。

通过将字符串值(表示您需要创建 PDF 的路径)传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/addingParagraph.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument

PdfDocument 类是代表 iText 中 PDF 文档的类。此类属于 com.itextpdf.kernel.pdf 包。要实例化此类(在写入模式下),需要将 PdfWriter 类的对象传递给其构造函数。

通过将上面创建的 PdfWriter 对象传递给其构造函数来实例化 PdfDocument 类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤 3:创建 Document 类

com.itextpdf.layout 包的 Document 类是创建自包含 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document   
Document document = new Document(pdfDoc); 

步骤 4:创建 Paragraph 对象

Paragraph 类代表一个自包含的文本和图形信息块。它属于 com.itextpdf.layout.element 包。

通过将文本内容作为字符串传递给其构造函数来实例化 Paragraph 类,如下所示。

String para = "Welcome to Tutorialspoint."; 
// Creating an Area Break    
Paragraph para = new Paragraph (para); 

步骤 5:添加 Paragraph

使用 Document 类的 add() 方法添加上一步骤中创建的 Paragraph 对象,如下所示。

// Adding area break to the PDF 
document.add(para); 

步骤 6:关闭 Document

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close();

示例

以下Java程序演示了如何使用iText库创建PDF文档并向其中添加段落。它创建一个名为addingParagraph.pdf的PDF文档,向其中添加一个段落,并将其保存在C:/itextExamples/路径下。

将此代码保存在名为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");    
   } 
}  

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac AddingParagraph.java 
java AddingParagraph

执行后,上述程序将创建一个 PDF 文档,并显示以下消息。

Paragraph added

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Adding Paragraph

iText - 添加列表

本章我们将学习如何使用iText库创建PDF文档并向其中添加列表。

创建列表

您可以通过实例化Document类来创建一个空的PDF文档。实例化此类时,需要将PdfDocument对象作为参数传递给其构造函数。然后,要向文档添加列表,需要实例化List类并将此对象使用add()方法添加到文档中。

以下是创建PDF文档并在其中添加列表的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将字符串值(表示您需要创建 PDF 的路径)传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/addingList.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument类是表示iText中PDF文档的类,此类属于com.itextpdf.kernel.pdf包。要实例化此类(写入模式),需要将其PdfWriter类的对象传递给其构造函数。

通过将上面创建的 PdfWriter 对象传递给其构造函数来实例化 PdfDocument 类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout 包的 Document 类是创建自包含 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document   
Document document = new Document(pdfDoc); 

步骤4:创建List对象

List类表示一系列垂直排列的对象。它属于com.itextpdf.layout.element包。

如下所示实例化List类。

// Creating a list  
List list = new List();

步骤5:向列表中添加元素

使用List类的add()方法通过传递字符串值向list对象添加内容,如下所示。

//  Add elements to the list 
list.add("Java"); 
list.add("JavaFX"); 
list.add("Apache Tika"); 
list.add("OpenCV");  

步骤6:将列表添加到文档

使用Document类的add()方法添加上一步中创建的list对象,如下所示。

// Adding list to the document 
document.add(list);

步骤7:关闭文档

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close();

示例

以下Java程序演示了如何使用iText库创建PDF文档并向其中添加列表。它创建一个名为addingList.pdf的PDF文档,向其中添加一个列表,并将其保存在C:/itextExamples/路径下。

将此代码保存在名为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");    
   } 
} 

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac AddingList.java 
java AddingList

执行后,上述程序将创建一个 PDF 文档,并显示以下消息。

List added

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Adding List

iText - 添加表格

本章我们将学习如何使用iText库创建PDF文档并向其中添加表格。

向Pdf添加表格

您可以通过实例化Document类来创建一个空的PDF文档。实例化此类时,需要将PdfDocument对象作为参数传递给其构造函数。然后,要向文档添加表格,需要实例化Table类并将此对象使用add()方法添加到文档中。

以下是创建包含表格的PDF文档的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将字符串值(表示需要创建PDF的路径)传递给其构造函数来实例化PdfWriter类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/addingTable.pdf"; 
PdfWriter writer = new PdfWriter(dest);

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument 类是代表 iText 中 PDF 文档的类。此类属于 com.itextpdf.kernel.pdf 包。要实例化此类(在写入模式下),需要将 PdfWriter 类的对象传递给其构造函数。

通过将上面创建的 PdfWriter 对象传递给其构造函数来实例化 PdfDocument 类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout包中的Document类是创建自包含PDF时的根元素。此类的构造函数之一接受PdfDocument类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document   
Document document = new Document(pdfDoc); 

步骤4:创建Table对象

Table类表示一个二维网格,其中填充按行和列排序的单元格。它属于com.itextpdf.layout.element包。

如下所示实例化Table类。

// Creating a table object 
float [] pointColumnWidths = {150F, 150F, 150F}; 
Table table = new Table(pointColumnWidths); 

步骤5:向表格中添加单元格

通过实例化com.itextpdf.layout.element包的Cell类来创建一个cell对象。使用此类的add()方法添加单元格的内容。

最后,要将此单元格添加到表格中,请调用Table类的addCell()方法并将cell对象作为参数传递给此方法,如下所示。

// 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 

步骤6:将表格添加到文档

使用Document类的add()方法添加上一步中创建的table对象,如下所示。

// Adding list to the document 
document.add(table);

步骤7:关闭文档

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close(); 

示例

以下Java程序演示了如何使用iText库创建PDF文档并向其中添加表格。它创建一个名为addingTable.pdf的PDF文档,向其中添加一个表格,并将其保存在C:/itextExamples/路径下。

将此代码保存在名为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..");   
   }     
}

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac AddingTable.java 
java AddingTable

执行后,上述程序将创建一个 PDF 文档,并显示以下消息。

Table created successfully..

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Adding Table

iText - 格式化单元格内容

本章我们将学习如何使用iText库创建PDF文档,并添加表格以及设置表格单元格内容的格式。

设置表格单元格格式

您可以通过实例化Document类来创建一个空的PDFDocument。实例化此类时,需要将PdfDocument对象作为参数传递给其构造函数。然后,要向文档添加表格,需要实例化Table类并将此对象使用add()方法添加到文档中。您可以使用Cell类的各种方法设置表格单元格内容的格式。

以下是设置表格单元格内容格式的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将字符串值(表示您需要创建 PDF 的路径)传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/addingBackground.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument类是表示iText中PDF文档的类。此类属于com.itextpdf.kernel.pdf包。要实例化此类(写入模式),需要将其PdfWriter类的对象传递给其构造函数。

通过将上面创建的PdfWriter对象传递给其构造函数来实例化PdfDocument类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建PdfDocument对象后,可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout 包的 Document 类是创建自包含 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document   
Document document = new Document(pdfDoc); 

步骤4:创建Table对象

Table类表示一个二维网格,其中填充按行和列排序的单元格。它属于com.itextpdf.layout.element包。

如下所示实例化Table类。

// Creating a table 
float [] pointColumnWidths = {200F, 200F}; 
Table table = new Table(pointColumnWidths); 

步骤5:创建单元格

通过实例化com.itextpdf.layout.element包的Cell类来创建一个cell对象。使用Cell类的add()方法添加单元格的内容,如下所示。

// 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 

步骤6:向单元格添加背景

创建单元格并向其中添加内容后,您可以设置单元格格式。例如,您可以使用单元格类的不同方法(例如setBackgroundColor(),setBorder(),setTextAlignment())设置其背景、对齐单元格内的文本、更改文本颜色等。

您可以将背景颜色、边框和文本对齐方式设置到上一步中创建的单元格,如下所示。

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 

步骤7:将单元格添加到表格

最后,要将此单元格添加到表格中,请调用Table类的addCell()方法并将cell对象作为参数传递给此方法,如下所示。

table.addCell(c1);

步骤8:将表格添加到文档

使用Document类的add()方法添加上一步中创建的table对象,如下所示。

// Adding list to the document 
document.add(table);

步骤9:关闭文档

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close();

示例

以下Java程序演示了如何使用iText库设置表格单元格内容的格式。它创建一个名为addingBackground.pdf的PDF文档,向其中添加一个表格,设置其单元格内容的格式,并将其保存在C:/itextExamples/路径下。

将此代码保存在名为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..");     
   } 
} 

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac BackgroundToTable.java 
java BackgroundToTable 

执行后,上述程序将创建一个 PDF 文档,并显示以下消息。

Background added successfully..

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Adding Background

iText - 设置单元格边框格式

本章我们将学习如何使用iText库设置表格单元格边框的格式。

格式化单元格边框

您可以通过实例化 Document 类来创建一个空的 PDF 文档。实例化此类时,需要将 PdfDocument 对象作为参数传递给其构造函数。

然后,要向文档添加表格,需要实例化Table类并将此对象使用add()方法添加到文档中。

您可以使用Cell类的setBorder()方法添加各种类型的边框,例如DashedBorder、SolidBorder、DottedBorder、DoubleBorder、RoundDotsBorder等,并使用各种颜色。

以下是设置表格单元格边框格式的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将字符串值(表示您需要创建 PDF 的路径)传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/coloredBorders.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument类是表示iText中PDF文档的类。此类属于com.itextpdf.kernel.pdf包。要实例化此类(写入模式),需要将其PdfWriter类的对象传递给其构造函数。

通过将上面创建的PdfWriter对象传递给其构造函数来实例化PdfDocument类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout 包的 Document 类是创建自包含 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document  
Document document = new Document(pdfDoc); 

步骤4:创建Table对象

Table类表示一个二维网格,其中填充按行和列排序的单元格。它属于com.itextpdf.layout.element包。

如下所示实例化Table类。

// Creating a table 
float [] pointColumnWidths = {200F, 200F}; 
Table table = new Table(pointColumnWidths); 

步骤5:创建单元格

通过实例化com.itextpdf.layout.element包的Cell类来创建一个单元格对象,使用Cell类的add()方法添加单元格的内容,如下所示。

// Adding cell 1 to the table 
Cell cell1 = new Cell(); // Creating a cell 
cell1.add("Name");       // Adding content to the cell 

步骤6:设置单元格边框格式

iText库提供了表示边框的各种类,例如DashedBorder、SolidBorder、DottedBorder、DoubleBorder、RoundDotsBorder等。

这些类的构造函数接受两个参数:一个表示边框颜色的color对象和一个表示边框宽度的integer

选择其中一种边框类型,并通过传递color对象和表示宽度的integer来实例化相应的边框,如下所示。

Border b1 = new DashedBorder(Color.RED, 3); 

现在,使用cell类的setBorder()方法设置单元格的边框。此方法接受类型为Border的对象作为参数。

通过将上面创建的Border对象作为参数传递给setBorder()方法来设置单元格的边框,如下所示。

c1.setBorder(b1)

最后,要将此单元格添加到表格中,请调用Table类的addCell()方法并将cell对象作为参数传递给此方法,如下所示。

table.addCell(c1);

步骤7:将表格添加到文档

使用Document类的add()方法添加上一步中创建的table对象,如下所示。

// Adding list to the document 
document.add(table);

步骤8:关闭文档

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close();

示例

以下Java程序演示了如何使用iText库设置表格单元格边框的格式。它创建一个名为coloredBorders.pdf的PDF文档,向其中添加一个表格,设置其单元格内容的格式,并将其保存在C:/itextExamples/路径下。

将此代码保存在名为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..");     
   } 
} 

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac FormatedBorders.java 
java FormatedBorders

执行后,上述程序将创建一个 PDF 文档,并显示以下消息。

Borders added successfully

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Coloured Borders

iText - 向表格添加图像

本章我们将学习如何使用iText库在PDF文档的表格中添加图像。

向表格添加图像

您可以通过实例化Document类来创建一个空的PDF文档。实例化此类时,需要将PdfDocument对象作为参数传递给其构造函数。然后,要向文档添加表格,需要实例化Table类并将此对象使用add()方法添加到文档中。

要向此表格添加图像,需要实例化Cell类,创建要添加的图像对象,并使用Cell类的add()方法将图像添加到cell对象中。

以下是将图像插入表格单元格的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter 类代表 PDF 的文档编写器,此类属于 com.itextpdf.kernel.pdf 包。此类的构造函数接受一个字符串,表示要创建 PDF 文件的路径。

通过将表示您需要创建 PDF 的路径的字符串值传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/addingImage.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument 类是代表 iText 中 PDF 文档的类。此类属于 com.itextpdf.kernel.pdf 包。要实例化此类(在写入模式下),需要将 PdfWriter 类的对象传递给其构造函数。

通过将上面创建的PdfWriter对象传递给其构造函数来实例化PdfDocument类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout包中的Document类是创建自包含PDF时的根元素。此类的构造函数之一接受PdfDocument类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document  
Document document = new Document(pdfDoc); 

步骤4:创建Table对象

Table类表示一个二维网格,其中填充按行和列排序的单元格。它属于com.itextpdf.layout.element包。

如下所示实例化Table类。

// Creating a table 
float [] pointColumnWidths = {200F, 200F}; 
Table table = new Table(pointColumnWidths); 

步骤5:创建单元格

通过实例化com.itextpdf.layout包的Cell类来创建一个cell对象,如下所示。

// Adding cell to the table
Cell cell = new Cell();  // Creating a cell 

步骤6:创建图像

要创建image对象,首先使用ImageDataFactory类的create()方法创建一个ImageData对象。作为此方法的参数,传递一个表示图像路径的字符串参数,如下所示。

// Creating an ImageData object 
String imageFile = "C:/itextExamples/javafxLogo.jpg"; 
ImageData data = ImageDataFactory.create(imageFile); 

现在,实例化com.itextpdf.layout.element包的Image类。实例化时,将上面创建的ImageData对象作为参数传递给其构造函数,如下所示。

// Creating an Image object 
Image img = new Image(data); 

使用单元格类的add()方法将image对象添加到单元格中,如下所示。

// Adding image to the cell  
cell.add(img.setAutoScale(true)); 

步骤7:将单元格添加到表格

最后,要将此单元格添加到表格中,请调用Table类的addCell()方法并将cell对象作为参数传递给此方法,如下所示。

table.addCell(cell);

步骤8:将表格添加到文档

使用Document类的add()方法添加上一步中创建的table对象,如下所示。

// Adding list to the document 
document.add(table);

步骤9:关闭文档

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close(); 

示例

以下Java程序演示了如何使用iText库在PDF文档的表格单元格中添加图像。它创建一个名为addingImage.pdf的PDF文档,向其中添加一个表格,将图像(javafxLogo.jpg)插入到其中一个单元格中,并将其保存在C:/itextExamples/路径下。

将此代码保存在名为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..");     
   } 
}  

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac AddingImageToTable.java 
java AddingImageToTable 

执行后,上述程序将创建一个 PDF 文档,并显示以下消息。

Image added to table successfully..

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Adding Image to Table

iText - 嵌套表格

本章我们将学习如何使用iText库在PDF文档的表格中添加嵌套表格。

在Pdf中添加嵌套表格

您可以通过实例化Document类来创建一个空的PDF文档。实例化此类时,需要将PdfDocument对象作为参数传递给其构造函数。然后,要向文档添加表格,需要实例化Table类并将此对象使用add()方法添加到文档中。

要向此表格添加表格,需要创建另一个表格(嵌套表格),并使用Cell类的add()方法将其传递给单元格对象。

以下是将表格插入表格单元格的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将字符串值(表示您需要创建 PDF 的路径)传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/addingNestedTable.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument 类在 iText 中代表 PDF 文档。此类属于包 com.itextpdf.kernel.pdf。要实例化此类(在写入模式下),需要将其PdfWriter类的对象传递给它的构造函数。

通过将上面创建的 PdfWriter 对象传递给其构造函数来实例化 PdfDocument 类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout 包的 Document 类是创建自包含 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document   
Document document = new Document(pdfDoc); 

步骤4:创建Table对象

Table类表示一个二维网格,其中填充按行和列排序的单元格。它属于com.itextpdf.layout.element包。

如下所示实例化Table类。

// Creating a table 
float [] pointColumnWidths = {200F, 200F}; 
Table table = new Table(pointColumnWidths); 

步骤5:创建单元格

通过实例化com.itextpdf.layout包的Cell类来创建一个cell对象,如下所示。

// Adding cell to the table 
Cell contact = new Cell();    // Creating a cell 

步骤 6:创建嵌套表格

创建单元格后,创建一个嵌套表格,并填充其单元格,如下所示。

// 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);  

步骤 7:将嵌套表格添加到单元格

现在,使用Cell类的add()方法将上面创建的嵌套表格添加到父(容器)表格的单元格中。然后,使用Table类的addCell()方法将此单元格添加到父表格中,如下所示。

contact.add(nestedTable); 
table.addCell(contact);

步骤8:将表格添加到文档

使用Document类的add()方法添加上一步中创建的table对象,如下所示。

// Adding list to the document 
document.add(table); 

步骤9:关闭文档

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close();

示例

以下 Java 程序演示了如何使用 iText 库将表格添加到 PDF 文档中表格的单元格(嵌套表格)中。它创建一个名为addingNestedTable.pdf的 PDF 文档,向其中添加一个表格,将另一个表格插入到其一个单元格中,并将其保存到C:/itextExamples/路径中。

将此代码保存在名为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..");     
   } 
}    

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac AddNestedTable.java 
java AddNestedTable 

执行后,上述程序将创建一个显示以下消息的 PDF 文档。

Nested Table Added successfully..

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Adding Nested Table

iText - 向表格添加列表

本章将介绍如何使用 iText 库将列表添加到 PDF 文档中的表格中。

在 PDF 中将列表添加到表格

您可以通过实例化Document类来创建一个空的PDF文档。实例化此类时,需要将PdfDocument对象作为参数传递给其构造函数。然后,要向文档添加表格,需要实例化Table类并将此对象使用add()方法添加到文档中。

要将列表添加到表格,需要实例化com.itextpdf.layout.element包的List类,并使用Cell类的add()方法将其插入到单元格对象中。

以下是将列表添加到表格单元格的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter 类代表 PDF 的文档编写器。此类属于 com.itextpdf.kernel.pdf 包。此类的构造函数接受一个字符串,表示要创建 PDF 文件的路径。

通过向其构造函数传递字符串值(表示需要在其中创建 PDF 的路径)来实例化 PdfWriter 类,如下所示

// Creating a PdfWriter 
String dest = "C:/itextExamples/addingObjects.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument 类在 iText 中代表 PDF 文档。此类属于包com.itextpdf.kernel.pdf。要实例化此类(在写入模式下),需要将其PdfWriter类的对象传递给它的构造函数。

通过将上面创建的PdfWriter对象传递给其构造函数来实例化PdfDocument类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout 包的 Document 类是创建自包含 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document  
Document document = new Document(pdfDoc); 

步骤4:创建Table对象

Table类表示一个二维网格,其中填充按行和列排序的单元格。它属于com.itextpdf.layout.element包。

如下所示实例化Table类。

// Creating a table 
float [] pointColumnWidths = {200F, 200F}; 
Table table = new Table(pointColumnWidths); 

步骤5:创建单元格

通过实例化com.itextpdf.layout包的Cell类来创建一个cell对象,如下所示。

// Adding cell to the table 
Cell listCell = new Cell(); // Creating a cell 

步骤 6:创建列表对象

创建单元格后,通过实例化com.itextpdf.layout.element包的List类来创建一个列表对象。通过实例化ListItem类创建列表项,并使用List类的add()方法添加已创建的项,如下所示。

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); 

步骤 7:将列表添加到表格的单元格

现在,使用Cell类的add()方法将上面创建的列表添加到表格的单元格中。然后,使用Table类的addCell()方法将此单元格添加到表格中,如下所示。

listCell.add(list); 
table.addCell(listCell);

步骤8:将表格添加到文档

使用Document类的add()方法添加上一步中创建的table对象,如下所示。

// Adding list to the document 
document.add(table);

步骤9:关闭文档

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close(); 

示例

以下 Java 程序演示了如何使用 iText 库将列表添加到 PDF 文档中表格的单元格中。它创建一个名为addingObjects.pdf的 PDF 文档,向其中添加一个表格,将一个列表插入到其一个单元格中,并将其保存到C:/itextExamples/路径中。

将此代码保存在名为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..");     
   } 
}  

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac AddingListsToTable.java 
java AddingListsToTable

执行后,上述程序将创建一个 PDF 文档,并显示以下消息。

Lists added to table successfully..

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Adding Objects

iText - 向 PDF 添加图像

本章将介绍如何使用 iText 库将图像添加到 PDF 文档中。

将图像添加到 PDF

可以通过实例化Document类来创建一个空的 PDF 文档。实例化此类时,需要将其PdfDocument对象作为参数传递给它的构造函数。要将图像添加到 PDF,请创建一个需要添加的图像对象,并使用Document类的add()方法添加它。

以下是将图像添加到 PDF 文档的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将字符串值(表示您需要创建 PDF 的路径)传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/addingImage.pdf"; 
PdfWriter writer = new PdfWriter(dest);

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument 类是代表 iText 中 PDF 文档的类。此类属于 com.itextpdf.kernel.pdf 包。要实例化此类(在写入模式下),需要将 PdfWriter 类的对象传递给其构造函数。

通过将上面创建的 PdfWriter 对象传递给其构造函数来实例化 PdfDocument 类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout 包的 Document 类是创建自包含 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document   Document 
document = new Document(pdfDoc); 

步骤 4:创建图像对象

要创建image对象,首先使用ImageDataFactory类的create()方法创建一个ImageData对象。作为此方法的参数,传递一个表示图像路径的字符串参数,如下所示。

// Creating an ImageData object 
String imageFile = "C:/itextExamples/javafxLogo.jpg"; 
ImageData data = ImageDataFactory.create(imageFile);

现在,实例化com.itextpdf.layout.element包的Image类。实例化时,将上面创建的ImageData对象作为参数传递给它的构造函数,如下所示。

// Creating an Image object 
Image img = new Image(data); 

步骤 5:将图像添加到文档

使用Document类的add()方法添加上一步中创建的图像对象,如下所示。

// Adding image to the document 
document.add(img);

步骤 6:关闭 Document

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close(); 

示例

以下 Java 程序演示了如何使用 iText 库将图像添加到 PDF 文档中。它创建一个名为addingImage.pdf的 PDF 文档,向其中添加一个图像,并将其保存到C:/itextExamples/路径中。

将此代码保存在名为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");    
   } 
}  

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac AddingImage.java 
java AddingImage

执行后,上述程序将创建一个显示以下消息的 PDF 文档。

Image added

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Adding Image

iText - 设置图像位置

本章将介绍如何使用 iText 库设置 PDF 文档中图像的位置。

设置图像的位置

您可以通过实例化 Document 类来创建一个空的 PDF 文档。实例化此类时,需要将 PdfDocument 对象作为参数传递给其构造函数。

要将图像添加到 pdf,请创建一个需要添加的图像对象,并使用Document类的add()方法添加它。可以使用Image类的setFixedPosition()方法将图像插入文档上的所需位置。

以下是设置 PDF 文档中图像位置的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将字符串值(表示您需要创建 PDF 的路径)传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/positionOfImage.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument 类是代表 iText 中 PDF 文档的类。此类属于 com.itextpdf.kernel.pdf 包。要实例化此类(在写入模式下),需要将 PdfWriter 类的对象传递给其构造函数。

通过将上面创建的 PdfWriter 对象传递给其构造函数来实例化 PdfDocument 类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout 包的 Document 类是创建自包含 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document  
Document document = new Document(pdfDoc); 

步骤 4:创建图像对象

要创建图像对象,首先使用ImageDataFactory类的create()方法创建一个ImageData对象。作为此方法的参数,传递一个表示图像路径的字符串参数,如下所示。

// Creating an ImageData object 
String imageFile = "C:/itextExamples/javafxLogo.jpg"; 
ImageData data = ImageDataFactory.create(imageFile); 

现在,实例化com.itextpdf.layout.element包的Image类。实例化时,将ImageData对象作为参数传递给它的构造函数,如下所示。

// Creating an Image object 
Image img = new Image(data);

步骤 5:设置图像的位置

可以使用ImagesetFixedPosition()方法设置 PDF 文档中图像的位置。使用此方法将图像的位置设置为文档上的坐标 (100, 250),如下所示。

// Setting the position of the image to the center of the page 
image.setFixedPosition(100, 250);

步骤 6:将图像添加到文档

现在,使用Document类的add()方法添加上一步中创建的图像对象,如下所示。

// Adding image to the document 
document.add(img); 

步骤7:关闭文档

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close(); 

示例

以下 Java 程序演示了如何使用 iText 库在 PDF 文档上设置图像的所需位置。它创建一个名为positionOfImage.pdf的 PDF 文档,向其中添加一个图像,将其设置得更靠近页面中心,并将其保存到C:/itextExamples/路径中。

将此代码保存在名为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");    
   } 
}

使用以下命令从命令提示符编译并执行保存的 Java 文件。

javac SettingPosition.java 
java SettingPosition 

执行后,上述程序将创建一个 PDF 文档,并显示以下消息。

Image added

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Position Of Image

iText - 缩放图像

本章将介绍如何使用 iText 库缩放 PDF 文档中的图像。

缩放 PDF 中的图像

您可以通过实例化 Document 类来创建一个空的 PDF 文档。实例化此类时,需要将 PdfDocument 对象作为参数传递给其构造函数。

要将图像添加到 PDF,请创建一个需要添加的图像对象,并使用Document类的add()方法添加它。可以使用setAutoScale()方法缩放图像。

以下是缩放 PDF 文档中现有图像的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将字符串值(表示您需要创建 PDF 的路径)传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/autoScale.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument 类是代表 iText 中 PDF 文档的类。此类属于 com.itextpdf.kernel.pdf 包。要实例化此类(在写入模式下),需要将 PdfWriter 类的对象传递给其构造函数。

通过将上面创建的PdfWriter对象传递给其构造函数来实例化PdfDocument类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout 包的 Document 类是创建自包含 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document   
Document document = new Document(pdfDoc);

步骤 4:创建图像对象

要创建图像对象,首先使用ImageDataFactory类的create()方法创建一个ImageData对象。作为此方法的参数,传递一个表示图像路径的字符串参数,如下所示。

// Creating an ImageData object 
String imageFile = "C:/itextExamples/javafxLogo.jpg"; 
ImageData data = ImageDataFactory.create(imageFile); 

现在,实例化com.itextpdf.layout.element包的Image类。实例化时,将ImageData对象作为参数传递给它的构造函数,如下所示。

// Creating an Image object 
Image img = new Image(data); 

步骤 5:缩放图像

可以使用setAutoScale()方法缩放图像。

// Setting the position of the image to the center of the page 
image.setFixedPosition(100, 250); 

步骤 6:将图像添加到文档

现在,使用Document类的add()方法添加上一步中创建的image对象,如下所示。

// Adding image to the document 
document.add(img); 

步骤7:关闭文档

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close(); 

示例

以下 Java 程序演示了如何使用 iText 库根据文档大小缩放 PDF 文档中的图像。它创建一个名为autoScale.pdf的 PDF 文档,向其中添加一个图像,根据页面尺寸缩放它,并将其保存到C:/itextExamples/路径中。

将此代码保存在名为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");    
   } 
}  

使用以下命令从命令提示符编译并执行保存的 Java 文件。

javac SettingAutoScale.java 
java SettingAutoScale 

执行后,上述程序将创建一个显示以下消息的 PDF 文档。

Image Scaled

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Auto Scale

iText - 旋转图像

本章将介绍如何使用 iText 库在 PDF 文档中插入图像以及如何旋转该图像。

旋转 PDF 中的图像

您可以通过实例化 Document 类来创建一个空的 PDF 文档。实例化此类时,需要将 PdfDocument 对象作为参数传递给其构造函数。

要将图像添加到 PDF,请创建一个需要添加的图像对象,并使用Document类的add()方法添加它。可以使用setRotationAngle()方法旋转图像。

以下是旋转 PDF 文档中图像的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将字符串值(表示您需要创建 PDF 的路径)传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/rotatingImage.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument 类是代表 iText 中 PDF 文档的类。此类属于 com.itextpdf.kernel.pdf 包。要实例化此类(在写入模式下),需要将 PdfWriter 类的对象传递给其构造函数。

通过将 PdfWriter 对象传递给其构造函数来实例化 PdfDocument 类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout 包的 Document 类是创建自包含 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document   
Document document = new Document(pdfDoc); 

步骤 4:创建图像对象

要创建图像对象,首先使用ImageDataFactory类的create()方法创建一个ImageData对象。作为此方法的参数,传递一个表示图像路径的字符串参数,如下所示。

// Creating an ImageData object 
String imageFile = "C:/itextExamples/javafxLogo.jpg"; 
ImageData data = ImageDataFactory.create(imageFile); 

现在,实例化com.itextpdf.layout.element包的Image类。实例化时,将ImageData对象作为参数传递给它的构造函数,如下所示。

// Creating an Image object 
Image img = new Image(data);

步骤 5:旋转图像

可以使用setRotationAngle()方法旋转图像。对于此方法,需要传递一个整数,表示要旋转图像的角度。

// Rotating the image 
image.setRotationAngle(45); 

步骤 6:将图像添加到文档

现在,使用Document类的add()方法添加上一步中创建的图像对象,如下所示。

// Adding image to the document 
document.add(img); 

步骤7:关闭文档

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close(); 

示例

以下 Java 程序演示了如何使用 iText 库以给定角度旋转 PDF 文档上的图像。

它创建一个名为rotatingImage.pdf的 PDF 文档,向其中添加一个图像,旋转它,并将其保存到C:/itextExamples/路径中。

将此代码保存在名为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");    
   } 
}   

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac RotatingImage.java 
java RotatingImage 

执行后,上述程序将创建一个显示以下消息的 PDF 文档。

Image Rotated

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Rotating Image

iText - 文本注释

本章将介绍如何使用 iText 库向 PDF 文档添加文本注释。

在 PDF 中创建文本注释

您可以通过实例化 Document 类来创建一个空的 PDF 文档。实例化此类时,需要将 PdfDocument 对象作为参数传递给其构造函数。

要在 PDF 文档中使用文本注释,需要创建一个PdfTextAnnotation类的对象并将其添加到PdfPage中。

以下是如何在 PDF 文档中使用文本注释的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将字符串值(表示您需要创建 PDF 的路径)传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/textAnnotation.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument 类是代表 iText 中 PDF 文档的类。此类属于 com.itextpdf.kernel.pdf 包。要实例化此类(在写入模式下),需要将 PdfWriter 类的对象传递给其构造函数。

通过将PdfWriter对象传递给其构造函数来实例化PdfDocument类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout包中的Document类是创建自包含PDF时的根元素。此类的构造函数之一接受PdfDocument类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document   
Document document = new Document(pdfDoc); 

步骤 4:创建 PdfAnnotation 对象

com.itextpdf.kernel.pdf.annot包的PdfAnnotation类表示所有注释的超类。

在其派生类中,PdfTextAnnotation类表示文本注释。创建此类的对象,如下所示。

// Creating PdfAnnotation 
Rectangle rect = new Rectangle(20, 800, 0, 0); 
PdfAnnotation ann = new PdfTextAnnotation(rect);

步骤 5:设置注释的颜色

使用PdfAnnotation类的setColor()方法设置注释的颜色。为此方法传递表示注释颜色的color对象作为参数。

// Setting color to the annotation 
ann.setColor(Color.GREEN); 

步骤 6:设置注释的标题和内容

分别使用PdfAnnotation类的setTitle()setContents()方法设置注释的标题和内容,如下所示。

// Setting title to the annotation 
ann.setTitle(new PdfString("Hello"));        

// Setting contents of the annotation 
ann.setContents("Hi welcome to Tutorialspoint."); 

步骤 7:将注释添加到页面

使用PdfDocument类的addNewPage()方法创建一个新的PdfPage类,并使用PdfPage类的addAnnotation()方法添加上述注释,如下所示。

// Creating a new page PdfPage page = 
pdf.addNewPage();        

// Adding annotation to a page in a PDF 
page.addAnnotation(ann); 

步骤8:关闭文档

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close(); 

示例

以下Java程序演示了如何使用iText库向PDF文档添加文本注释。它创建一个名为textAnnotation.pdf的PDF文档,向其中添加文本注释,并将其保存到C:/itextExamples/路径。

将此代码保存在名为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");    
   } 
}

使用以下命令从命令提示符编译并执行保存的 Java 文件。

javac TextAnnotation.java 
java TextAnnotation 

执行后,上述程序将创建一个显示以下消息的 PDF 文档。

Annotation added successfully 

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Text Annotation

iText - 链接注释

本章将介绍如何使用iText库向PDF文档添加链接注释。

在PDF中创建链接注释

您可以通过实例化 Document 类来创建一个空的 PDF 文档。实例化此类时,需要将 PdfDocument 对象作为参数传递给其构造函数。

要在PDF文档中使用文本注释,需要创建一个PdfTextAnnotation类的对象并将其添加到PdfPage。

以下是PDF文档中使用文本注释的步骤。

步骤1:创建PdfWriter对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将字符串值(表示需要创建PDF的路径)传递给其构造函数来实例化PdfWriter类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/linkAnnotation.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument 类是代表 iText 中 PDF 文档的类。此类属于 com.itextpdf.kernel.pdf 包。要实例化此类(在写入模式下),需要将 PdfWriter 类的对象传递给其构造函数。

通过向其构造函数传递PdfWriter对象来实例化PdfDocument类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout包中的Document类是创建自包含PDF时的根元素。此类的构造函数之一接受PdfDocument类的对象。

通过传递在上一步创建的PdfDocument类的对象来实例化Document类,如下所示。

// Creating a Document  
Document document = new Document(pdfDoc); 

步骤 4:创建 PdfAnnotation 对象

com.itextpdf.kernel.pdf.annot包的PdfAnnotation类表示所有注释的超类。

在其派生类中,PdfLinkAnnotation类表示链接注释。创建此类的对象,如下所示。

// Creating a PdfLinkAnnotation object 
Rectangle rect = new Rectangle(0, 0); 
PdfLinkAnnotation annotation = new PdfLinkAnnotation(rect); 

步骤5:设置注释的动作

使用PdfLinkAnnotation类的setAction()方法设置注释的动作,如下所示。

// Setting action of the annotation 
PdfAction action = PdfAction.createURI("http: // www.tutorialspoint.com/"); 
annotation.setAction(action); 

步骤6:创建链接

通过实例化com.itextpdf.layout.element包的Link类来创建链接,如下所示。

// Creating a link 
Link link = new Link("Click here", annotation); 

步骤7:将链接注释添加到段落

通过实例化Paragraph类创建一个新的段落,并使用此类的add()方法添加上一步创建的链接,如下所示。

// Creating a paragraph 
Paragraph paragraph = new Paragraph("Hi welcome to Tutorialspoint ");        

// Adding link to paragraph 
paragraph.add(link.setUnderline());

步骤8:将段落添加到文档

使用Document类的add()方法将段落添加到文档,如下所示。

// Adding paragraph to document 
document.add(paragraph); 

步骤9:关闭文档

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close(); 

示例

以下Java程序演示了如何使用iText库向PDF文档添加链接注释。

它创建一个名为linkAnnotation.pdf的PDF文档,向其中添加链接注释,并将其保存到C:/itextExamples/路径。

将此代码保存在名为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");    
   } 
}  

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac LinkAnnotation.java 
java LinkAnnotation 

执行后,上述程序将创建一个显示以下消息的 PDF 文档。

Annotation added successfully

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Link Annotation

iText - 线性注释

本章将介绍如何使用iText库向PDF文档添加线条注释。

在Pdf中创建线条注释

可以通过实例化Document类来创建一个空的PDF文档。实例化此类时,需要将其构造函数中传递一个PdfDocument对象作为参数。

要在 PDF 文档中使用文本注释,需要创建一个PdfTextAnnotation类的对象并将其添加到PdfPage中。

以下是如何在 PDF 文档中使用文本注释的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将表示您需要创建 PDF 的路径的字符串值传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/lineAnnotation.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument类是表示iText中PDF文档的类。此类属于com.itextpdf.kernel.pdf包。要实例化此类(写入模式),需要将其PdfWriter类的对象传递给其构造函数。

通过将 PdfWriter 对象传递给其构造函数来实例化 PdfDocument 类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建PdfDocument对象后,可以使用其类提供的相应方法添加各种元素,如页面、字体、文件附件、事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout包中的Document类是创建自包含PDF时的根元素。此类的构造函数之一接受PdfDocument类的对象。

通过传递在上一步创建的PdfDocument类的对象来实例化Document类,如下所示。

// Creating a Document  
Document document = new Document(pdfDoc); 

步骤 4:创建 PdfAnnotation 对象

com.itextpdf.kernel.pdf.annot包的PdfAnnotation类是所有注释的超类。

在其派生类中,PdfLineAnnotation类表示线条注释。创建此类的对象,如下所示。

// Creating PdfAnnotation 
Rectangle rect = new Rectangle(20, 800, 0, 0); 
PdfAnnotation annotation = new PdfLineAnnotation(rect); 

步骤 5:设置注释的颜色

使用PdfAnnotation类的setColor()方法设置注释的颜色。此方法的参数是一个表示注释颜色的颜色对象。

// Setting color to the annotation 
annotation.setColor(Color.BLUE); 

步骤 6:设置注释的标题和内容

分别使用PdfAnnotation类的setTitle()setContents()方法设置注释的标题和内容,如下所示。

// Setting title to the PdfLineAnnotation 
annotation.setTitle(new PdfString("iText"));        

// Setting contents of the PdfLineAnnotation 
annotation.setContents("Hi welcome to Tutorialspoint"); 

步骤 7:将注释添加到页面

使用PdfDocument类的addNewPage()方法创建一个新的PdfPage类,并使用PdfPage类的addAnnotation()方法添加上面创建的注释,如下所示。

// Creating a new page 
PdfPage page = pdf.addNewPage();

// Adding annotation to a page in a PDF 
page.addAnnotation(annotation); 

步骤8:关闭文档

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close(); 

示例

以下Java程序演示了如何使用iText库向PDF文档添加线条注释。它创建一个名为lineAnnotation.pdf的PDF文档,向其中添加线条注释,并将其保存到C:/itextExamples/路径。

将此代码保存在名为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");   
   } 
} 

使用以下命令从命令提示符编译并执行保存的Java文件:

javac LineAnnotation.java 
java LineAnnotation 

执行后,上述程序将创建一个显示以下消息的 PDF 文档。

Annotation added successfully

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Line Annotation

iText - 标记注释

本章将介绍如何使用iText库向PDF文档添加文本标记注释。

在PDF中创建标记注释

可以通过实例化Document类来创建一个空的PDF文档。实例化此类时,需要将其构造函数中传递一个PdfDocument对象作为参数。要在PDF文档中使用文本注释,需要创建一个PdfTextAnnotation类的对象并将其添加到PdfPage

以下是如何在 PDF 文档中使用文本注释的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将字符串值(表示您需要创建 PDF 的路径)传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/markupAnnotation.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument 类是代表 iText 中 PDF 文档的类。此类属于 com.itextpdf.kernel.pdf 包。要实例化此类(在写入模式下),需要将 PdfWriter 类的对象传递给其构造函数。

通过将 PdfWriter 对象传递给其构造函数来实例化 PdfDocument 类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout包中的Document类是创建自包含PDF时的根元素。此类的构造函数之一接受PdfDocument类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document   
Document document = new Document(pdfDoc); 

步骤 4:创建 PdfAnnotation 对象

com.itextpdf.kernel.pdf.annot包的PdfAnnotation类表示所有注释的超类。

在其派生类中,PdfTextMarkupAnnotation类表示文本标记注释。创建此类的对象,如下所示。

// 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);

步骤 5:设置注释的颜色

使用PdfAnnotation类的setColor()方法设置注释的颜色。此方法的参数是一个表示注释颜色的颜色对象。

// Setting color to the annotation 
annotation.setColor(Color.YELLOW);

步骤 6:设置注释的标题和内容

分别使用PdfAnnotation类的setTitle()setContents()方法设置注释的标题和内容。

// Setting title to the annotation 
annotation.setTitle(new PdfString("Hello!"));        

// Setting contents to the annotation 
annotation.setContents(new PdfString("Hi welcome to Tutorialspoint")); 

步骤 7:将注释添加到页面

使用PdfDocument类的addNewPage()方法创建一个新的PdfPage类,并使用PdfPage类的addAnnotation()方法添加上面创建的注释,如下所示。

// Creating a new Pdfpage 
PdfPage pdfPage = pdfDoc.addNewPage();        

// Adding annotation to a page in a PDF 
pdfPage.addAnnotation(annotation); 

步骤8:关闭文档

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close(); 

示例

以下Java程序演示了如何使用iText库向PDF文档添加文本标记注释。它创建一个名为markupAnnotation.pdf的PDF文档,向其中添加文本标记注释,并将其保存到C:/itextExamples/路径。

将此代码保存在名为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");       
   }     
}      

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac MarkupAnnotation.java 
java MarkupAnnotation 

执行后,上述程序将创建一个显示以下消息的 PDF 文档。

Annotation added successfully

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Markup Annotation

iText - 圆形注释

本章将介绍如何使用iText库向PDF文档添加圆形注释。

在PDF中创建圆形注释

您可以通过实例化 Document 类来创建一个空的 PDF 文档。实例化此类时,需要将 PdfDocument 对象作为参数传递给其构造函数。

要在PDF文档中使用文本注释,需要创建一个PdfTextAnnotation类的对象并将其添加到Pdfpage

以下是如何在 PDF 文档中使用文本注释的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将字符串值(表示需要创建PDF的路径)传递给其构造函数来实例化PdfWriter类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/circleAnnotation.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument 类是代表 iText 中 PDF 文档的类。此类属于 com.itextpdf.kernel.pdf 包。要实例化此类(在写入模式下),需要将 PdfWriter 类的对象传递给其构造函数。

通过将 PdfWriter 对象传递给其构造函数来实例化 PdfDocument 类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout 包的 Document 类是创建自包含 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document  
Document document = new Document(pdfDoc); 

步骤 4:创建 PdfAnnotation 对象

com.itextpdf.kernel.pdf.annot包的PdfAnnotation类表示所有注释的超类。

在其派生类中,PdfCircleAnnotation类表示圆形注释。创建此类的对象,如下所示。

// Creating a PdfCircleAnnotation object Rectangle 
rect = new Rectangle(150, 770, 50, 50); 
PdfAnnotation annotation = new PdfCircleAnnotation(rect); 

步骤 5:设置注释的颜色

使用PdfAnnotation类的setColor()方法设置注释的颜色。此方法的参数是一个表示注释颜色的颜色对象。

// Setting color to the annotation 
annotation.setColor(Color.YELLOW); 

步骤 6:设置注释的标题和内容

分别使用PdfAnnotation类的setTitle()setContents()方法设置注释的标题和内容。

// Setting title to the annotation 
annotation.setTitle(new PdfString("circle annotation"));        

// Setting contents of the annotation 
annotation.setContents(new PdfString("Hi welcome to Tutorialspoint")); 

步骤 7:将注释添加到页面

使用PdfDocument类的addNewPage()方法创建一个新的PdfPage类,并使用PdfPage类的addAnnotation()方法添加上面创建的注释,如下所示。

// Creating a new page 
PdfPage page = pdf.addNewPage();        

// Adding annotation to a page in a PDF 
page.addAnnotation(ann); 

步骤8:关闭文档

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close(); 

示例

以下Java程序演示了如何使用iText库向PDF文档添加圆形注释。它创建一个名为circleAnnotation.pdf的PDF文档,向其中添加圆形注释,并将其保存到C:/itextExamples/路径。

将此代码保存在名为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");       
   }   
}

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac PdfCircleAnnotation.java 
java PdfCircleAnnotation 

执行后,上述程序将创建一个显示以下消息的 PDF 文档。

Annotation added successfully

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Circle Annotation

iText - 绘制弧线

本章将介绍如何使用iText库在PDF文档上绘制弧线。

在PDF上绘制弧线

您可以通过实例化 Document 类来创建一个空的 PDF 文档。实例化此类时,需要将 PdfDocument 对象作为参数传递给其构造函数。

要在PdfDocument上绘制弧线,请实例化com.itextpdf.kernel.pdf.canvas包的PdfCanvas类,并使用此类的arc()方法创建弧线。

以下是PDF文档上绘制弧线的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将字符串值(表示您需要创建 PDF 的路径)传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/drawingArc.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument 类是代表 iText 中 PDF 文档的类。此类属于 com.itextpdf.kernel.pdf 包。要实例化此类(在写入模式下),需要将 PdfWriter 类的对象传递给其构造函数。

通过将 PdfWriter 对象传递给其构造函数来实例化 PdfDocument 类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout 包的 Document 类是创建自包含 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document   
Document document = new Document(pdfDoc); 

步骤4:创建PdfCanvas对象

使用PdfDocument类的addNewPage()方法创建一个新的PdfPage类。

通过将上面创建的PdfPage对象传递到此类的构造函数来实例化com.itextpdf.kernel.pdf.canvas包的PdfCanvas对象,如下所示。

// Creating a new page 
PdfPage pdfPage = pdfDoc.addNewPage();           

// Creating a PdfCanvas object 
PdfCanvas canvas = new PdfCanvas(pdfPage); 

步骤5:绘制弧线

使用Canvas类的arc()方法绘制弧线,并使用fill()方法填充它,如下所示。

// Drawing an arc 
canvas.arc(50, 50, 300, 545, 0, 360);   

// Filling the arc 
canvas.fill(); 

步骤 6:关闭 Document

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close();

示例

以下Java程序演示了如何使用iText库在PDF文档中绘制弧线。

它创建一个名为drawingArc.pdf的PDF文档,在其中绘制一个弧线,并将其保存到C:/itextExamples/路径。

将此代码保存在名为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");       
   }     
} 

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac DrawingArc.java 
java DrawingArc

执行后,上述程序将创建一个 PDF 文档,并显示以下消息。

Object drawn on pdf successfully 

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Draw an Arc

iText - 绘制直线

本章将介绍如何使用iText库在PDF文档上绘制直线。

在PDF上绘制直线

可以通过实例化Document类来创建一个空的PDF文档。实例化此类时,需要将其构造函数中传递一个PdfDocument对象作为参数。

要在PdfDocument上绘制直线,请实例化com.itextpdf.kernel.pdf.canvas包的PdfCanvas类,并使用此类的moveTo()lineTO()方法创建直线。

以下是PDF文档上绘制直线的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将字符串值(表示您需要创建 PDF 的路径)传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/drawingLine.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument 类是代表 iText 中 PDF 文档的类。此类属于 com.itextpdf.kernel.pdf 包。要实例化此类(在写入模式下),需要将 PdfWriter 类的对象传递给其构造函数。

通过将上面创建的 PdfWriter 对象传递给其构造函数来实例化 PdfDocument 类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer);

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout 包的 Document 类是创建自包含 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document   
Document document = new Document(pdfDoc); 

步骤4:创建PdfCanvas对象

使用PdfDocument类的addNewPage()方法创建一个新的PdfPage类。

通过将上面创建的PdfPage对象传递到此类的构造函数来实例化com.itextpdf.kernel.pdf.canvas包的PdfCanvas对象,如下所示。

// Creating a new page 
PdfPage pdfPage = pdfDoc.addNewPage();           

// Creating a PdfCanvas object 
PdfCanvas canvas = new PdfCanvas(pdfPage); 

步骤5:绘制直线

使用Canvas类的moveTO()方法设置直线的初始点,如下所示。

// Initial point of the line 
canvas.moveTo(100, 300); 

现在,使用lineTo()方法从该点绘制到另一个点的直线,如下所示。

// Drawing the line 
canvas.lineTo(500, 300); 

步骤 6:关闭 Document

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close(); 

示例

以下Java程序演示了如何使用iText库在PDF文档中绘制直线。它创建一个名为drawingLine.pdf的PDF文档,在其中绘制一个弧线,并将其保存到C:/itextExamples/路径。

将此代码保存在名为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");             
   }     
}

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac DrawingLine.java 
java DrawingLine

执行后,上述程序将创建一个 PDF 文档,并显示以下消息。

Object drawn on pdf successfully 

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Drawing Line

iText - 绘制圆形

本章将介绍如何使用iText库在PDF文档上绘制圆形。

在Pdf上绘制圆形

您可以通过实例化 Document 类来创建一个空的 PDF 文档。实例化此类时,需要将 PdfDocument 对象作为参数传递给其构造函数。

要在PdfDocument上绘制圆形,请实例化com.itextpdf.kernel.pdf.canvas包的PdfCanvas类,并调用此类的circle()方法。

以下是PDF文档上绘制圆形的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将字符串值(表示您需要创建 PDF 的路径)传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/drawingCircle.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument 对象

PdfDocument 类是代表 iText 中 PDF 文档的类。此类属于 com.itextpdf.kernel.pdf 包。要实例化此类(在写入模式下),需要将 PdfWriter 类的对象传递给其构造函数。

通过向其构造函数传递PdfWriter对象来实例化PdfDocument类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤3:创建Document对象

com.itextpdf.layout 包的 Document 类是创建自包含 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。

通过将上一步骤中创建的 PdfDocument 类对象传递给构造函数来实例化 Document 类,如下所示。

// Creating a Document  
Document document = new Document(pdfDoc); 

步骤4:创建PdfCanvas对象

使用PdfDocument类的addNewPage()方法创建一个新的PdfPage类。通过将PdfPage对象传递到此类的构造函数来实例化com.itextpdf.kernel.pdf.canvas包的PdfCanvas对象,如下所示。

// Creating a new page 
PdfPage pdfPage = pdfDoc.addNewPage();           

// Creating a PdfCanvas object 
PdfCanvas canvas = new PdfCanvas(pdfPage); 

步骤5:设置颜色

使用Canvas类的setColor()方法设置圆形的颜色,如下所示。

// Setting color to the circle 
Color color = Color.GREEN; 
canvas.setColor(color, true); 

步骤6:绘制圆形

通过调用Canvascircle()方法绘制圆形,如下所示。

// creating a circle 
canvas.circle(300, 400, 200); 

步骤7:关闭文档

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close(); 

示例

以下Java程序演示了如何使用iText库在pdf文档上绘制圆形。它创建一个名为drawingCircle.pdf的PDF文档,在其中绘制一个圆形,并将其保存到C:/itextExamples/路径。

将此代码保存在名为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");
   }     
} 

使用以下命令从命令提示符编译并执行保存的Java文件。

javac DrawingCircle.java 
java DrawingCircle

执行后,上述程序将创建一个显示以下消息的 PDF 文档。

Object drawn on pdf successfully 

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Drawing Circle

iText - 设置字体

本章将介绍如何使用iText库在PDF文档中设置文本的颜色和字体。

在PDF中设置文本字体

您可以通过实例化 Document 类来创建一个空的 PDF 文档。实例化此类时,需要将 PdfDocument 对象作为参数传递给其构造函数。

要向文档添加段落,需要实例化Paragraph类并将此对象使用add()方法添加到文档中。可以使用setFontColor()setFont()方法分别设置文本的颜色和字体。

以下是PDF文档中设置文本颜色和字体的步骤。

步骤 1:创建 PdfWriter 对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将字符串值(表示您需要创建 PDF 的路径)传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter 
String dest = "C:/itextExamples/fonts.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

当将此类型的对象传递给 PdfDocument(类)时,添加到此文档的每个元素都将写入指定的文件。

步骤 2:创建 PdfDocument

PdfDocument 类是代表 iText 中 PDF 文档的类。此类属于 com.itextpdf.kernel.pdf 包。要实例化此类(在写入模式下),需要将 PdfWriter 类的对象传递给其构造函数。

通过将 PdfWriter 对象传递给其构造函数来实例化 PdfDocument 类,如下所示。

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer); 

创建 PdfDocument 对象后,您可以使用其类提供的相应方法添加各种元素,例如页面、字体、文件附件和事件处理程序。

步骤 3:创建 Document 类

com.itextpdf.layout 包的 Document 类是创建自包含 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。

通过传递在上一步创建的PdfDocument类的对象来实例化Document类,如下所示。

// Creating a Document   
Document document = new Document(pdfDoc); 

步骤4:创建文本

通过实例化com.itextpdf.layout.element包的Text类来创建文本,如下所示。

// Creating text object 
Text text = new Text("Tutorialspoint"); 

步骤5:设置文本的字体和颜色

使用com.itextpdf.kernel.font包的PdfFontFactory类的createFont()方法创建PdfFont对象,如下所示

// Setting font of the text PdfFont 
font = PdfFontFactory.createFont(FontConstants.HELVETICA_BOLD); 

现在,使用Text类的setFont()方法为文本设置字体。将PdfFont对象作为参数传递,如下所示。

text1.setFont(font);

要设置文本颜色,请调用Text类的setFontColor()方法,如下所示。

// Setting font color 
text.setFontColor(Color.GREEN); 

步骤6:向段落添加文本

创建一个Paragraph类对象,并使用其add()方法添加上面创建的文本,如下所示。

// Creating Paragraph 
Paragraph paragraph = new Paragraph();  

// Adding text to the paragraph 
paragraph.add(text); 

步骤7:将段落添加到文档

使用Document类的add()方法将段落添加到文档,如下所示。

doc.add(paragraph1)

步骤8:关闭文档

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close(); 

示例

下面的Java程序演示了如何使用iText库在PDF中为文本设置颜色和字体。它创建一个名为fonts.pdf的PDF文档,格式化文本,并将其保存到C:/itextExamples/路径。

将此代码保存在名为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 ..");   
   }     
}   

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac FormatingTheText.java 
java FormatingTheText 

执行后,上述程序将创建一个显示以下消息的 PDF 文档。

Text added to pdf ..

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Fonts

iText - 缩小内容

在本节中,我们将学习如何使用iText库缩放PDF文档中的图像。

缩小PDF中的内容

以下是使用iText库缩小PDF页面内容的步骤。

步骤1:创建PdfWriter和PdfReader对象

PdfWriter类表示PDF的DocWriter。此类属于com.itextpdf.kernel.pdf包。此类的构造函数接受一个字符串,表示要创建PDF文件的路径。

通过将字符串值(表示您需要创建 PDF 的路径)传递给其构造函数来实例化 PdfWriter 类,如下所示。

// Creating a PdfWriter object 
String dest = "C:/itextExamples/shrinking.pdf"; 
PdfWriter writer = new PdfWriter(dest); 

要读取现有pdf中的数据,请创建一个PdfReader对象,如下所示。

// Creating a PdfReader 
String src = "C:/itextExamples/pdfWithImage.pdf"; 
PdfReader reader = new PdfReader(src); 

步骤2:创建PdfDocument对象

PdfDocument 类是代表 iText 中 PDF 文档的类。此类属于 com.itextpdf.kernel.pdf 包。要实例化此类(在写入模式下),需要将 PdfWriter 类的对象传递给其构造函数。

通过将PdfWriterPdfReader对象传递给构造函数,创建源和目标PDF文档,如下所示。

// Creating a PdfDocument objects 
PdfDocument destpdf = new PdfDocument(writer);         
PdfDocument srcPdf = new PdfDocument(reader); 

步骤3:打开现有PDF中的页面

使用PdfPage类的getPage()方法从源PDF获取页面。使用此对象,获取源文档页面的大小,如下所示。

// Opening a page from the existing PDF 
PdfPage origPage = srcPdf.getPage(1);       

// Getting the page size 
Rectangle orig = origPage.getPageSizeWithRotation(); 

步骤4:缩小源pdf的内容

使用AffineTransform类的getScaleInstance()方法,缩小源文档页面的内容,如下所示。

// Shrink original page content using transformation matrix 
AffineTransform transformationMatrix = AffineTransform.getScaleInstance(    
   page.getPageSize().getWidth()/ orig.getWidth()/2,    
   page.getPageSize().getHeight()/ orig.getHeight()/2); 

步骤5:复制页面

将上一步创建的仿射变换矩阵与目标PDF文档的canvas对象的矩阵连接,如下所示。

// Concatenating the affine transform matrix to the current matrix 
PdfCanvas canvas = new PdfCanvas(page);       
canvas.concatMatrix(transformationMatrix); 

现在,将页面副本添加到目标PDF的canvas对象到源文档,如下所示。

// Add the object to the canvas 
PdfFormXObject pageCopy = origPage.copyAsFormXObject(destpdf); 
canvas.addXObject(pageCopy, 0, 0); 

步骤6:创建Document对象

com.itextpdf.layout 包的 Document 类是创建自包含 PDF 时的根元素。此类的构造函数之一接受 PdfDocument 类的对象。

通过传递PdfDocument类的对象来实例化Document类,如下所示。

// Creating a Document   
Document document = new Document(destpdf); 

步骤7:关闭文档

使用 Document 类的 close() 方法关闭文档,如下所示。

// Closing the document 
document.close();

示例

下面的Java程序演示了如何使用iText库缩小PDF页面的内容。它创建一个名为shrinkingPDF.pdf的PDF文档,缩小pdf中的图像,并将其保存到C:/itextExamples/路径。

将此代码保存在名为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..");
   }
}      

使用以下命令从命令提示符编译并执行保存的Java文件:

javac ShrinkingPDF.java 
java ShrinkingPDF

执行后,上述程序将创建一个 PDF 文档,并显示以下消息。

Table created successfully..

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Shrinking

iText - 平铺 PDF 页面

下面的Java程序演示了如何使用iText库将PDF页面的内容平铺到不同的页面。它创建一个名为tilingPdfPages.pdf的PDF文档,并将其保存到C:/itextExamples/路径。

将此代码保存在名为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..");
   }
}

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac TilingPDFPages.java 
java TilingPDFPages

执行后,上述程序将创建一个 PDF 文档,并显示以下消息。

PDF created successfully..

如果验证指定的路径,您可以找到创建的PDF文档,如下所示:

Tiling PDF Pages

iText - N-up (多页排版)

下面的Java程序演示了如何使用iText库在PDF页面上执行N-up操作。它创建一个名为nUppingPDF.pdf的PDF文档,并将其保存到C:/itextExamples/路径。

将此代码保存在名为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..");   
   } 
} 

使用以下命令从命令提示符编译并执行保存的 Java 文件:

javac NUppingPDF.java 
java NUppingPDF 

执行后,上述程序将创建一个显示以下消息的 PDF 文档。

PDF created successfully..

如果您验证指定的路径,则可以找到创建的 PDF 文档,如下所示。

Nupping
广告