首页 > 解决方案 > 使用 PyPDF4 编写 pdf 后出现 WAND 异常

问题描述

我需要添加一个从 PDF 中删除空白页的功能。我有以下代码:

def remove_blank_page(self, file, config, ocr, files):
    tmp_folder = tempfile.mkdtemp(dir=config.cfg['GLOBAL']['tmppath'], prefix='blank_detection_')
    tmp_filename = tmp_folder + '/tmp-%03d.jpg'

    self.save_img_with_wand(file, tmp_filename)
    doc = open('test.pdf', 'rb')

    pdf_reader = PyPDF4.PdfFileReader(doc)
    pdf_writer = PyPDF4.PdfFileWriter()
    for page in range(0, pdf_reader.numPages):
        current_page = tmp_folder + '/tmp-%03d' % (page + 1) + '.jpg'

        if not self.is_blank_page(current_page):
            current_pdf = pdf_reader.getPage(page)
            pdf_writer.addPage(current_pdf)

    with open(file, "wb") as stream:
        pdf_writer.write(stream)

我创建 PDF 没有问题,但是当我想使用 WAND 将其转换为 JPG 时,出现以下错误:

wand.exceptions.WandRuntimeError: MagickReadImage returns false, but did not raise ImageMagick  exception. This can occur when a delegate is missing, or returns EXIT_SUCCESS without generating a raster.

这是魔杖部分:

def save_img_with_wand(self, pdf_name, output):
    try:
        with Img(filename=pdf_name, resolution=self.resolution) as pic:
            library.MagickResetIterator(pic.wand)
            pic.scene = 1  # Start cpt of filename at 1 instead of 0
            pic.compression_quality = self.compressionQuality
            pic.background_color = Color("white")
            pic.alpha_channel = 'remove'
            pic.save(filename=output)
    except (PolicyError, CacheError) as e:
        self.Log.error('Error during WAND conversion : ' + str(e))

如果我绕过该remove_blank_page功能,Wand 没有错误,所以我想知道我做错了什么......

提前致谢

标签: pythonimagemagickwand

解决方案


推荐阅读