2013-01-08 16 views

Odpowiedz

30

Spróbuj pdfminer:

from pdfminer.pdfparser import PDFParser 
from pdfminer.pdfdocument import PDFDocument 

fp = open('diveintopython.pdf', 'rb') 
parser = PDFParser(fp) 
doc = PDFDocument(parser) 

print doc.info # The "Info" metadata 

Oto wynik:

>>> [{'CreationDate': 'D:20040520151901-0500', 
    'Creator': 'DocBook XSL Stylesheets V1.52.2', 
    'Keywords': 'Python, Dive Into Python, tutorial, object-oriented, programming, documentation, book, free', 
    'Producer': 'htmldoc 1.8.23 Copyright 1997-2002 Easy Software Products, All Rights Reserved.', 
    'Title': 'Dive Into Python'}] 

Aby uzyskać więcej informacji, patrz na tym tutorialu: A lightweight XMP parser for extracting PDF metadata in Python.

+1

heads-up: autor pdfminer mówi, że to niezgodne z Pythonie 3, przynajmniej od daty tego postu ([link] (https://github.com/euske/pdfminer/)) – JSmyth

+8

Od listopada 2013 r. "klasa PDFDocument przyjmuje jako argument obiekt PDFParser, a dokumenty PDFDocument.set_parser() i PDFParser.set_document() są usuwane." Więc możesz po prostu zrobić doc = PDFDocument (parser) i pominąć wywołania set_document, set_parser i zainicjować. –

+0

@JSmyth Spis [PyPi Index] (https://pypi.python.org/pypi?%3Aaction=search&term=pdfminer&submit=search) zawiera obecnie trzy działające widły 'pdfminer', które są kompatybilne z Pythonem 3.' pip search pdfminer' – zero2cx

3

Zaimplementowałem to za pomocą pyPdf. Zobacz przykładowy kod poniżej.

from pyPdf import PdfFileReader 
pdf_toread = PdfFileReader(open("doc2.pdf", "rb")) 
pdf_info = pdf_toread.getDocumentInfo() 
print str(pdf_info) 

wyjściowa:

{'/Title': u'Microsoft Word - Agnico-Eagle - Complaint (00040197-2)', '/CreationDate': u"D:20111108111228-05'00'", '/Producer': u'Acrobat Distiller 10.0.0 (Windows)', '/ModDate': u"D:20111108112409-05'00'", '/Creator': u'PScript5.dll Version 5.2.2', '/Author': u'LdelPino'} 

Uwaga: pyPdf homepage mówi, że nie jest już aktualizowany.

+1

Nie używaj 'file', zamiast tego użyj' open'. –

+2

Należy zauważyć, że plik pyPdf jest oznaczony na stronie głównej jako nieobsługiwany. –

5

dla Pythona 3 Zobacz PyPDF2 z przykładowym kodem z @Khaleel zaktualizowana:

from PyPDF2 import PdfFileReader 
pdf_toread = PdfFileReader(open("test.pdf", "rb")) 
pdf_info = pdf_toread.getDocumentInfo() 
print(str(pdf_info)) 

zainstalować używając pip install PyPDF2.

1

dla Pythona 3 i nowy pdfminer (pip zainstalować pdfminer3k):

import os 
from pdfminer.pdfparser import PDFParser 
from pdfminer.pdfparser import PDFDocument 

fp = open("foo.pdf", 'rb') 
parser = PDFParser(fp) 
doc = PDFDocument(parser) 
parser.set_document(doc) 
doc.set_parser(parser) 
if len(doc.info) > 0: 
    info = doc.info[0] 
    print(info)