Python合并为PDF

书途 48 0
温馨提示

合并PDF

多个PDF合成

之前抓取了一批报纸,但是每一页就是一个PDF,一个日期可能有十几页,查阅不太方便,后来就按照年份合并为一个整体PDF。

第二次发现合并后忘记添加书签了,又修改了一下代码:

import os
from tqdm import tqdm
from pypdf import PdfWriter
path = r"C:\Users\Shen\Desktop\海燕.大连日报副刊(1948)"
title = path.split("\\")[-1]
print(title)
count = -1
merger = PdfWriter()
for pdf in tqdm(os.listdir(path)):
    count += 1
    print(os.path.join(path, pdf))
    merger.append(os.path.join(path, pdf))
# 添加书签
    merger.add_outline_item(title=pdf.replace(".pdf", "").replace(".jpg", ""), page_number=count)
merger.write(os.path.join(r"C:\Users\Shen\Desktop", "{}.pdf".format(title)))
merger.close()

图片合并为PDF

最近需要帮人抓取一些书籍,但书籍是JPG格式,需要将JPG合并为PDF。抓取JPG的代码略过。

import os
import re
from PIL import Image
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from tqdm import tqdm


def images_to_pdf(image_folder, output_pdf):
    c = canvas.Canvas(output_pdf, pagesize=letter)
    # 获取文件夹中的图片文件列表,并按文件名称排序
    image_files = sorted([
        filename for filename in os.listdir(image_folder)
        if filename.endswith('.jpg') or filename.endswith('.png')
    ])
    # 遍历排序后的图片文件列表
    image_files.sort(key=lambda x: int(re.findall(r'\d+', x)[0]))
    for filename in tqdm(image_files):
        # print(filename)
        image_path = os.path.join(image_folder, filename)
        image = Image.open(image_path)
        image_width, image_height = image.size
        c.setPageSize((image_width, image_height))
        c.drawImage(image_path, 0, 0)
        # 添加新页面
        c.showPage()
    # 保存合并后的PDF文件
    c.save()
    print(f"PDF file saved: {output_pdf}")


# 指定包含图片的文件夹路径
image_folder = r"C:\Users\Shen\PycharmProjects\pythonProject\32本\青羊年鉴2016"
# 指定输出的PDF文件路径
output_pdf = r"C:\Users\Shen\PycharmProjects\pythonProject\32本\青羊年鉴2016.pdf"
# 调用函数合并图片为PDF
images_to_pdf(image_folder, output_pdf)
(Visited 37 times, 1 visits today)

发表评论 取消回复
表情 图片 链接 代码

分享