警告

2015-04-21 158 views
2

我已經發現(略)修改計算器這個腳本爲它的蟒蛇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')) 

它工作正常,但是我似乎有2個問題:

  • 在運行該腳本,我得到噸警告:

    警告:根:未定義:PDFCIDFont:BASEFONT = 'LKOELN +宋體正規',cidcoding = '的Adobe身份',139
    警告:根:未定義:PDFCIDFont:BASEFONT = 'LKKPCF + Wingdings2',cidcoding = '的Adobe身份',132

其中在打印文本看起來像(cid:139),我該如何抓住這一警告並更換那些文字與別的東西?

  • 請注意,我有一個編解碼器的線,在原劇本的TextConverter(rsrcmgr, retstr, laparams=laparams)裏面去,但是我得到:

    回溯(最後最近一次調用): 文件「C:/用戶/羅德里戈/Desktop/csp_pdf/csp_pdf2.py「,第46行,在 convert_pdf('abc.pdf') 文件」C:/Users/rodrigo/Desktop/csp_pdf/csp_pdf2.py「,第33行,在convert_pdf中 device = TextConverter(rsrcmgr,retstr,codec ='utf-8',laparams = laparams) TypeError:init()得到了一個意外的關鍵字參數'codec'

這與第一個問題有關嗎?

謝謝!

回答

3

Pdfminer3k日誌到Python 不幸的是。 PDFMiner應該實現正確的日誌記錄恕我直言。所以不可能以正常的方式禁用日誌記錄。

logging.getLogger("pdfminer").setLevel(logging.WARNING) 

無賴!

我做這個和它的作品™:

logging.propagate = False 
    logging.getLogger().setLevel(logging.ERROR) 

它設置了根記錄到的水平誤差。這將停止PDFMiner警告日誌記錄,因爲它會記錄到根日誌記錄器,但不會記錄您自己的日誌記錄。

我需要將傳播設置爲False,因爲在PDFMiner使用後,我有重複的日誌條目。這是由根記錄器引起的。

0

至於警告 如果你看看pdfminer模塊(第341行)的文件'pdfparser.py'部分 - 在我的文件中) 我相信這是它從中生成的地方。 但在此之前,請嘗試下面的代碼。這是爲Python 3,並假設你有python 3的 版本 - 'pdfminer3k 1.3.0',https://pypi.python.org/pypi/pdfminer3k 我確實收到警告,如'WARNING:root:Can not locate objid = 149',代碼如下, ,但警告似乎沒有進入文本流。可能.pdf文件已損壞。您的代碼 在功能 'TextConverter' 沒有 '編解碼器' 的說法 而且你行 'TextConverter(rsrcmgr,retstr,laparams = laparams)' Notes是正確 希望這有助於

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

def convert_pdf(pdfFile, retstr): 
    password = '' 
    pagenos = set() 
    maxpages = 0 
    laparams = LAParams() 
    rsrcmgr = PDFResourceManager() 
    device = TextConverter(rsrcmgr, retstr, laparams=laparams)  
    process_pdf(rsrcmgr, device, pdfFile, pagenos, maxpages=maxpages, password=password, check_extractable=True) 
    device.close() 
    return retstr 
pdfFile = open('C:\\SomeDirectory\\Some_PDF_File.pdf','rb') 
retstr = io.StringIO() 
retstr = convert_pdf(pdfFile, retstr) 
print(retstr.getvalue()) 
pdfFile.close()