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 IDEA 或 Eclipse 等 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 單頁 轉換的實務應用
- 財務報告: 確保每張工作表(資產負債表、損益表、現金流量表)從新頁開始,簡化審計檢查。
- 法律合約: 保持精確的版面與字型忠實度,對於具約束力的協議至關重要。
- 學術出版: 確保研究資料表格在以 PDF 共享時保持原有格式。
- 行銷宣傳品: 從基於 Excel 的設計模板生成可直接列印的手冊,無需手動調整。
- 文件管理系統: 為上傳的 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);