Converting PDF to images automatically

前端 未结 6 1440
栀梦
栀梦 2020-12-08 02:46

So the state I\'m in released a bunch of data in PDF form, but to make matters worse, most (all?) of the PDFs appear to be letters typed in Office, printed/fax, and then sca

6条回答
  •  北海茫月
    2020-12-08 02:59

    Here's an alternative approach to turning a .pdf file into images: Use an image printer. I've successfully used the function below to "print" pdf's to jpeg images with ImagePrinter Pro. However, there are MANY image printers out there. Pick the one you like. Some of the code may need to be altered slightly based on the image printer you pick and the standard file saving format that image printer uses.

    import win32api
    import os
    
    def pdf_to_jpg(pdfPath, pages):
        # print pdf using jpg printer
        # 'pages' is the number of pages in the pdf
        filepath = pdfPath.rsplit('/', 1)[0]
        filename = pdfPath.rsplit('/', 1)[1]
    
        #print pdf to jpg using jpg printer
        tempprinter = "ImagePrinter Pro"
        printer = '"%s"' % tempprinter
        win32api.ShellExecute(0, "printto", filename, printer,  ".",  0)
    
        # Add time delay to ensure pdf finishes printing to file first
        fileFound = False
        if pages > 1:
            jpgName = filename.split('.')[0] + '_' + str(pages - 1) + '.jpg'
        else:
            jpgName = filename.split('.')[0] + '.jpg'
        jpgPath = filepath + '/' + jpgName
        waitTime = 30
        for i in range(waitTime):
            if os.path.isfile(jpgPath):
                fileFound = True
                break
            else:
                time.sleep(1)
    
        # print Error if the file was never found
        if not fileFound:
            print "ERROR: " + jpgName + " wasn't found after " + str(waitTime)\
                  + " seconds"
    
        return jpgPath
    

    The resulting jpgPath variable tells you the path location of the last jpeg page of the pdf printed. If you need to get another page, you can easily add some logic to modify the path to get prior pages

提交回复
热议问题