使用 GroupDocs Conversion Java for Word 嵌入字体 PDF
在本综合教程中,您将了解 GroupDocs Conversion Java 如何在将 DOCX 文件转换为 PDF 时 嵌入字体 PDF。无论您是构建法律文档流水线、出版电子书,还是生成企业报告,下面的步骤都能确保生成的 PDF 在每个设备上看起来与原始 Word 文件完全一致。
快速答案
- 哪个库负责转换? GroupDocs Conversion for Java.
- 我可以替换缺失的字体吗? 是的 – 使用 font substitution settings.
- 我需要生产环境的许可证吗? 需要商业许可证;提供免费试用。
- 支持哪个 Java 版本? JDK 8 或更高。
- 批量转换可能吗? 当然 – 将转换器放在循环中或使用 API 的批处理功能。
GroupDocs Conversion Java 是什么?
GroupDocs Conversion Java 是一个高性能 API,能够转换超过 70+ 种文档格式——包括 DOCX、PPTX、XLSX 和 PDF——无需 Microsoft Office。它为开发者提供对渲染、布局以及 嵌入字体 PDF 功能的细粒度控制,能够在典型服务器上在 30 秒内处理 500 页的 DOCX。
为什么在转换期间使用自定义字体?
嵌入正确的字体可确保 PDF 在每个设备上外观完全相同,消除“字体回退”问题,并符合品牌指南。此方法可为需要在转换后手动调整 PDF 的团队将返工率降低至 40 %。
先决条件
- Java Development Kit (JDK) – 版本 8 或更高。
- Maven 用于依赖管理。
- IDE(IntelliJ IDEA、Eclipse 或 VS Code)。
设置 GroupDocs.Conversion for Java
首先,将 GroupDocs 仓库和转换依赖添加到您的 Maven 项目中。
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/conversion/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-conversion</artifactId>
<version>25.2</version>
</dependency>
</dependencies>
获取许可证
您可以先使用 free trial 或获取 temporary license 进行扩展测试。商业使用时,请考虑购买完整许可证。访问 GroupDocs Licensing 了解您的选项。
基本初始化和设置
添加依赖后,创建指向源 DOCX 文件的 Converter 实例。Converter 是管理文档转换操作的主要类。
import com.groupdocs.conversion.Converter;
// Initialize with a document path
Converter converter = new Converter("YOUR_DOCUMENT_DIRECTORY/SampleDocx.docx");
实现指南
以下是逐步演练,展示如何 set default font pdf 并定义自定义字体替代。
步骤 1:定义转换路径和加载选项
首先,指定 PDF 保存位置并配置控制字体处理的加载选项。setAutoFontSubstitution 在转换期间禁用自动字体猜测。setDefaultFont 指定原始字体缺失时使用的回退字体。setFontSubstitutes 将不可用的字体映射到您提供的替代字体。
import com.groupdocs.conversion.options.load.WordProcessingLoadOptions;
import com.groupdocs.conversion.contracts.FontSubstitute;
// Output PDF path
String convertedFile = "YOUR_OUTPUT_DIRECTORY/ConvertedWordToPdf.pdf";
// Configure load options for Word documents
double autoFontSubstitution(false); // Disable automatic font substitution
defaultFont("resources/fonts/Helvetica.ttf"); // Set a default fallback font
// Prepare font substitutes list
List<FontSubstitute> fontSubstitutes = new ArrayList<>();
fontSubstitutes.add(FontSubstitute.create("Tahoma", "Arial")); // Substitute Tahoma with Arial
fontSubstitutes.add(FontSubstitute.create("Times New Roman", "Arial")); // Substitute Times New Roman with Arial
// Apply the substitutes to load options
setFontSubstitutes(fontSubstitutes);
直接答案
将 setAutoFontSubstitution(false) 设置为禁用自动猜测,然后使用 setDefaultFont("Helvetica.ttf") 提供可靠的回退。最后,使用 setFontSubstitutes(...) 将所有缺失的字体映射到已知的替代字体。这确保源 DOCX 中的每个字符在输出 PDF 中都有匹配的字形。
说明
setAutoFontSubstitution(false): 关闭库的自动猜测功能,给予您完全控制。setDefaultFont("Helvetica.ttf"): 当请求的字体未找到时提供通用回退。setFontSubstitutes(...): 将缺失的字体映射到您知道在目标系统上可用的替代字体。
步骤 2:配置 PDF 转换选项
现在创建 PDF 专用的选项对象。PdfConvertOptions 定义 PDF 输出参数,如字体嵌入和压缩。setEmbedFonts 启用将选定字体嵌入生成的 PDF。
import com.groupdocs.conversion.options.convert.PdfConvertOptions;
// Initialize PDF conversion options
double options = new PdfConvertOptions();
直接答案
实例化 PdfConvertOptions,可选地使用 setEmbedFonts(true) 启用字体嵌入,并调整压缩设置以平衡文件大小和质量。这些选项让您能够微调最终 PDF,以满足视觉保真度和存储限制。
您可以稍后扩展 PdfConvertOptions 以调整页面大小、边距或压缩设置。
步骤 3:执行转换
最后,使用先前定义的加载和转换选项运行转换。convert(source, target, loadOptions, pdfOptions) 使用给定设置执行转换。
// Convert Word document to PDF with specified font settings
converter.convert(convertedFile, () -> loadOptions, options);
直接答案
调用 converter.convert(sourcePath, targetPath, loadOptions, pdfOptions)。API 读取 DOCX,应用您的字体规则,嵌入所选字体,并写入一个准确保留原始排版的 PDF。
API 读取 DOCX,应用您的字体规则,并写入一个嵌入所选字体的 PDF。
实际应用
- Legal Document Management – 为法庭就绪的 PDF 保持精确排版。
- Publishing Industry – 在电子书和目录中保持品牌字体的一致性。
- Corporate Reports – 确保面向利益相关者的 PDF 符合公司风格指南。
- Educational Material – 转换讲义时保留自定义学术字体。
性能考虑因素
- Memory Management – 大型 DOCX 文件可能消耗大量堆内存;监控 JVM 内存并考虑
-Xmx调整。 - Batch Processing – 将转换逻辑放在循环中或使用 GroupDocs 的批处理 API,以高效处理多个文件。
- Resource Allocation – 在并行转换大量文档时分配足够的 CPU 核心。
- Throughput – 在 4 核 VM 上,库在嵌入字体的情况下每分钟可处理 最多 12 份 300 页文档。
常见问题及解决方案
| 问题 | 解决方案 |
|---|---|
| 字体未替代 | 确认字体文件存在于您提供的路径,并且 FontSubstitute 名称与源 DOCX 中的字体族名称完全匹配。 |
| 内存不足错误 | 增加 JVM 堆大小(-Xmx2g 或更高)或将文件分批处理以减小批次。 |
| PDF 缺少嵌入字体 | 确保 setDefaultFont 指向 TrueType(.ttf)或 OpenType(.otf)文件,并且许可证允许嵌入字体。 |
| 转换后页面布局不正确 | 使用 PdfConvertOptions.setPageSize(...) 以匹配原始 Word 页面尺寸。 |
| 大型文件转换缓慢 | 通过 PdfConvertOptions.setStream(true) 启用流式模式以降低内存压力。 |
常见问题解答
Q: 我可以在不购买许可证的情况下使用 GroupDocs.Conversion 吗?
A: 是的,您可以先使用免费试用或获取临时许可证进行评估。
Q: 如果字体未正确替代,我该怎么办?
A: 确保字体文件可访问并在 setFontSubstitutes 中正确引用。再次检查准确的字体族名称。
Q: 如何提升大文档的转换性能?
A: 将文档分批处理,监控系统资源,增加 JVM 堆大小,并启用流式模式。
Q: 是否可以转换除 Word 之外的其他文档类型?
A: 当然可以。GroupDocs Conversion 支持图像、电子表格、演示文稿等多种格式。
Q: 在哪里可以找到 GroupDocs.Conversion 的更多文档?
A: 请访问官方指南 GroupDocs Java Conversion Docs 获取详细的 API 参考。
结论
现在,您已经拥有一个完整的、可用于生产的解决方案,可在使用 GroupDocs Conversion Java 将 DOCX 转换为 PDF 时 嵌入字体 PDF。通过配置字体替代和默认字体,您可以确保每个 PDF 与原始 Word 文档的外观完全一致,无论查看器或平台如何。
下一步
- 尝试使用额外的
PdfConvertOptions,例如 PDF/A 合规性或图像压缩。 - 探索批量转换以自动化大规模文档流水线。
- 在官方文档中查看完整 API,以解锁诸如水印或数字签名等高级功能。
最后更新: 2026-07-14
测试环境: GroupDocs.Conversion 25.2
作者: GroupDocs
资源
- 文档: GroupDocs Java Conversion Docs
- API 参考: GroupDocs API Reference
- 下载: Get GroupDocs.Conversion
- 购买: Buy a License
- 免费试用: Trial Downloads
- 临时许可证: Request Temporary License
- 支持: GroupDocs Support Forum