python源码:执行pdf合并/分页/图片管理功能

发布于:2025-06-23 ⋅ 阅读:(20) ⋅ 点赞:(0)

前言

        不知道从何时开始,一些主流软件竟然对pdf合并/分页/图片管理等功能都开启了收费模式,属实是讨人烦了。

        这里给出python代码,实现如标题所述功能。

合并pdf

import PyPDF2


def merge_pdfs(input_paths, output_path):
    # 创建一个 PdfMerger 对象
    merger = PyPDF2.PdfMerger()

    # 遍历输入的 PDF 文件路径列表
    for path in input_paths:
        # 将每个 PDF 文件添加到合并器中
        merger.append(path)

    # 将合并后的 PDF 保存到指定的输出路径
    merger.write(output_path)
    # 关闭合并器
    merger.close()


# 定义要合并的 PDF 文件路径列表
input_pdfs = [r'A.pdf', r'B.pdf', r'C.pdf']
# 定义合并后输出的 PDF 文件路径
output_pdf = 'output_folder/output.pdf'

# 调用合并函数
merge_pdfs(input_pdfs, output_pdf)

pdf分页 

import PyPDF2


def split_pdf(input_pdf_path, output_pdf_path, start_page, end_page):
    # 打开输入的 PDF 文件
    with open(input_pdf_path, 'rb') as input_file:
        # 创建一个 PDF 阅读器对象
        pdf_reader = PyPDF2.PdfReader(input_file)
        # 创建一个 PDF 写入器对象
        pdf_writer = PyPDF2.PdfWriter()

        # 检查起始页和结束页是否在有效范围内
        if start_page < 0 or end_page >= len(pdf_reader.pages) or start_page > end_page:
            print("输入的页码范围无效。")
            return

        # 遍历指定的页码范围
        for page_num in range(start_page, end_page + 1):
            # 获取当前页
            page = pdf_reader.pages[page_num]
            # 将当前页添加到 PDF 写入器中
            pdf_writer.add_page(page)

        # 打开输出的 PDF 文件
        with open(output_pdf_path, 'wb') as output_file:
            # 将 PDF 写入器中的内容写入到输出文件中
            pdf_writer.write(output_file)

    print(f"已成功将第 {start_page + 1} 页到第 {end_page + 1} 页拆分为新的 PDF 文件:{output_pdf_path}")


# 示例用法
input_pdf = r'A.pdf'  # 输入的 PDF 文件路径
output_pdf = r'output.pdf'  # 输出的 PDF 文件路径
start_page = 15  # 起始页码
end_page = 20  # 结束页码

split_pdf(input_pdf, output_pdf, start_page - 1, end_page - 1)

图片管理

        图片转pdf 

from fpdf import FPDF


def png_to_pdf(png_path, pdf_path):
    # 创建一个新的PDF文档
    pdf = FPDF()

    # 添加一页
    pdf.add_page()

    # 将图像添加到PDF中
    pdf.image(png_path, x=10, y=10, w=180)

    # 保存PDF文件
    pdf.output(pdf_path, "F")


# 使用示例
png_to_pdf('fecd8073b2f9aefb47d9c3e4aaba2e2.jpg', 'output.pdf')

        pdf图片拆出 

from pdf2image import convert_from_path

# 请注意,pdf2image依赖poppler
# 需要在git上拉取(windows):https://github.com/oschwartz10612/poppler-windows/releases/latest
def convert_pdf_to_images(pdf_path, output_folder):
    images = convert_from_path(pdf_path)

    for i, image in enumerate(images):
        image.save(f"{output_folder}/page_{i + 1}.png", "PNG")


# 使用示例
convert_pdf_to_images(r"output.pdf", r"save_path")

网站公告

今日签到

点亮在社区的每一天
去签到