精通字體替換與 GroupDocs.Conversion for Java

在本完整教學中,您將了解 將筆記轉換為 PDF,同時優雅地處理缺失字體。我們將逐步說明 Maven 設定、字體替換配置以及回退策略,確保您的 PDF 在各作業系統上外觀一致。完成後,您即可將此轉換流程嵌入任何 Java 服務或批次作業中。

快速解答

  • 字體替換的主要目的為何? 它會將不可用的字體替換為您指定的字體,保持文件外觀一致。
  • 哪個函式庫負責轉換? GroupDocs.Conversion for Java
  • 生產環境是否需要授權? 是 – 必須擁有完整授權或臨時授權。
  • 我可以為未知情況設定預設字體嗎? 當然可以,使用 NoteLoadOptions 中的 setDefaultFont()
  • 此功能是否相容於 JDK 8 及以上版本? 是,函式庫支援 Java 8+。

什麼是「將筆記轉換為 PDF」?

將筆記轉換為 PDF 是將筆記檔案格式(例如 .ONE.ENEX)轉換為可在任何裝置上開啟且不需特殊軟體的 PDF 的過程。
此轉換常會遇到缺字體問題,因為來源筆記可能引用未在目標機器上安裝的字體。字體替換透過將缺失字體映射至可用字體,確保視覺一致性。

為何使用 GroupDocs.Conversion for Java?

GroupDocs.Conversion for Java 提供 自動字體處理,支援超過 50 種以上的輸入與輸出格式,且能在不將整個檔案載入記憶體的情況下處理數百頁的文件。此函式庫產生高保真度的 PDF 輸出,對於 300 頁的筆記僅消耗不到 150 MB 的堆積記憶體,且只需透過單一 Maven 依賴即可整合,是 Java 開發者的生產就緒選擇。

前置條件

  • Java Development Kit (JDK) 版本 8 或以上。
  • IntelliJ IDEAEclipse 等 IDE。
  • Maven 已安裝,用於相依管理。
  • 具備 Java 基礎知識與文件轉換概念。

設定 GroupDocs.Conversion for Java

Add the GroupDocs repository and dependency to your pom.xml:

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

取得授權

GroupDocs 提供 30 天免費試用與測試用臨時授權,亦可購買正式授權以供生產環境使用。

  1. 免費試用:Download from here.
  2. 臨時授權:Request one at this link.
  3. 購買:For long‑term solutions, purchase a license here.

如何在 將筆記轉換為 PDF 時替換字體

在轉換過程中替換字體,您必須建立並設定載入選項,將缺失的字體映射至可用的替代字體,並指定回退字體。這可確保即使系統未安裝原始字體,所有字元仍能正確呈現。

步驟 1:設定字體替換

NoteLoadOptions configures how a note file is loaded, including font substitution settings. Create a NoteLoadOptions object, define the font pairs you want to replace, and set a fallback font for any unmatched cases:

import com.groupdocs.conversion.Converter;
import com.groupdocs.conversion.options.convert.PdfConvertOptions;
import com.groupdocs.conversion.options.load.NoteLoadOptions;
import com.groupdocs.conversion.contracts.FontSubstitute;

// Create font substitution options
NoteLoadOptions loadOptions = new NoteLoadOptions();
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
loadOptions.setFontSubstitutes(fontSubstitutes);

// Set the default font for unhandled substitutions
defaultFont = "YOUR_DOCUMENT_DIRECTORY/terminal-grotesque_open.otf";
  • NoteLoadOptionsNoteLoadOptions 類別是設定筆記檔載入方式(包括字體替換設定)的入口點。
  • FontSubstitute.create()FontSubstitute.create() 建立映射,告訴轉換器在原始字體缺失時使用哪個替代字體。
  • setDefaultFont()setDefaultFont() 定義回退字體,當沒有明確映射時引擎會套用此字體,確保不會有字元未渲染。

步驟 2:將文件轉換為 PDF

Converter is the core component that performs the conversion using the provided load options. Pass the configured load options to the Converter and execute the conversion:

// Initialize Converter with specified load options
converter = new Converter("YOUR_DOCUMENT_DIRECTORY/sample_note_document", () -> loadOptions);

// Set PDF conversion options
pdfOptions = new PdfConvertOptions();

// Perform conversion
coder.convert("YOUR_OUTPUT_DIRECTORY/converted_note.pdf", pdfOptions);
  • ConverterConverter 類別是 GroupDocs 的核心元件,使用提供的選項載入來源檔案並準備轉換。
  • convert()convert() 方法將 PDF 檔寫入目標位置,套用您定義的所有字體替換規則。

將筆記文件轉換為 PDF(不使用自訂字體)

如果您僅需 將 Java 文件轉換為 PDF 而不使用自訂替換,步驟會更簡短:

// Initialize Converter for a given document
converter = new Converter("YOUR_DOCUMENT_DIRECTORY/sample_note_document");
pdfOptions = new PdfConvertOptions(); // Configure conversion options
converter.convert("YOUR_OUTPUT_DIRECTORY/converted_note.pdf", pdfOptions);

實務應用

  1. 文件分享 – 發送在 Windows、macOS 或 Linux 上外觀相同的 PDF。
  2. 檔案保存 – 為合規需求保留舊版筆記檔的視覺完整性。
  3. 跨平台相容性 – 確保所有利害關係人看到相同的字體,無論其安裝了哪些字型。

整合可能性

您可以將此轉換流程嵌入企業內容管理系統、處理上傳的微服務,或用於將舊版筆記檔案批次遷移至 PDF 的工作。

效能考量

  • 記憶體管理 – 以串流方式處理大型檔案,避免完整載入記憶體。
  • 快取 – 快取常用字體檔以減少重複磁碟 I/O。
  • Java 最佳實踐 – 調校垃圾回收器,盡可能重複使用 Converter 實例。

常見問題與解決方案

問題可能原因解決方案
轉換後缺少字體未為該字體定義替換新增 FontSubstitute 條目或設定適當的預設字體。
loadOptions 上的 NullPointerExceptionloadOptions 未傳遞給 Converter確保在建立 Converter 時使用 lambda () -> loadOptions
大檔案轉換緩慢整個文件載入記憶體使用串流 API 或適當增加 JVM 堆積大小。

常見問答

Q: 我可以一次替換多個字體嗎?
A: 可以,將多個 FontSubstitute 條目加入 fontSubstitutes 清單即可。

Q: 若預設字體找不到會發生什麼事?
A: 轉換會回退至系統預設字體,可能在不同平台上有所差異。

Q: 如何排除轉換錯誤?
A: 核對檔案路徑,確保所有 Maven 相依已解析,並檢查主控台的堆疊追蹤。

Q: GroupDocs.Conversion 是否相容所有 Java 版本?
A: 它支援 JDK 8 及以上版本。

Q: 字體替換能否用於 Word 或 Excel 等其他格式?
A: 當然可以——相同的 FontSubstitute 機制適用於多種文件類型,包括 DOCX 與 XLSX。

資源


最後更新: 2026-07-29
測試環境: GroupDocs.Conversion 25.2 for Java
作者: GroupDocs

相關教學