将图片文件夹转换为单个 PDF
Posted
技术标签:
【中文标题】将图片文件夹转换为单个 PDF【英文标题】:Folders of pictures into a single PDF 【发布时间】:2022-01-12 14:03:52 【问题描述】:我有以下问题。
我有这样的文件夹结构:
vol1/
chap1/
01.jpg
02.JPG
03.JPG
chap2/
04.JPG
05.jpg
06.jpg
chap3/
07.JPG
08.jpg
09.JPG
vol2/
chap4/
01.JPG
02.jpg
03.jpg
chap5/
04.jpg
05.JPG
06.jpg
chap6/
07.jpg
08.JPG
09.jpg
在单个vol
文件夹中,章节的顺序是递增的,每个chap
文件夹中的 jpg 文件也是如此。
现在,我想,为每个vol
文件夹获取一个pdf,保持图片的顺序。把它想象成一个分开的漫画或漫画卷,然后放回一个文件中。
我如何在 bash 或 python 中做到这一点? 我不知道我有多少卷,或者一卷有多少章,或者一章有多少个jpg文件。换句话说,我需要它来处理任何数量的卷/章/jpg。
另外一个考虑是考虑异构图片文件,可能在一个章节中同时包含 jpg 和 png,但这是一个加号。
【问题讨论】:
【参考方案1】:我想这应该像预期的那样工作!遇到问题告诉我
import os
from PIL import Image
def merge_into_pdf(paths, name):
list_image = []
# Create list of images from list of path
for i in paths:
list_image.append(Image.open(i).convert("RGB"))
# merge into one pdf
if len(list_image) == 0:
return
# get first element of list and pop it from list
img1 = list_image[0]
list_image.pop(0)
# append all images and save as pdf
img1.save(f"name.pdf",save_all=True, append_images=imagelist)
def main():
# List directory
directory = os.listdir(".")
for i in directory:
# if directory start with 'vol' iterate through it
if i.find("vol") != -1:
path = []
sub_dir = os.listdir(i)
# for each subdirectory
for j in sub_dir:
files = os.listdir(f"i/j")
for k in files:
# if file ends with jpg or png append to list
if k.endswith((".jpg", ".JPG", ".png", ".PNG")):
path.append(f"i/j/k")
# merge list into one pdf
merge_into_pdf(path, i)
if __name__ == "__main__":
main()
【讨论】:
您可能需要!点安装枕头和! pip 安装图像,最后! pip install img2pdf 顺利运行上述代码以上是关于将图片文件夹转换为单个 PDF的主要内容,如果未能解决你的问题,请参考以下文章