zoukankan      html  css  js  c++  java
  • python 将文件夹内的图片转换成PDF

    import os
    import string
    from PIL import Image
    from reportlab.lib.pagesizes import A4, landscape
    from reportlab.pdfgen import canvas
    import sys

    def file_name(file_dir, suffix = ".jpg"):
    L=[]
    for root, dirs, files in os.walk(file_dir):
    for file in files:
    if os.path.splitext(file)[1] == suffix:
    L.append(os.path.join(root, file))
    return L

    #f_pdf pdf file path ,include filename
    #filedir pic file path
    #suffix pic file suffix examples: .jpg
    def conpdf(f_pdf , filedir, suffix):
    (w, h) = landscape(A4)
    c = canvas.Canvas(f_pdf, pagesize = landscape(A4))
    fileList = file_name(filedir, suffix)

    for f in fileList:
    (xsize, ysize) = Image.open(f).size

    ratx = xsize / w
    raty = ysize / h
    ratxy = xsize / (1.0 * ysize)
    if ratx > 1:
    ratx = 0.99
    if raty > 1:
    raty = 0.99

    rat = ratx

    if ratx < raty:
    rat = raty
    widthx = w * rat
    widthy = h * rat
    widthx = widthy * ratxy
    posx = (w - widthx) / 2
    if posx < 0:
    posx = 0
    posy = (h - widthy) / 2
    if posy < 0:
    pos = 0

    c.drawImage(f, posx, posy, widthx, widthy)
    c.showPage()
    c.save()
    print "Image to pdf success!"

    if __name__ == '__main__':
    if len(sys.argv)== 4:
    conpdf(sys.argv[1], sys.argv[2], sys.argv[3])
    elif len(sys.argv) == 3:
    #default .jpg
    conpdf(sys.argv[1], sys.argv[2])
    else:
    conpdf("C:\Users\pzf\test.pdf", "c:\magn", ".jpg")

  • 相关阅读:
    Qt图片显示
    C# 对话框使用整理
    C# AutoResetEvent 使用整理
    C++ 模板
    superset使用
    superset部署
    kafka修改topic副本数
    c# 生成自定义图片
    c# 解决Randoms伪随机重复问题
    c# 图片加水印
  • 原文地址:https://www.cnblogs.com/pzf9266/p/7814132.html
Copyright © 2011-2022 走看看