我正在尝试提取任何通用pdf文档的语言,并使用python在CMS中进行设置。我试图使用/ Lang属性提取它,这是代码示例:
pdfFileLang = findInDict('/Lang',pdfFile.resolvedObjects())
def findInDict(needle,indirectObjectDict):
""" Returns the PDF Language """
haystack = indirectObjectDict[0]
LOG('pypdfutils.py getPdfLanguage key haystack',INFO,str(haystack))
for key in haystack.keys():
LOG('pypdfutils.py getPdfLanguage key',INFO,str(key))
try:
value = haystack[key]
LOG('pypdfutils.py getPdfLanguage value',INFO,str(value))
if key == needle:
return value
else:
LOG('pypdfutils.py getPdfLanguage value1',INFO,str(value))
internalDict = value.keys()
LOG('pypdfutils.py getPdfLanguage key Dict',INFO,str(internalDict))
if type(value) == types.DictType:
internalDict = value.keys()
else:
LOG('pypdfutils.py getPdfLanguage value2',INFO,str(value))
for internalkey in internalDict.keys():
internalvalue = internalDict[internalkey]
LOG('pypdfutils.py getPdfLanguage key internalvalue',INFO,str(internalvalue))
if type(internalvalue) == types.DictType and internalvalue.has_key(needle):
return internalvalue[needle]
except Exception,e:
LOG('pypdfutils.py getPdfLanguage',INFO,str(e))
continue
但是,当我看到日志时,在字典中找不到这样的属性“ / Lang”。
最佳答案
似乎您尝试通过PDF文件中的所有词典搜索“ Lang”键。
要检查PDF文件中的语言信息,您需要检查目录中的“ Lang”条目。
但是,此条目的存在取决于用于创建PDF文件的PDF创建软件,大多数PDF文件没有此条目。
我不理解Python代码,但我相信您正在使用的PDF库将为您提供对预告片(字典)或目录(根目录)的访问。如果您可以访问预告片字典,请从该字典获取“ Root”值。这是对目录(根)字典的间接引用。然后将此引用解析为dict以获取目录字典。从此目录字典中获取/ Lang值将为您提供属性。
尝试以下
catalog = pdfFile.trailer['/Root'].getObject()
if has_key("/Lang"):
lang = catalog['/Lang'].getObject()
请注意,我不是Python程序员,上面的代码段是我的第一个Python代码(我不确定它是否有效。:-)
请在http://sourcecodebrowser.com/python-pypdf/1.10/classpy_pdf_1_1pdf_1_1_pdf_file_reader.html#a92be75503c895367083a846b3060e632上参考pypdf参考
关于python - 如何提取pdf文档的语言,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23558176/