從多頁生成緊湊且可列印的 PDF 是報告、目錄和手冊的常見需求。 Aspose.PDF for Python via .NET 提供了功能強大的 SDK,讓您能以程式方式在 Python 中建立 PDF 小冊子,並具備精細的控制。 在本指南中,您將看到如何設定環境、建立小冊子、可選地加入書籤,以及匯出最終文件。

什麼是 PDF 小冊子?

PDF 小冊子是一種文件,排列方式使多頁可以列印、摺疊,並像小書、手冊、宣傳冊或目錄一樣閱讀。小冊子生成會重新排列頁面,而不是保持頁面的正常順序,從而在列印和摺疊後正確的頁面能夠並排顯示。

例如,小冊子布局可能會將一頁放在紙張的左側,另一頁放在右側。雙面列印並摺疊後,頁面會以正確的閱讀順序出現。

小冊子通常用於:

  • 產品目錄
  • 活動節目
  • 培訓手冊
  • 報告
  • 說明指南
  • 公司簡介
  • 宣傳冊
  • 小型可列印書籍

在 Python 中,您可以自動化此過程,而無需在 PDF 編輯器中手動重新排列頁面。

Python PDF 小冊子生成器 API

要在 Python 中建立 PDF 小冊子,我們將使用 Aspose.PDF for Python via .NET。它是一個 PDF 處理 API,允許 Python 開發人員以程式方式建立、編輯、轉換、分割、合併、保護、註釋和操作 PDF 檔案。

對於小冊子創建,關鍵類是:

pdf.facades.PdfFileEditor()

PdfFileEditor 類別提供高階 PDF 檔案操作功能。在本教學中,我們將使用其 make_booklet() 方法將現有的 PDF 轉換為小冊子版面。

步驟 1:安裝 Aspose.PDF SDK

首先,使用 pip 安裝 Aspose.PDF for Python via .NET:

pip install aspose-pdf

步驟 2:準備輸入 PDF

在建立小冊子之前,請確保您已經擁有來源 PDF 檔案。對於本教學,我們將使用以下檔案名稱:

input.pdf

輸出的小冊子將儲存為:

booklet.pdf

將輸入 PDF 放在與您的 Python 腳本相同的目錄中,或提供完整的檔案路徑。

範例:

project-folder/
├── input.pdf
└── create_booklet.py

第 3 步:在 Python 中建立簡易 PDF 小冊子

建立小冊子的最簡單方法是呼叫 make_booklet(),並提供輸入檔案、輸出檔案和目標頁面尺寸。

以下 Python 程式碼使用 A5 頁面尺寸建立小冊子:

import aspose.pdf as pdf

# Create PdfFileEditor object
pdf_editor = pdf.facades.PdfFileEditor()

# Create booklet from input PDF
pdf_editor.make_booklet(
    "input.pdf",
    "booklet.pdf",
    pdf.PageSize.a5
)

print("PDF booklet created successfully.")

此程式碼載入 input.pdf,將其頁面排列成小冊子佈局,並將結果儲存為 booklet.pdf

第 4 步:建立具有左右頁面的自訂 PDF 小冊子

在許多情況下,您可能希望控制小冊子佈局中哪些頁面顯示在左側,哪些頁面顯示在右側。

以下範例基於原始的 C# 程式碼,並將其轉換為 Python:

import aspose.pdf as pdf

# Create PdfFileEditor object
pdf_editor = pdf.facades.PdfFileEditor()

# Set left and right pages
left_pages = [1, 5]
right_pages = [2, 3]

# Make booklet
pdf_editor.make_booklet(
    "input.pdf",
    "booklet.pdf",
    pdf.PageSize.a5,
    left_pages,
    right_pages
)

print("PDF booklet created successfully.")

代碼說明

讓我們拆解程式碼。

首先,匯入 Aspose.PDF 套件:

import aspose.pdf as pdf

然後建立 PdfFileEditor 的實例:

pdf_editor = pdf.facades.PdfFileEditor()

此物件提供對高階 PDF 編輯功能的存取,包括小冊子建立。

接下來,定義頁面排列:

left_pages = [1, 5]
right_pages = [2, 3]

left_pages 列表定義了在小冊子展開的左側出現的頁面。 right_pages 列表定義了在右側出現的頁面。

最後,呼叫 make_booklet() 方法:

pdf_editor.make_booklet(
    "input.pdf",
    "booklet.pdf",
    pdf.PageSize.a5,
    left_pages,
    right_pages
)

這會建立小冊子並將其儲存為 booklet.pdf

完整的 Python 代碼

