我正在尝试提取任何通用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/

10-13 06:43