Jak mogę odczytać właściwości/metadane, takie jak tytuł, autor, temat i słowa kluczowe zapisane w pliku pdf przy użyciu Pythona?Czytanie właściwości pdf/metadanych w pythonie
Odpowiedz
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.
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.
Nie używaj 'file', zamiast tego użyj' open'. –
Należy zauważyć, że plik pyPdf jest oznaczony na stronie głównej jako nieobsługiwany. –
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
.
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)
- 1. Czytanie plików bmp w Pythonie
- 2. właściwości statyczne w Pythonie
- 3. Zastępowanie właściwości w pythonie
- 4. czytanie skompresowanego pliku csv w pythonie 3
- 5. Czytanie linii poza SUB w Pythonie
- 6. „Prywatna” właściwości atrybutów w Pythonie
- 7. Czytanie pliku linia po linii do elementów tablicy w Pythonie
- 8. Czytanie pojedynczego pliku z wielu wątków w pythonie
- 9. Prawidłowe czytanie tekstu z pliku Windows-1252 (cp1252) w pythonie
- 10. Jak wyliczyć właściwości obiektu w Pythonie?
- 11. Jak uzyskać właściwości komórki Excel w Pythonie
- 12. Użycie właściwości w pythonie, jak w przykładzie C#
- 13. Czytanie pliku binarnego z pythonem
- 14. czytanie w BufferedReader
- 15. Czytanie gml w C#
- 16. Czytanie obrazu w Netbeans
- 17. Czytanie YAML w Haskell
- 18. Przeglądanie, czytanie i czytanie kodów źródłowych
- 19. Czytanie pliku .vtk z pytonem
- 20. Czytanie pliku tekstowego w Google GWT?
- 21. Czytanie QTcpSocket
- 22. Czytanie ładnych plików json w Apache Spark
- 23. Czytanie tekstu EditText w Androidzie
- 24. Czytanie ze zmiennej w Perlu
- 25. Czytanie CDATA XML w Javie
- 26. czytanie pliku tekstowego w C#
- 27. Czytanie słownika C# w JavaScript
- 28. Równoczesne czytanie/zapisywanie w Haskell?
- 29. Czytanie pliku .csv w php
- 30. Czytanie tablicy Json w Androidzie
heads-up: autor pdfminer mówi, że to niezgodne z Pythonie 3, przynajmniej od daty tego postu ([link] (https://github.com/euske/pdfminer/)) – JSmyth
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ć. –
@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