2015-09-30 113 views
-1

我正在寫一個腳本,它將讀取pdf文件的創建和修改日期。我使用pyPdf包在PythonpyPdf從IndirectObject提取信息

我有以下代碼

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的信息,任何幫助將是不勝感激!

回答

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)'} 

所以,你可以拉出生產者以同樣的方式:

>>> x.Info.Producer 
'(ImageMagick 6.6.0-1 2010-03-04 Q8 http://www.imagemagick.org)' 

生產者的值是一個字符串,PDF - 這就是括號是什麼。

>>> x.Info.Producer.decode() 
'ImageMagick 6.6.0-1 2010-03-04 Q8 http://www.imagemagick.org' 
與CreationDate

同樣的:你可以用decode()方法剝奪他們

>>> x.Info.CreationDate.decode() 
'D:20130802052610' 

的pdfrw文檔是不是真的很大,但也有很多在GitHub上的例子,在這裏幾在SO上。