以下是用 Python 建立 PDF 小冊子的完整程式碼範例:

import aspose.pdf as pdf

def create_pdf_booklet(input_pdf: str, output_pdf: str) -> None:
    """
    Create a PDF booklet from an existing PDF file using Aspose.PDF for Python via .NET.

Args:
        input_pdf: Path to the source PDF file.
        output_pdf: Path where the generated booklet PDF will be saved.
    """

# Create PdfFileEditor object
    pdf_editor = pdf.facades.PdfFileEditor()

# Set left and right pages
    left_pages = [1, 5]
    right_pages = [2, 3]

# Make booklet
    pdf_editor.make_booklet(
        input_pdf,
        output_pdf,
        pdf.PageSize.a5,
        left_pages,
        right_pages
    )

if __name__ == "__main__":
    create_pdf_booklet(
        input_pdf="input.pdf",
        output_pdf="booklet.pdf"
    )

print("PDF booklet created successfully.")

第5步:向小冊子添加可選書籤

建立小冊子後,您可能想要新增書籤以便更輕鬆地導航。書籤對於報告、手冊、目錄、培訓指南以及其他長篇文件都很有用。

以下範例首先建立一本小冊子,然後將書籤新增至產生的 PDF:

import aspose.pdf as pdf

def create_pdf_booklet(input_pdf: str, output_pdf: str) -> None:
    """
    Create a PDF booklet from an existing PDF file.
    """

pdf_editor = pdf.facades.PdfFileEditor()

left_pages = [1, 5]
    right_pages = [2, 3]

pdf_editor.make_booklet(
        input_pdf,
        output_pdf,
        pdf.PageSize.a5,
        left_pages,
        right_pages
    )

def add_bookmarks(input_pdf: str, output_pdf: str) -> None:
    """
    Add bookmarks to an existing PDF document.
    """

# Open generated booklet PDF
    document = pdf.Document(input_pdf)

# Add bookmark for first page
    first_bookmark = pdf.OutlineItemCollection(document.outlines)
    first_bookmark.title = "Booklet Start"
    first_bookmark.bold = True
    first_bookmark.action = pdf.annotations.GoToAction(document.pages[1])
    document.outlines.append(first_bookmark)

# Add bookmark for second page, if available
    if len(document.pages) >= 2:
        second_bookmark = pdf.OutlineItemCollection(document.outlines)
        second_bookmark.title = "Second Spread"
        second_bookmark.action = pdf.annotations.GoToAction(document.pages[2])
        document.outlines.append(second_bookmark)

# Save PDF with bookmarks
    document.save(output_pdf)

if __name__ == "__main__":
    create_pdf_booklet(
        input_pdf="input.pdf",
        output_pdf="booklet.pdf"
    )

add_bookmarks(
        input_pdf="booklet.pdf",
        output_pdf="booklet-with-bookmarks.pdf"
    )

print("PDF booklet with bookmarks created successfully.")

此程式碼會建立兩個輸出檔案:

booklet.pdf
booklet-with-bookmarks.pdf

第一個檔案包含小冊子的版面配置。第二個檔案包含已新增書籤的小冊子。

選擇合適的頁面尺寸

在上述範例中,我們使用了 A5 頁面大小:

pdf.PageSize.a5

A5 通常用於小冊子,因為它尺寸緊湊,適合印刷手冊、宣傳冊和小型目錄。

您可以根據輸出需求使用其他頁面尺寸。例如,如果您正在製作較大的小冊子,您可以使用 A4。如果您在準備緊湊的手冊,A5 可能更合適。

常見的小冊子使用情境包括:

使用情境建議頁面尺寸
小型手冊A5
產品目錄A5 or A4
活動節目A5
培訓講義A4 or A5
公司宣傳冊A5

建立 PDF 小冊子的最佳實踐

在程式化生成小冊子時,請注意以下要點。

1. 使用乾淨的來源 PDF

您的輸入 PDF 應該已經正確格式化。小冊子生成會重新排列頁面,但不會重寫每頁的內部內容。

在建立小冊子之前,請檢查:

  • 頁面邊距
  • 頁眉和頁腳位置
  • 字體嵌入
  • 圖像品質
  • 頁面方向
  • 出血或安全列印區域

2. 檢查頁數

小冊子在頁數適合摺疊和列印時效果最佳。如果頁數未能完全對齊,可能需要添加空白頁。

例如,小冊子可能需要以四的倍數的頁數,因為每張折疊的紙張會產生四個頁面。

3. 批量列印前的測試列印

