Excel PDF 單頁 – Java 轉換與字型替換

將 Excel 活頁簿轉換為 PDF,同時保證 每個工作表僅一頁 並保持原始排版可能相當棘手。在本教學中,您將學習如何使用 GroupDocs.Conversion 在 Java 中實現可靠的 excel pdf one page 轉換。我們將逐步說明 Maven 設定、字型替換以及您需要的精確 API 呼叫,讓您能自信地將此解決方案嵌入任何自動化文件流程中。

快速解答

  • 「每個工作表僅一頁」是什麼意思? 每個工作表會渲染在單一 PDF 頁面上,避免意外的分頁。
  • 哪個函式庫負責轉換? GroupDocs.Conversion for Java 提供完整的功能集。
  • 我可以自動替換缺失的字型嗎? 可以——使用 SpreadsheetLoadOptions 內的 FontSubstitute 功能。
  • 我需要授權嗎? 臨時授權可在評估期間解鎖所有轉換選項。
  • 此方法適用於大型活頁簿嗎? 完全適用,只要您調整 JVM 記憶體並重複使用 Converter 實例。

什麼是 excel pdf one page conversion?

excel pdf one page conversion 是將每個 Excel 工作表轉換為單獨的單頁 PDF 文件的過程。此方式保證可預測的分頁,對於報告、發票以及需要保持頁面布局一致的法規申報至關重要。它亦簡化了後續處理,確保每張工作表自動從新頁開始,無需手動調整。

為什麼在 Excel 轉 PDF 時使用 GroupDocs.Conversion Java?

GroupDocs.Conversion 支援 超過 50 種輸入與輸出格式,且能在不將整個檔案載入記憶體的情況下處理包含 數百張工作表 的活頁簿。此函式庫亦提供內建的 字型替換 功能,確保 PDF 在任何裝置上外觀相同,即使原始字型不可用。這些具體的能力使其成為企業級文件自動化的生產就緒選擇。

前置條件

  • Java Development Kit (JDK) 11+ 已安裝。
  • 使用如 IntelliJ IDEAEclipse 等 IDE 來編輯與執行 Java 程式碼。
  • Maven 用於相依性管理。
  • 臨時的 GroupDocs 授權(可從官方網站取得)。

對 Java 語法與 Maven 坐標有基本了解會有幫助,但以下步驟已足夠詳細,適用於任何經驗層級的開發者。

如何為 GroupDocs.Conversion 設定 Maven?

將 GroupDocs 儲存庫與 conversion 相依性加入您的 pom.xml。以下程式碼片段顯示您需要的完整 XML——若有較新版本,請將版本號替換為最新的穩定版。更新 pom.xml 後,執行 mvn clean install 以下載函式庫並確認相依性正確解析。

<repositories>
    <repository>
        <id>groupdocs-repo</id>
        <url>https://repo.groupdocs.com/maven2</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>conversion</artifactId>
        <version>25.2</version>
    </dependency>
</dependencies>

直接回答: 將上述儲存庫與相依性 XML 新增至 pom.xml,然後執行 mvn clean install 以下載函式庫。這將為您的專案準備好轉換 API 呼叫的環境。

如何取得並套用臨時的 GroupDocs 授權?

前往 GroupDocs 臨時授權頁面,申請金鑰,並將 GroupDocs.Conversion.lic 檔案放置於專案的 resources 資料夾中。之後於執行時載入它。載入授權可確保所有高級功能(如字型替換與每工作表單頁渲染)皆被解鎖,且轉換過程不受評估限制。

License license = new License();
license.setLicense("path/to/GroupDocs.Conversion.lic");

直接回答: 在任何轉換操作之前使用 License#setLicense 載入授權檔案;這會解鎖所有高級功能,包括字型替換與每工作表單頁渲染。

實作指南 – 字型替換與每工作表單頁

以下我們將逐步說明將 Excel 檔案轉換為 PDF 的每個必要步驟,同時替換缺失字型並強制每個工作表僅一頁。

步驟 1:定義輸入與輸出路徑

設定來源 Excel 檔案與目標 PDF 檔案。於正式環境請使用絕對路徑,以避免 classpath 模糊不清。

String inputPath = "C:/documents/input.xlsx";
String outputPath = "C:/documents/output.pdf";

步驟 2:建立含字型替換的載入選項

SpreadsheetLoadOptions 類別讓您指定來源活頁簿的解析方式。
SpreadsheetLoadOptions 是控制 Excel 檔案如何載入至 GroupDocs.Conversion 的設定物件。

FontSubstitute 定義了缺失字型與可用替代字型之間的對映關係。

現在加入字型替換:

SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
loadOptions.getFontSubstitutes().add(new FontSubstitute("Calibri", "Arial"));
loadOptions.getFontSubstitutes().add(new FontSubstitute("Times New Roman", "Liberation Serif"));

直接回答: 透過新增 FontSubstitute 條目,轉換器會自動將缺失的字型替換為指定的替代字型,確保跨平台的視覺一致性。

步驟 3:啟用每工作表單頁並設定預設字型

您可以強制單頁布局,並為任何找不到直接匹配的字元提供備用字型:

loadOptions.setOnePagePerSheet(true);
loadOptions.setDefaultFont("Arial");

直接回答: setOnePagePerSheet(true) 會將每個工作表強制放置於獨立的 PDF 頁面,而 setDefaultFont 提供通用備用字型,消除缺字形問題。

步驟 4:使用載入選項初始化 Converter

