windows 从包含图像的文件夹结构创建PDF文件

hivapdat  于 2023-05-30  发布在  Windows
关注(0)|答案(1)|浏览(119)

我正在寻找一种方法来生成一个PDF文件夹与几张图片。
我有很多这样的照片:

folder1/
Image1.jpg
Image2.jpg 
......

folder2/
img1.jpg
pict.jpg
name1.jpg

我正在寻找一种方法,我们可以自动生成一个PDF使用保存的图片的名称,如果可能的话,自动加载到PDF的图片。
我的代码:

import os
from PIL import Image
from PyPDF2 import PdfFileWriter, PdfFileReader
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter

# Define the path to the folder containing the images
path = "path/to/folder"

# Create a new PDF file
output_pdf = PdfFileWriter()

# Loop through each image in the folder and add it to the PDF file
for filename in os.listdir(path):
    if filename.endswith(".jpg") or filename.endswith(".jpeg") or filename.endswith(".png"):
        # Open the image file using the Pillow library
        with Image.open(os.path.join(path, filename)) as img:
            # Create a new page in the PDF file
            pdf_page = output_pdf.addBlankPage(width=img.width, height=img.height)
            # Convert the image to RGB mode and add it to the PDF page
            img_rgb = img.convert('RGB')
            pdf_page.mergeRGBImage(img_rgb)
            
            # Add the file name to the PDF page
            c = canvas.Canvas(pdf_page)
            c.setFont("Helvetica", 8)
            c.drawString(10, 10, filename)
            c.save()

# Save the output PDF file
with open("output.pdf", "wb") as out_file:
    output_pdf.write(out_file)
odopli94

odopli941#

这是我的建议,我会使用PIL来实现你想要的:

from PIL import Image  # install by > python3 -m pip install --upgrade Pillow  # ref. https://pillow.readthedocs.io/en/latest/installation.html#basic-installation

images = [
    Image.open("C:/Users/test/Desktop/testpics/" + f)
    for f in ["pic1.jpg", "pic2.jpg", "pic3.jpg"]
]

pdf_path = "C:/Users/test/Desktop/pics123.pdf"
    
images[0].save(
    pdf_path, "PDF" ,resolution=100.0, save_all=True, append_images=images[1:]
)

当然,您必须编辑图像的当前路径。在for循环中,你必须指定哪些图片要保存为pdf,正如你提到的,你要指定哪些图片应该保存。
如果您正在运行该脚本,所有提到的图片将被保存为PDF文件在提到的路径。
如果您有任何其他问题,请随时提问。

相关问题