【问题标题】:Folders of pictures into a single PDF将图片文件夹转换为单个 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,但这是一个加号。

【问题讨论】:

    标签: python bash pdf-generation png jpeg


    【解决方案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 顺利运行上述代码
    猜你喜欢
    • 2021-07-02
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    相关资源
    最近更新 更多