pdfminer上的警告

rod*_*ocf 5 python pdf python-3.x pdfminer

我已经发现并(稍微)修改了stackoverflow中的这个脚本,以便它可以在python 3.3上运行:

from pdfminer.pdfinterp import PDFResourceManager, process_pdf
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from io import StringIO

def convert_pdf(path):

    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, laparams=laparams)

    fp = open(path, 'rb')
    process_pdf(rsrcmgr, device, fp)
    fp.close()
    device.close()

    string = retstr.getvalue()
    retstr.close()
    return string


print(convert_pdf('abc.pdf'))
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我似乎有两个问题:

  • 在运行脚本时,我收到了大量的警告:

    警告:root:undefined:PDFCIDFont:basefont ='LKOELN + Wingdings-Regular',cidcoding ='Adobe-Identity',139
    警告:root:undefined:PDFCIDFont:basefont ='LKKPCF + Wingdings2',cidcoding ='Adobe-Identity' ,132

在印刷文本中看起来(cid:139)如何,我如何捕获此警告并用其他内容替换该文本?

  • 请注意,我有一个编解码器行,在原始脚本中进入TextConverter(rsrcmgr, retstr, laparams=laparams),但我得到:

    回溯(最近一次调用最后一次):文件"C:/Users/rodrigo/Desktop/csp_pdf/csp_pdf2.py",第46行,在convert_pdf('abc.pdf')文件中"C:/ Users/rodrigo/Desktop/csp_pdf /csp_pdf2.py",第33行,在convert_pdf设备= TextConverter(rsrcmgr,retstr,codec ='utf-8',laparams = laparams)TypeError:init()得到一个意外的关键字参数'codec'

这与第一期有关吗?

谢谢!

Pul*_*lie 11

不幸的是,Pdfminer3k记录到Python 记录器.PDFMiner应该正确实现日志记录恕我直言.因此无法以正常方式禁用日志记录.

logging.getLogger("pdfminer").setLevel(logging.WARNING)
Run Code Online (Sandbox Code Playgroud)

坏消息!

我这样做了,它有效™:

    logging.propagate = False 
    logging.getLogger().setLevel(logging.ERROR)
Run Code Online (Sandbox Code Playgroud)

它将根记录器设置为级别错误.这将停止PDFMiner警告日志记录,因为它记录到根记录器,但不记录您自己的日志记录.

我需要将传播设置为False,因为在使用PDFMiner之后,我有重复的日志记录条目.这是由根记录器引起的.

  • 只是`logging.getLogger('pdfminer')。setLevel(logging.ERROR)`现在可以正常工作了吗? (3认同)