在Python中拆分PDF文件

此页面展示了如何使用 Aspose.PDF for Python via .NET 在 Python 中拆分 PDF 文件

当您需要将大型PDF拆分为单页文件、等分部分、固定大小的组、自定义页范围,或奇偶页集合,以进行分发、审阅或下游处理时,请使用这些示例。

在线拆分 PDF 示例

Aspose.PDF 拆分器 是一个在线网页应用程序,可让您测试 PDF 拆分功能。

Aspose 拆分 PDF

在 Python 中将 PDF 页面拆分为单页 PDF 文件,请按以下步骤操作:

  1. 循环遍历 PDF 文档的页面 文档 对象的 页面集合 集合
  2. 对于每次迭代,创建一个新的 Document 对象并添加单个 页面 对象放入空文档
  3. 使用以下方法保存新 PDF save() 方法

在 Python 中将 PDF 拆分为多个文件

以下 Python 代码片段展示了如何将 PDF 页面拆分为单独的 PDF 文件。

import sys
import aspose.pdf as ap
from os import path


def split_documents(infile, outdir):
    document = ap.Document(infile)
    for page_num in range(1, len(document.pages) + 1):
        with ap.Document() as new_document:
            new_document.pages.add(document.pages[page_num])
            new_document.save(path.join(outdir, f"Page_{page_num}.pdf"))

将 PDF 拆分为两个等分

  1. 加载 PDF 文档。
  2. 确定总页数。
  3. 计算中点。
  4. 创建第一个输出文档。
  5. 从第一个文档中删除后半部分的页面。
  6. 保存第一部分。
  7. 创建第二个输出文档。
  8. 删除第二个文档的前半页。
  9. 保存第二部分。
import sys
import aspose.pdf as ap
from os import path


def split_documents_into_two_parts(infile, outdir):
    document = ap.Document(infile)
    total_pages = len(document.pages)
    mid_point = total_pages // 2

    # First part
    with ap.Document(infile) as first_document:
        first_part_range = range(mid_point + 1, total_pages + 1)
        first_document.pages.delete(first_part_range)
        first_document.save(path.join(outdir, "Part_1.pdf"))

    # Second part
    with ap.Document(infile) as second_document:
        second_part_range = range(1, mid_point + 1)
        second_document.pages.delete(second_part_range)
        second_document.save(path.join(outdir, "Part_2.pdf"))

将 PDF 拆分为每 N 页的多个文件

使用 Aspose.PDF for Python 将 PDF 文档按固定页数拆分为多个较小的文件。

  1. 加载 PDF 文档。
  2. 确定总页数。
  3. 为每个部分定义页数。
  4. 逐块遍历文档。
  5. 计算每个部分的页面范围。
  6. 为每个部分创建一个新文档。
  7. 将页面复制到新文档中。
  8. 保存拆分文档。
  9. 重复执行,直到所有页面都处理完。
import sys
import aspose.pdf as ap
from os import path


def split_documents_every_n_pages(infile, outdir, pages_per_part=3):
    document = ap.Document(infile)
    total_pages = len(document.pages)

    part_index = 1
    for start_page in range(1, total_pages + 1, pages_per_part):
        end_page = min(start_page + pages_per_part - 1, total_pages)

        with ap.Document() as part_document:
            for page_num in range(start_page, end_page + 1):
                part_document.pages.add(document.pages[page_num])
            part_document.save(
                path.join(outdir, f"Every_{pages_per_part}_Part_{part_index}.pdf")
            )

        part_index += 1

按自定义页面范围拆分 PDF

使用 Aspose.PDF for Python 将 PDF 文档根据自定义页面范围拆分为多个文件。

  1. 加载 PDF 文档。
  2. 确定总页数。
  3. 创建一个元组列表,表示 (start_page, end_page) 范围。
  4. 遍历已定义的范围。
  5. 验证起始页。
  6. 调整结束页。
  7. 验证有效范围。
  8. 为每个范围创建一个新文档。
  9. 将页面复制到新文档中。
  10. 保存每个拆分的文档。
import sys
import aspose.pdf as ap
from os import path


def split_documents_by_page_ranges(infile, outdir):
    document = ap.Document(infile)
    total_pages = len(document.pages)
    # Define ranges as (start_page, end_page). Use None to indicate last page.
    ranges = [(1, 3), (4, 6), (7, None)]

    for index, (start_page, end_page) in enumerate(ranges, start=1):
        if start_page > total_pages:
            continue

        effective_end = total_pages if end_page is None else min(end_page, total_pages)
        if start_page > effective_end:
            continue

        with ap.Document() as range_document:
            for page_num in range(start_page, effective_end + 1):
                range_document.pages.add(document.pages[page_num])
            range_document.save(
                path.join(outdir, f"Range_{index}_{start_page}_to_{effective_end}.pdf")
            )

将 PDF 拆分为第一页和剩余页面

使用 Aspose.PDF for Python 将 PDF 文档的第一页与其余页面分离。

  1. 加载 PDF 文档。
  2. 确定总页数。
  3. 检查文档是否为空。
  4. 为第一页创建文档。
  5. 添加第一页。
  6. 保存第一页文档。
  7. 检查是否有其他页面。
  8. 为剩余页面创建文档。
  9. 复制剩余的页面。
  10. 保存剩余页面的文档。
