通过代码生成 PDF 具有多种优势。它能够集成动态内容,例如实时数据、数据库记录和用户输入。通过代码创建 PDF 为用户提供了更好的定制化和自动化服务,减少了开发个性化文档的人工参与。在本文中,您将学习如何使用 Spire.PDF for Java 在 Java 中从头开始创建一个简易的 PDF 文档。
安装 Spire.PDF for Java
首先,您需要在 Java 程序中添加 Spire.Pdf.jar 文件作为依赖项。JAR 文件可以从此链接下载。 如果您使用 Maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而在应用程序中导入 JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>10.9.0</version>
</dependency>
</dependencies>
背景知识
Spire.PDF for Java 中的页面(由 PdfPageBase 类表示)由内容区域和四周的页边距组成。内容区是供用户编写各种内容的区域,页边距通常为空白边缘。
如下图所示,页面上坐标系的原点位于内容区域的左上角,x 轴水平向右延伸,y 轴垂直向下延伸。添加到内容区域的所有元素都必须基于指定的坐标。
此外,下表列出了重要的类和方法,这些类和方法可以帮助您轻松理解下一节中提供的代码片段。
成员 | 描述 |
PdfDocument 类 | 表示 PDF 文档模型。 |
PdfPageBase 类 | 表示 PDF 文档中的页面。 |
PdfSolidBrush 类 | 表示用纯色填充任何对象的笔刷。 |
PdfTrueTypeFont 类 | 表示 true Type 字体。 |
PdfStringFormat 类 | 表示文本格式信息,如对齐方式、字符间距和缩进。 |
PdfTextWidget 类 | 表示具有跨多页功能的文本区域。 |
PdfTextLayout 类 | 表示文本布局信息。 |
PdfDocument.getPages().add() 方法 | 将页面添加到 PDF 文档中。 |
PdfPageBase.getCanvas().drawString() 方法 | 使用指定的字体和笔刷对象在页面上的指定位置绘制字符串。 |
PdfTextWidget.draw() 方法 | 在指定位置绘制页面上的文本小部件。 |
PdfDocument.save() 方法 | 将文档保存为 PDF 文件。 |
使用 Java 从头开始创建 PDF 文档
尽管 Spire.PDF for Java 允许用户向 PDF 文档中添加各种元素,但本文演示了如何创建一个只有纯文本的简单 PDF 文档。以下是详细的步骤。
- 创建 PdfDocument 对象。
- 使用 PdfDocument.getPages().add() 方法添加页面。
- 创建笔刷和字体对象。
- 使用 PdfPageBase.getCanvas().drawString() 方法在页面上指定坐标处绘制字符串。
- 创建一个 PdfTextWidget 对象来容纳一块文本。
- 使用 PdfTextWidget.draw() 方法在页面上的指定位置绘制文本小部件
- 使用 PdfDocument.save() 方法将文档保存为PDF文件。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.PdfPageSize;
import com.spire.pdf.graphics.*;
import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.io.*;
public class CreatePdfDocument {
public static void main(String[] args) throws IOException {
//创建PdfDocument对象
PdfDocument doc = new PdfDocument();
//添加页面
PdfPageBase page = doc.getPages().add(PdfPageSize.A4, new PdfMargins(35f));
//指定标题文本
String titleText = "什么是Java?";
//创建实体笔刷
PdfSolidBrush titleBrush = new PdfSolidBrush(new PdfRGBColor(Color.BLUE));
PdfSolidBrush paraBrush = new PdfSolidBrush(new PdfRGBColor(Color.BLACK));
//创建true type字体
PdfTrueTypeFont titleFont = new PdfTrueTypeFont(new Font("宋体",Font.BOLD,18));
PdfTrueTypeFont paraFont = new PdfTrueTypeFont(new Font("宋体",Font.PLAIN,12));
//通过PdfStringFormat类设置文本对齐方式
PdfStringFormat format = new PdfStringFormat();
format.setAlignment(PdfTextAlignment.Center);
//在页面上绘制标题
page.getCanvas().drawString(titleText, titleFont, titleBrush, new Point2D.Float((float)page.getClientSize().getWidth()/2, 20),format);
//从.txt文件中获取段落文本
String paraText = readFileToString("C:\\Users\\Administrator\\Desktop\\文本.txt");
//创建一个PdfTextWidget对象来保存段落内容
PdfTextWidget widget = new PdfTextWidget(paraText, paraFont, paraBrush);
//创建一个放置段落内容的矩形
Rectangle2D.Float rect = new Rectangle2D.Float(0, 50, (float)page.getClientSize().getWidth(),(float)page.getClientSize().getHeight());
//将PdfLayoutType设置为Paginate以使内容自动分页
PdfTextLayout layout = new PdfTextLayout();
layout.setLayout(PdfLayoutType.Paginate);
//在页面上绘制段落文本
widget.draw(page, rect, layout);
//保存文档
doc.saveToFile("创建PDF文档.pdf");
doc.dispose();
}
//将.txt文件转换为字符串
private static String readFileToString(String filepath) throws FileNotFoundException, IOException {
StringBuilder sb = new StringBuilder();
String s ="";
BufferedReader br = new BufferedReader(new FileReader(filepath));
while( (s = br.readLine()) != null) {
sb.append(s + "\n");
}
br.close();
String str = sb.toString();
return str;
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。