利用PIL将png图片批量转为pdf

本文介绍了一个Python函数,使用PIL库将非RGBA模式的PNG图片转换为RGBA,然后创建白色背景的PDF。函数还实现遍历指定目录下所有PNG文件并转换为PDF保存。
from PIL import Image
import os

# 定义函数,将PNG图片转换为PDF
def png_to_pdf(png_path, pdf_path):
    # 打开PNG图片
    image = Image.open(png_path)
    # 如果图片不是RGBA模式,转换为RGBA模式
    if image.mode != 'RGBA':
        image = image.convert('RGBA')
    # 创建一个白色背景的新图片
    new_image = Image.new('RGBA', image.size, 'white')  # "white" 是背景颜色
    # 将原始图片粘贴到新图片上,透明部分会变为白色
    new_image.paste(image, (0, 0), image)
    # 将新图片转换为RGB模式
    new_image = new_image.convert('RGB')
    # 保存为PDF
    new_image.save(pdf_path, "PDF")

# 遍历指定目录下的所有PNG文件转为pdf然后保存在当前文件夹中
for file in os.listdir('figure'):
    if file.endswith('.png'):
        # 使用函数
        png_to_pdf('figure\\'+file, file[:-4] + '.pdf')

### 批量图片转换为 PDF 并与现有 PDF 文件合并 #### 使用 Python 和 PyPDF2 实现批量图片PDF 的转换以及合并 Python 提供了一个非常方便的库 `PyPDF2` 来处理 PDF 文档的操作,包括创建、分割和合并等功能。以下是具体方法: 1. **安装依赖项** 首先需要确保已安装必要的 Python 库: ```bash pip install pypdf2 pillow ``` 2. **代码实现** 下面提供了一段完整的 Python 脚本用于将多张图片转换为 PDF,并将其与其他现有的 PDF 文件合并。 ```python from PIL import Image import os from PyPDF2 import PdfWriter def images_to_pdf(image_paths, output_pdf_path): """将一组图像路径转换为单个 PDF""" pdf_writer = PdfWriter() for image_path in image_paths: with Image.open(image_path) as img: # 将图像转换为 RGB 模式以防报错 if img.mode != 'RGB': img = img.convert('RGB') # 创建临时 PDF 页面 temp_pdf_path = f"{os.path.splitext(image_path)[0]}_temp.pdf" img.save(temp_pdf_path, "PDF", resolution=100.0) # 添加到 PDF 编写器中 with open(temp_pdf_path, "rb") as temp_pdf_file: pdf_writer.add_page(temp_pdf_file.read()) # 删除临时文件 try: os.remove(temp_pdf_path) except Exception as e: pass # 如果删除失败则忽略 # 输出最终 PDF with open(output_pdf_path, "wb") as out_pdf_file: pdf_writer.write(out_pdf_file) def merge_pdfs(pdf_list, merged_output_path): """合并多个 PDF 到一个目标 PDF 中""" merger = PdfWriter() for pdf_path in pdf_list: with open(pdf_path, "rb") as file: merger.append(file) with open(merged_output_path, "wb") as final_file: merger.write(final_file) # 主函数调用 if __name__ == "__main__": # 图片列表 (可以替换为你自己的图片路径) image_files = ["image1.jpg", "image2.png"] converted_pdf = "converted_images.pdf" existing_pdf = "existing_document.pdf" # 替换为目标 PDF 名称 final_merged_pdf = "final_result.pdf" # 步骤一:将图片转换为 PDF images_to_pdf(image_files, converted_pdf) # 步骤二:合并新生成的 PDF 和已有 PDF all_pdfs = [converted_pdf, existing_pdf] merge_pdfs(all_pdfs, final_merged_pdf) ``` 上述脚本实现了两个主要功能:一是将一系列图片转换为单独的 PDF 文件;二是将这些新的 PDF 文件与已经存在的其他 PDF 合并在一起[^4]。 #### 其他工具推荐 除了编程方式外,还可以考虑一些图形界面或者命令行工具完成此任务: - **Wkhtmltopdf**: 这款开源软件能够很好地支持 HTML 或者图片PDF 的转化过程。对于那些熟悉网页设计的人来说尤其有用[^3]。 - **悦书 PDF 阅读器**: 它不仅可以用来阅读电子书籍,还提供了简单的选项允许用户直接导入图片序列进而保存成一个新的 PDF 文件[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值