• 使用Python脚本实现图片合成PDF功能
  • 发布于 2个月前
  • 520 热度
    0 评论
之前对pdf中每张图片进行处理后,再重新合并chengpdf的时候,文件都会很大,为了保证pdf的质量,小编整合了一下使用python脚本,来自动处理这个枯燥的过程。
import os
from PIL import Image # 引入核心库
from mymodules.time_stamp import get_current_stamp # 引入自定义模块获取系统当前时间


PDF_FOLDER_NAME = 'merge_pdf' # 定义pdf所在文件夹名称
def combine_imgs_pdf(folder_path, pdf_file_path):
    """
    合成文件夹下的所有图片为pdf
    Args:
        folder_path (str): 源文件夹
        pdf_file_path (str): 输出路径
    """
    files = os.listdir(folder_path)
    png_files = []
    sources = []
    print(files)
    for file in files:
        if 'png' in file or 'jpg' in file: # 目前支持png和jpg两种图片格式
            png_files.append(folder_path + file)
    png_files.sort()
 
    output = Image.open(png_files[0])
    png_files.pop(0)
    for file in png_files:
        png_file = Image.open(file)
        if png_file.mode != "RGB":
            png_file = png_file.convert("RGB")
        sources.append(png_file)
    # 如果文件夹不存在,则创建文件夹
    if os.path.exists(PDF_FOLDER_NAME) and os.path.isdir(PDF_FOLDER_NAME):
        print("文件夹存在")
    else:
        print("文件夹不存在")
        os.mkdir(PDF_FOLDER_NAME)
    output.save(pdf_file_path, "pdf", save_all=True, append_images=sources)
 
if __name__ == "__main__":
    folder = "./" # 目前只转换当前文件夹的图片
    pdfFile = "./{}/{}.pdf".format(PDF_FOLDER_NAME, get_current_stamp()) # 根据系统当前时间,命名pdf文件名
    combine_imgs_pdf(folder, pdfFile)
./mymodules/time_stamp.py

import datetime

def get_current_stamp():
    now = datetime.datetime.now() # 获取当前时间
    year = now.year # 年
    month = now.month # 月
    day = now.day # 日
    hour = now.hour # 时
    minute = now.minute # 分
    second = now.second # 秒
    timestamp = '{0}{1}{2}{3}{4}{5}'.format(year, month, day, hour, minute, second) # 格式化字符串
    return timestamp
当前脚本没有对图片尺寸进行处理,在pdf中尺寸与图片尺寸一致。

用户评论