在创建 PDF 文档的过程中,根据不同的应用场景选择适配的字体至关重要。对于普通 PDF 文件,Arial、Times New Roman 等通用字体足以满足文本排版需求;若期望打造独具视觉风格、彰显个性的 PDF 作品,则可选用私有字体。本文将演示如何使用 Spire.PDF for 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>11.4.2</version>
</dependency>
</dependencies>
Java 在PDF 中应用不同的字体
Spire.PDF for Java 支持标准 PDF 字体、TrueType 字体、私有字体以及中日韩 CJK 字体。以下是使用这些字体在 PDF 中绘制文本的步骤。
- 创建 PdfDocument 类的对象。
- 添加一个页面,然后创建一个 PDF 笔刷。
- 使用标准 PDF 字体创建 PdfFont 类的对象,然后使用 PdfPageBase.getCanvas().drawString() 方法在页面上使用标准字体绘制文本。
- 使用指定字体创建 PdfTrueTypeFont 类的对象,然后使用 TrueType 字体在页面上绘制文本。
- 加载一个私有字体,并用它创建一个 PdfTrueTypeFont 类的对象,然后使用私有字体在页面上绘制文本。
- 使用中日韩字体创建 PdfCjkStandardFont 类的对象,然后使用中日韩字体在页面上绘制文本。
- 使用 PdfDocument.saveToFile() 方法保存结果文档。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.*;
public class PdfFonts {
public static void main(String[] args) {
// 创建PdfDocument对象
PdfDocument pdf = new PdfDocument();
// 添加一页
PdfPageBase page = pdf.getPages().add();
// 创建PDF笔刷
PdfBrush brush = PdfBrushes.getBlack();
// 初始化y坐标
float y = 30;
// 使用标准字体在PDF页面上绘制文本
PdfFont standardFont = new PdfFont(PdfFontFamily.Helvetica, 14f);
page.getCanvas().drawString("Standard Font - Helvetica", standardFont, brush, 0, y);
standardFont = new PdfFont(PdfFontFamily.Times_Roman, 14f);
page.getCanvas().drawString("Standard Font - Times_Roman", standardFont, brush, 0, (y = y + 16));
standardFont = new PdfFont(PdfFontFamily.Courier, 14f);
page.getCanvas().drawString("Standard Font - Courier", standardFont, brush, 0, (y = y + 16));
// 使用true type字体在PDF页面上绘制文本
java.awt.Font font = new java.awt.Font("Arial", java.awt.Font.BOLD, 14);
PdfTrueTypeFont trueTypeFont = new PdfTrueTypeFont(font);
page.getCanvas().drawString("TrueType Font - Arial", trueTypeFont, brush, 0, (y = y + 30f));
// 使用私有字体在PDF页面上绘制文本
String fontFileName = "Khadija.ttf";
trueTypeFont = new PdfTrueTypeFont(fontFileName, 14f);
page.getCanvas().drawString("Private Font - Khadija", trueTypeFont, brush, 0, (y = y + 30f));
// 使用CJK字体在PDF页面上绘制文本
PdfCjkStandardFont cjkFont = new PdfCjkStandardFont(PdfCjkFontFamily.Monotype_Hei_Medium, 14f);
page.getCanvas().drawString("'Font' in Chinese - 字体", cjkFont, brush, 0, (y = y + 30f));
cjkFont = new PdfCjkStandardFont(PdfCjkFontFamily.Hanyang_Systems_Gothic_Medium, 14f);
page.getCanvas().drawString("'Font' in Japanese - フォント", cjkFont, brush, 0, (y = y + 16f));
cjkFont = new PdfCjkStandardFont(PdfCjkFontFamily.Hanyang_Systems_Shin_Myeong_Jo_Medium, 14f);
page.getCanvas().drawString("'Font' in Korean - 글꼴", cjkFont, brush, 0, (y = y + 16f));
// 保存结果文件
pdf.saveToFile("PDF字体.pdf");
pdf.close();
}
}
申请临时 License
如果您需要去除生成文档中的评估提示或解除功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。