我正在编写一个脚本,用于读取pdf文件的创建和修改日期。我在Python中使用pyPdf包
我有以下代码
from pyPdf import PdfFileWriter, PdfFileReader
input1 = PdfFileReader(file('myfile','rb'))
input1.input1.getDocumentInfo()
此代码返回
{'/Producer': IndirectObject(185, 0), '/CreationDate': IndirectObject(186, 0), '/ModDate': IndirectObject(186, 0)}
我不确定如何从这些IndirectObject中提取信息,任何帮助都将不胜感激!
答案 0 :(得分:1)
我真的不太了解pyPdf,但是pdfrw有一些类似的功能,而且(恕我直言 - 我是作者)一个更简单的界面。 pdfrw将PDF文件中的结构映射到Python结构中。这是一个示例会话:
>>> from pdfrw import PdfReader
>>> x = pdfrw.PdfReader('some_random.pdf')
什么是x
?它是PDF文件的预告片字典,它被映射到(子类)Python字典:
>>> list(x)
['/Size', '/Info', '/Root']
要访问此词典中的项目,您可以使用字典样式查找,但由于所有标准Adobe名称都以斜杠和字母开头,因此为方便起见,pdfrw还支持属性查找。它基本上是字典和列表。信息只是另一本字典:
>>> x.Info
{'/ModDate': '(D:20130802052610)',
'/Producer': '(ImageMagick 6.6.0-1 2010-03-04 Q8 http://www.imagemagick.org)',
'/Title': '(US4441207.pdf)',
'/CreationDate': '(D:20130802052610)'}
所以你可以用同样的方式取出Producer:
>>> x.Info.Producer
'(ImageMagick 6.6.0-1 2010-03-04 Q8 http://www.imagemagick.org)'
Producer的值是一个PDF字符串 - 这就是括号的含义。您可以使用decode()
方法剥离它们:
>>> x.Info.Producer.decode()
'ImageMagick 6.6.0-1 2010-03-04 Q8 http://www.imagemagick.org'
与CreationDate相同:
>>> x.Info.CreationDate.decode()
'D:20130802052610'
pdfrw文档并不是很好,但是在github上有很多例子,有些例子在SO上。