圣者
精华
|
战斗力 鹅
|
回帖 0
注册时间 2011-10-19
|
- import os
- from pdf2image import convert_from_path
- from PIL import Image
- from reportlab.pdfgen import canvas
- from reportlab.lib.pagesizes import A4
- import tempfile
- # 设定目录路径为当前路径
- directory = os.getcwd()
- # 收集所有PDF文档的路径
- pdf_files = [f for f in os.listdir(directory) if f.endswith('.pdf')]
- images = []
- # 转换所有PDF文档为图像并进行缩放
- for pdf_file in pdf_files:
- # 将PDF转换为图像
- pdf_images = convert_from_path(os.path.join(directory, pdf_file), dpi=600) # 提高DPI
- for pdf_image in pdf_images:
- # 添加图像到 images 列表中
- images.append(pdf_image)
- # 创建一个新的PDF
- c = canvas.Canvas("combined.pdf", pagesize=A4) # 改为竖直方向
- # 将图像添加到PDF
- for i in range(0, len(images), 2):
- # Save image i to a temporary file and add it to the PDF
- temp_file1 = tempfile.NamedTemporaryFile(suffix=".jpg").name
- images[i].save(temp_file1)
- c.drawImage(temp_file1, 0, A4[1]/2, width=A4[0], height=A4[1]/2) # 这里的宽度应为 A4 的宽度,高度应为 A4 的一半
-
- # If there is a next image, save it to a temporary file and add it to the PDF
- if i+1 < len(images):
- temp_file2 = tempfile.NamedTemporaryFile(suffix=".jpg").name
- images[i+1].save(temp_file2)
- c.drawImage(temp_file2, 0, 0, width=A4[0], height=A4[1]/2) # 这里的宽度应为 A4 的宽度,高度应为 A4 的一半
- c.showPage()
- # 保存PDF
- c.save()
复制代码 和ChatGPT聊了下,他说python能整,实测可以,当然源文件需要是正经的电子pdf发票
|
|