Converter 是使用提供的載入選項執行文件轉換的主要類別。將載入選項傳入 Converter 建構子,即可建立可直接使用的轉換引擎:

Converter converter = new Converter(new File(inputPath), loadOptions);

直接回答: 以配置好的 loadOptions 實例化 Converter,即可讓引擎在轉換過程中同時遵守字型替換與分頁規則。

步驟 5:定義 PDF 轉換選項並執行

PdfConvertOptions 設定 PDF 專屬的輸出參數,例如頁面大小與壓縮。指定輸出格式與任何 PDF 專屬設定,然後執行轉換:

PdfConvertOptions pdfOptions = new PdfConvertOptions();
converter.convert(outputPath, pdfOptions);

直接回答: 使用 PdfConvertOptions 呼叫 converter.convert,即可產生符合每工作表單頁設定且納入先前定義的所有字型替換的 PDF。

常見問題與解決方案

  • 缺失字型: 確認替代字型已安裝於主機或隨您的應用程式 JAR 打包。
  • 路徑錯誤: 使用 Paths.get(...) 以實現跨平台的路徑處理,特別是在 Linux 伺服器上部署時。
  • 大型活頁簿記憶體不足: 增加 JVM 堆積大小 (-Xmx4g) 或透過對每個工作表重新實例化 Converter 以批次處理工作表。

excel pdf 單頁 轉換的實務應用

  1. 財務報告: 確保每張工作表(資產負債表、損益表、現金流量表)從新頁開始,簡化審計檢查。
  2. 法律合約: 保持精確的版面與字型忠實度,對於具約束力的協議至關重要。
  3. 學術出版: 確保研究資料表格在以 PDF 共享時保持原有格式。
  4. 行銷宣傳品: 從基於 Excel 的設計模板生成可直接列印的手冊,無需手動調整。
  5. 文件管理系統: 為上傳的 Excel 檔案提供可靠的 PDF 預覽,提升使用者體驗。

大型活頁簿的效能技巧

  • 串流 I/O: 使用 InputStream/OutputStream 以避免將整個檔案載入記憶體。
  • 重複使用 Converter: 對於批次作業,保持單一 Converter 實例存活,只更改輸入檔案的參考。
  • JVM 調校: 根據預期的活頁簿大小調整 -Xms-Xmx;一個 500 頁的活頁簿通常需要 2‑3 GB 的堆積空間。

常見問答

Q: GroupDocs.Conversion Java 用途是什麼?
A: 它是一個 Java 函式庫,可轉換超過 50 種文件格式——包括 Excel 轉 PDF——同時提供字型替換與每工作表單頁等進階選項。

Q: 我可以在未購買授權的情況下使用 GroupDocs.Conversion 嗎?
A: 可以,免費試用或臨時授權可在評估期間提供完整功能存取。

Q: 如何在轉換過程中處理缺失的字型?
A: 在 SpreadsheetLoadOptions 中定義 FontSubstitute 物件;引擎會自動將不可用的字型替換為您指定的字型。

Q: 使用 GroupDocs.Conversion 時,最佳的 Java 效能優化實踐是什麼?
A: 使用串流 I/O、設定適當的 JVM 堆積大小,並對多個檔案重複使用單一 Converter 實例。

Q: 「每工作表單頁」選項會影響圖表渲染嗎?
A: 不會,圖表會自動縮放以適應單一頁面,同時保留視覺忠實度。

結論

您現在擁有一套完整、可投入生產的方式,使用 GroupDocs.Conversion 在 Java 中 將 Excel 轉換為 PDF,具備 excel pdf 單頁 分頁與自動 字型替換。此解決方案提供一致的排版、可預測的分頁,且能有效擴展至大型活頁簿——非常適合自動化報告、法律文件產生,以及任何對 PDF 忠實度有要求的情境。

後續步驟

  • 嘗試使用 PdfConvertOptions 以啟用 PDF/A 相容性,滿足歸檔需求。
  • 將此轉換流程與 GroupDocs.Annotation 結合,以在 PDF 生成後加入浮水印或數位簽章。
  • 探索使用相同模式轉換其他格式(Word、PowerPoint),以建立統一的文件處理服務。

最後更新: 2026-07-06
測試版本: GroupDocs.Conversion 25.2
作者: GroupDocs

<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>
import com.groupdocs.conversion.Converter;
import com.groupdocs.conversion.options.convert.PdfConvertOptions;

public class ConvertExcelToPDF {
    public static void main(String[] args) {
        String inputDocument = "sample.xlsx";
        String convertedFile = "output.pdf";

        // Initialize the Converter object with your document path
        Converter converter = new Converter(inputDocument);

        PdfConvertOptions options = new PdfConvertOptions();
        
        // Perform the conversion
        converter.convert(convertedFile, options);
    }
}
String inputDocument = "YOUR_DOCUMENT_DIRECTORY/sample.xlsx";
String convertedFile = "YOUR_OUTPUT_DIRECTORY/ConvertSpreadsheetBySpecifyingFontsubstitution.pdf";
import com.groupdocs.conversion.options.load.SpreadsheetLoadOptions;
import com.groupdocs.conversion.contracts.FontSubstitute;

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

SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
loadOptions.setFontSubstitutes(fontSubstitutes);
loadOptions.setDefaultFont("resources/fonts/Helvetica.ttf");
loadOptions.setOnePagePerSheet(true);
Converter converter = new Converter(inputDocument, () -> loadOptions);
PdfConvertOptions options = new PdfConvertOptions();
converter.convert(convertedFile, options);

相關教學