python脚本中的错误有时会产生2到3倍的JPG(pdf2image),但并非总是如此

2022-05-21 06:34:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用pdf2image将大约1600个文件夹中的PDF更改为JPG。我环顾四周,根据许多答案改编了代码,但这一部分似乎在某些文件夹中过度生成了JPG(很难说是哪一个)

在一个特定的例子中,使用AdobeAcrobat工具制作pdf可以创建447个JPG(正确的数量),但我的脚本可以创建1059个。我仔细查看,发现一些pdf页面多次保存为JPG,并插入到其他pdf文件的页面序列中

例如: PDF A有1个页面,并创建PDFA_page_1.jpg。 PDF B有44页,创建PDFB_page_1.jpg到…page_45.jpg,因为PDF A再次显示为page_10.jpg。如果这令人困惑,请告诉我

我尝试过混淆循环的索引部分(具体地说,使用页面而不是页面,将命名约定作为变量,而不是直接放入.save和.move函数中)

我还尝试在pdf2image.py中使用fmt='jpg'参数,但无法生成正确的命名方案,因为我不确定如何在没有for page in pages循环的情况下迭代页码

for pdf_file in os.listdir(pdf_dir):

        if pdf_file.endswith(".pdf") and pdf_file.startswith("602024"):
            #Convert function from pdf2image
            pages = convert_from_path(pdf_file, 72, output_folder=final_directory)
            print(pages)
            pdf_file = pdf_file[:-4]


            for page in pages:
                #save with designated naming scheme <pdf file name> + page index
                jpg_name = "%s-page_%d.jpg" % (pdf_file,pages.index(page)+1)
                page.save(jpg_name, "JPEG")
                #Moves jpg to the mini_jpg folder
                shutil.move(jpg_name, 'mini_jpg')
                #no_Converted += 1
    # Delete ppm files
    dir_name = final_directory
    ppm_remove_list = os.listdir(dir_name)

    for ppm_file in ppm_remove_list:
        if ppm_file.endswith(".ppm"):
            os.remove(os.path.join(dir_name, ppm_file))

没有错误消息,只是在某些情况下,JPG的数量是我预期的2-3倍。包含多个单页pdf的文件夹不会遇到此问题,包含单个多页pdf的文件夹也不会遇到此问题。一些包含多页PDF的文件夹也可以正常工作


Tags: namein文件夹forpdfosdirpage页面pagesfilejpgppm