我试图提取任何通用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库将为您提供对trailer(dictionary)或catalog(root)dictionray的访问。如果您有权访问尾部dict,请从dict获取“Root”值。这是对目录(Root)字典的间接引用。然后将此引用解析为dict以获得目录字典。从这个目录dict获取/Lang值将为您提供属性。在
试试下面的方法
请注意,我不是一个Python程序员,上面的代码片段是我的第一个Python代码(我不确定它是否有效)。:-)
请参考http://sourcecodebrowser.com/python-pypdf/1.10/classpy_pdf_1_1pdf_1_1_pdf_file_reader.html#a92be75503c895367083a846b3060e632上的pypdf参考
如PDF规范中所述: http://www.adobe.com/devnet/pdf/pdf_reference.html
文档目录中有一个“/Lang”键。在我的PDF规范版本中,第7.7.2节对此进行了解释。在
此语言键定义整个文档的假定语言,但标记不同的部分除外。在
所以,有两个注意事项: 1) 此“/Lang”键是可选的。如果没有的话,PDF规范说明语言是未定义的。在
2)此“/Lang”键可能被文件中的其他元素覆盖。因此,整个文档可能是英语,但第101页上的特定句子可能会将语言重新定义为法语。在
在您的例子中,您的算法应该首先尝试找到上面定义的整个文档语言。如果没有,那就看你怎么办了。您可以在整个文档中搜索“/Lang”键,看看是否找到其他键,但如果找到多个键,则必须确定这意味着什么。。。在
相关问题 更多 >
编程相关推荐