import sys
import aspose.pdf as ap
from os import path


def split_documents_first_page_and_rest(infile, outdir):
    document = ap.Document(infile)
    total_pages = len(document.pages)

    if total_pages == 0:
        return

    with ap.Document() as first_page_document:
        first_page_document.pages.add(document.pages[1])
        first_page_document.save(path.join(outdir, "First_Page.pdf"))

    if total_pages == 1:
        return

    with ap.Document() as remaining_pages_document:
        for page_num in range(2, total_pages + 1):
            remaining_pages_document.pages.add(document.pages[page_num])
        remaining_pages_document.save(path.join(outdir, "Remaining_Pages.pdf"))

将 PDF 拆分为最后一页和前面的页面

使用 Aspose.PDF for Python 提取 PDF 文档的最后一页,并将其从其余页面中分离。

  1. 加载 PDF 文档。
  2. 确定总页数。
  3. 检查文档是否为空。
  4. 为最后一页创建文档。
  5. 添加最后一页。
  6. 保存最后一页文档。
  7. 检查单页文档。
  8. 从原始文档中删除最后一页。
  9. 保存剩余的页面。
import sys
import aspose.pdf as ap
from os import path


def split_documents_last_page_and_rest(infile, outdir):
    document = ap.Document(infile)
    total_pages = len(document.pages)

    if total_pages == 0:
        return

    with ap.Document() as last_page_document:
        last_page_document.pages.add(document.pages[total_pages])
        last_page_document.save(path.join(outdir, "Last_Page.pdf"))

    if total_pages == 1:
        return

    document.pages.delete(total_pages)  # Remove last page from original document
    document.save(path.join(outdir, "Previous_Pages.pdf"))

将 PDF 拆分为三部分

使用 Aspose.PDF for Python 将 PDF 文档拆分为三个独立部分。

  1. 加载 PDF 文档。
  2. 确定总页数。
  3. 检查文档是否为空。
  4. 计算部件大小。
  5. 遍历三个部分。
  6. 确定每个部分的页码范围。
  7. 验证页面范围。
  8. 为每个部分创建一个新文档。
  9. 将页面复制到部件文档中。
  10. 保存每个部分。
import sys
import aspose.pdf as ap
from os import path


def split_documents_into_three_parts(infile, outdir):
    document = ap.Document(infile)
    total_pages = len(document.pages)

    if total_pages == 0:
        return

    part_size = max(1, (total_pages + 2) // 3)

    for part_index in range(3):
        start_page = part_index * part_size + 1
        end_page = min((part_index + 1) * part_size, total_pages)

        if start_page > total_pages:
            break

        with ap.Document() as part_document:
            for page_num in range(start_page, end_page + 1):
                part_document.pages.add(document.pages[page_num])
            part_document.save(path.join(outdir, f"Three_Parts_{part_index + 1}.pdf"))

自定义 PDF 页面拆分器

使用 Aspose.PDF for Python 将 PDF 文档拆分为多个文件,依据自定义的页面分组。

import sys
import aspose.pdf as ap
from os import path


def split_documents_custom_page_groups(infile, outdir):
    document = ap.Document(infile)
    total_pages = len(document.pages)
    groups = [
        [1, 2, 5],
        [3, 4, 6, 7],
    ]

    for group_index, group in enumerate(groups, start=1):
        valid_pages = [page_num for page_num in group if 1 <= page_num <= total_pages]
        if not valid_pages:
            continue

        with ap.Document() as group_document:
            for page_num in valid_pages:
                group_document.pages.add(document.pages[page_num])
            group_document.save(path.join(outdir, f"Custom_Group_{group_index}.pdf"))

将 PDF 拆分为单独页面并使用稳定的文件名

使用 Aspose.PDF for Python 将 PDF 文档拆分为单独的页面,并使用稳定的文件名保存它们。

import sys
import aspose.pdf as ap
from os import path


def split_documents_with_stable_filenames(infile, outdir):
    document = ap.Document(infile)
    total_pages = len(document.pages)

    for page_num in range(1, total_pages + 1):
        with ap.Document() as new_document:
            new_document.pages.add(document.pages[page_num])
            new_document.save(path.join(outdir, f"Page_{page_num:03d}.pdf"))

将 PDF 拆分为奇数页和偶数页

使用 Aspose.PDF for Python 将 PDF 文档拆分为两个独立的文件,分别包含奇数页和偶数页。

import sys
import aspose.pdf as ap
from os import path


def split_documents_odd_even_pages(infile, outdir):
    document = ap.Document(infile)
    total_pages = len(document.pages)

    # Odd pages document
    with ap.Document(infile) as document:
        with ap.Document() as odd_document:
            for page_num in range(1, total_pages + 1, 2):
                odd_document.pages.add(document.pages[page_num])
            odd_document.save(path.join(outdir, "Odd_Pages.pdf"))

        with ap.Document() as even_document:
            for page_num in range(2, total_pages + 1, 2):
                even_document.pages.add(document.pages[page_num])
            even_document.save(path.join(outdir, "Even_Pages.pdf"))

相关文档主题