在大量印刷小冊子之前,請先列印測試副本。PDF 閱讀器和印表機設定可能會影響縮放、邊距、雙面模式和頁面方向。

建議的印表機設定可能包括:

  • 雙面列印
  • 根據印表機,沿短邊或長邊翻轉
  • 實際大小
  • 無自動縮放
  • 正確的紙張尺寸

4. 為數位副本添加書籤

如果手冊也將以數位方式分享,書籤可以改善導覽。它們能協助讀者快速跳轉到重要章節。

書籤特別適用於:

  • 長報告
  • 技術手冊
  • 政策文件
  • 產品目錄
  • 培訓材料

5. 使用清晰的檔案名稱

在批次模式生成文件時,請使用具描述性的輸出檔案名稱。

例如:

employee-handbook-booklet.pdf
product-catalog-booklet.pdf
training-manual-booklet.pdf

常見錯誤與修復

錯誤: ModuleNotFoundError: 沒有名為 ‘aspose’ 的模組

這表示在您目前的 Python 環境中未安裝 Aspose.PDF 套件。

使用以下方法修復:

pip install aspose-pdf

如果您正在使用虛擬環境,請確保在安裝套件之前已啟用它。

錯誤:找不到輸入的 PDF

如果您的腳本找不到輸入檔案,請檢查檔案路徑。

而不是:

"input.pdf"

使用絕對路徑:

"C:/Users/YourName/Documents/input.pdf"

或在 Linux/macOS 上:

"/home/user/documents/input.pdf"

錯誤:小冊子輸出順序不符合預期

如果您使用自訂的左側和右側頁面陣列,請確認頁碼與來源 PDF 中的頁面相符。

Example:

left_pages = [1, 5]
right_pages = [2, 3]

這些值應根據您希望的手冊版面排列方式進行選擇。

錯誤:書籤未出現

如果書籤未在您的 PDF 檢視器中顯示,請檢查檢視器是否已啟用書籤面板。有些 PDF 檢視器預設會隱藏書籤。

您還可以將文件頁面模式設置為顯示大綱:

document.page_mode = pdf.PageMode.USE_OUTLINES

在保存 PDF 之前添加此內容:

document.save(output_pdf)

在 Python 中建立 PDF 小冊子:最終程式碼

以下最終程式碼會建立 PDF 小冊子、加入書籤,並儲存結果:

import aspose.pdf as pdf

def create_pdf_booklet(input_pdf: str, booklet_pdf: str) -> None:
    """
    Create a custom PDF booklet using Aspose.PDF for Python via .NET.
    """

pdf_editor = pdf.facades.PdfFileEditor()

left_pages = [1, 5]
    right_pages = [2, 3]

pdf_editor.make_booklet(
        input_pdf,
        booklet_pdf,
        pdf.PageSize.a5,
        left_pages,
        right_pages
    )

def add_bookmarks_to_booklet(booklet_pdf: str, output_pdf: str) -> None:
    """
    Add bookmarks to the generated booklet PDF.
    """

document = pdf.Document(booklet_pdf)

start_bookmark = pdf.OutlineItemCollection(document.outlines)
    start_bookmark.title = "Booklet Start"
    start_bookmark.bold = True
    start_bookmark.action = pdf.annotations.GoToAction(document.pages[1])
    document.outlines.append(start_bookmark)

if len(document.pages) >= 2:
        second_bookmark = pdf.OutlineItemCollection(document.outlines)
        second_bookmark.title = "Second Spread"
        second_bookmark.action = pdf.annotations.GoToAction(document.pages[2])
        document.outlines.append(second_bookmark)

document.page_mode = pdf.PageMode.USE_OUTLINES
    document.save(output_pdf)

if __name__ == "__main__":
    input_pdf = "input.pdf"
    booklet_pdf = "booklet.pdf"
    final_pdf = "booklet-with-bookmarks.pdf"

create_pdf_booklet(input_pdf, booklet_pdf)
    add_bookmarks_to_booklet(booklet_pdf, final_pdf)

print("PDF booklet created successfully:", final_pdf)

結論

在本教程中,您學會了如何使用 Aspose.PDF for Python via .NET 在 Python 中建立 PDF 小冊子。您已安裝 SDK,從現有的 PDF 建立小冊子,配置左頁和右頁的放置,新增可選的書籤,並將最終的小冊子儲存為 PDF 檔案。

PdfFileEditor.make_booklet() 方法在需要自動化生成報告、目錄、手冊、宣傳冊和可列印文件的小冊子時非常有用。通過將小冊子創建與書籤結合,您可以生成適合印刷和數位分發的 PDF 文件。

Read More