- iText 教程
- iText - 首页
- iText 画布
- iText - 绘制弧线
- iText - 绘制直线
- iText - 绘制圆形
- iText 有用资源
- iText 快速指南
- iText - 有用资源
- iText - 讨论
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 并打开一个新项目,如下所示。
步骤 2 - 创建一个名为 iTextSample 的项目,如下所示。
步骤 3 - 右键单击项目,将其转换为 Maven 项目,如下所示。一旦将其转换为 Maven 项目,它将为您提供一个 pom.xml 文件,您需要在其中提及所需的依赖项。之后,这些依赖项的 jar 文件将自动下载到您的项目中。
步骤 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 - 创建 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 - 添加 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 文档,如下所示。
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 文档,如下所示。
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 文档,如下所示。
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 文档,如下所示。
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 文档,如下所示。
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 文档,如下所示。
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 文档,如下所示。
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 文档,如下所示。
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 文档,如下所示。
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 文档,如下所示。
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:设置图像的位置
可以使用Image的setFixedPosition()方法设置 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 文档,如下所示。
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 文档,如下所示。
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 文档,如下所示。
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 文档,如下所示。
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 文档,如下所示。
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 文档,如下所示。
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 文档,如下所示。
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 文档,如下所示。
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 文档,如下所示。
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 文档,如下所示。
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:绘制圆形
通过调用Canvas的circle()方法绘制圆形,如下所示。
// 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 文档,如下所示。
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 文档,如下所示。
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 类的对象传递给其构造函数。
通过将PdfWriter和PdfReader对象传递给构造函数,创建源和目标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 文档,如下所示。
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文档,如下所示:
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 文档,如下所示。