首頁 > 軟體

Python自動化辦公之圖片轉PDF的實現

2022-04-14 10:01:52

安裝的方式很常規,直接使用pip安裝就行了。

pip install fpdf

將需要使用的三方模組匯入進來

from fpdf import FPDF  # PDF檔案物件操作庫
import os  # 檔案路徑操作庫

初始化PDF檔案物件

PDF = FPDF()

關閉自動分頁

PDF.set_auto_page_break(0)

設定需要轉換的批次圖片路徑

path = r'C:/imgs'

遍歷圖片到陣列

images = [i for i in os.listdir(path)]

設定多少張圖片在PDF中佔一頁

NUM = int(input('引數設定: 請輸入多少張圖片佔用一頁: n'))

設定圖片的寬度和高度

width = int(input('引數設定: 請輸入每張圖片的寬度: n'))
height = int(input('引數設定: 請輸入每張圖片的高度: n'))

遍歷圖片並向檔案中新增圖片

for index, image in enumerate(images):
    if index == 0:
        PDF.add_page()
    elif index % NUM == 0:
        PDF.add_page()
    PDF.image(os.path.join(path, image), w=width, h=height)

儲存PDF檔案

PDF.output(os.path.join(path, "圖片檔案.pdf"), "F")

print('圖片到PDF轉換完成!')

實現效果圖

補充

當然Python還能實現多張圖片合併轉PDF格式

下面是實現的範例程式碼

from PIL import Image
import os
import img2pdf

flag = False
while not flag:
    dirname = input("請輸入圖片資料夾所在路徑(例如d:/wlzcool):")
    flag = os.path.exists(dirname)
    if not flag:
        print("圖片資料夾所在路徑不存在!")
saveflag = False
while not saveflag:
    savedirname = input("請輸入目標圖片資料夾所在路徑(例如d:/wlzcool2):")
    saveflag = os.path.exists(savedirname)
    if not saveflag:
        print("圖片資料夾所在路徑不存在!")
        automakedir = input("是否自動建立對應資料夾?(是Y/否N):")
        if automakedir.strip().upper() == "Y":
            os.makedirs(savedirname)
            saveflag = True
files = os.listdir(dirname)
reductionFactor = int(input("請輸入長寬壓縮比(例如3):"))
if reductionFactor <= 0:
    reductionFactor = 3
isConvertBlack = input("是否輸出黑白版本?(是Y/否N):").strip().upper() == "Y"
for fname in files:
    if not fname.endswith(".jpg"):
        continue
    path = os.path.join(dirname, fname)
    savePath = os.path.join(savedirname, fname)
    if os.path.isdir(path):
        continue
    img = Image.open(path)    
    if img.size[0] > img.size[1]:
        im_rotate = img.rotate(90, expand=True)
        size = (int(im_rotate.size[0] / reductionFactor), int(im_rotate.size[1] / reductionFactor))
        im_rotate = im_rotate.resize(size)
        if isConvertBlack:
            im_rotate = im_rotate.convert("L")
        im_rotate.save(savePath, quality=95)
    else:
        size = (int(img.size[0] / reductionFactor), int(img.size[1] / reductionFactor))
        img = img.resize(size)
        if isConvertBlack:
            img = img.convert("L")
        img.save(savePath, quality=95)
filename = input("請輸入輸出檔名(例如:第一章):")
with open(filename + ".pdf", "wb") as f:
    imgs = []
    files = os.listdir(savedirname)
    for fname in files:
        if not fname.endswith(".jpg"):
            continue
        path = os.path.join(savedirname, fname)
        if os.path.isdir(path):
            continue
        imgs.append(path)
    f.write(img2pdf.convert(imgs))

到此這篇關於Python自動化辦公之圖片轉PDF的實現的文章就介紹到這了,更多相關Python圖片轉PDF內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com