多个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 113 times, 1 visits today)
本文作者为书途,转载请注明。