一、問(wèn)題引入
現(xiàn)有pdf雙頁(yè)文檔如下:
現(xiàn)按照以下頁(yè)碼次序?qū)df雙頁(yè)文檔進(jìn)行裁剪和拼接,其中有兩點(diǎn)需要特別注意,一是封面頁(yè)只裁剪中間部分,二是文檔是從右往左的順序排版的文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-700547.html
二、python程序
import os
import office
from PIL import Image
import img2pdf
# 新建兩個(gè)文件夾分別存儲(chǔ)裁剪前和裁剪后的圖片
def newfolders():
for folder in ['images before cropping', 'images after cropping']:
if os.path.isdir(folder) == False:
os.mkdir(folder)
# pdf雙頁(yè)文檔轉(zhuǎn)為多張png圖片
def pdf_to_images(pdf_path):
office.pdf.pdf2imgs(pdf_path=pdf_path, out_dir='images before cropping')
# png圖片批量裁剪為左右兩等分
def images_cropping(pdf_name):
images = os.listdir('images before cropping')
images.sort(key=lambda x: int(x.replace(' [' + pdf_name.split('.')[0] + ']-', '').split('.')[0]))
index = 0
for image in images:
image = Image.open('images before cropping/' + image)
width, height = image.size
item_width = int(width / 2)
item_height = int(height / 2)
box_list = []
if index == 0:
box = (int(item_width / 2), 0, int(item_width * 3 / 2), height)
box_list.append(box)
else:
for i in range(2):
# box = (i * item_width, 0, (i + 1) * item_width, height) # 從左往右
box = (abs(i - 1) * item_width, 0, (abs(i - 1) + 1) * item_width, height) # 從右往左
box_list.append(box)
image_list = [image.crop(box) for box in box_list]
for j in range(len(image_list)):
image_list[j].save('images after cropping/' + str(2 * index + 1 + j) + '.png', 'PNG')
index += 1
# 裁剪后的png圖片合并為新的pdf單頁(yè)文檔
def images_to_pdf(pdf_name):
images = os.listdir('images after cropping')
images.sort(key=lambda x: int(x.split('.')[0]))
images = ['images after cropping/' + i for i in images]
with open('pdf/' + pdf_name, 'wb') as f:
f.write(img2pdf.convert(images))
if __name__ == '__main__':
pdf_name = '名探偵コナン日本語(yǔ)版第100巻.pdf'
new_pdf_name = '名偵探柯南日文版第100卷.pdf'
pdf_path = 'pdf/' + pdf_name
newfolders() # 新建兩個(gè)文件夾分別存儲(chǔ)裁剪前和裁剪后的圖片
pdf_to_images(pdf_path) # pdf雙頁(yè)文檔轉(zhuǎn)為多張png圖片
images_cropping(pdf_name) # png圖片批量裁剪為左右兩等分
images_to_pdf(new_pdf_name) # 裁剪后的png圖片合并為新的pdf單頁(yè)文檔
# 文檔樹:
# │ main.py
# │
# ├─images after cropping
# │ 1.png
# │ 10.png
# │ 100.png
# │ 101.png
# │ 102.png
# │ 103.png
# ……
# │ 95.png
# │ 96.png
# │ 97.png
# │ 98.png
# │ 99.png
# │
# ├─images before cropping
# │ [名探偵コナン日本語(yǔ)版第100巻]-0.jpg
# │ [名探偵コナン日本語(yǔ)版第100巻]-1.jpg
# │ [名探偵コナン日本語(yǔ)版第100巻]-10.jpg
# │ [名探偵コナン日本語(yǔ)版第100巻]-100.jpg
# │ [名探偵コナン日本語(yǔ)版第100巻]-11.jpg
# │ [名探偵コナン日本語(yǔ)版第100巻]-12.jpg
# │ [名探偵コナン日本語(yǔ)版第100巻]-13.jpg
# ……
# │ [名探偵コナン日本語(yǔ)版第100巻]-95.jpg
# │ [名探偵コナン日本語(yǔ)版第100巻]-96.jpg
# │ [名探偵コナン日本語(yǔ)版第100巻]-97.jpg
# │ [名探偵コナン日本語(yǔ)版第100巻]-98.jpg
# │ [名探偵コナン日本語(yǔ)版第100巻]-99.jpg
# │
# └─pdf
# 名偵探柯南日文版第100卷.pdf
# 名探偵コナン日本語(yǔ)版第100巻.pdf
三、效果展示
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-700547.html
到了這里,關(guān)于python實(shí)現(xiàn)pdf雙頁(yè)文檔轉(zhuǎn)png圖片,png圖片裁剪為左右兩等分,再合并為新的pdf單頁(yè)文檔的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!