Resolve un-resolved metadata fields & decode_text

This commit is contained in:
Jeremy Singer-Vine
2016-03-06 10:47:37 -05:00
parent 0a15497731
commit 18d3c78afc
2 changed files with 18 additions and 0 deletions
+5
View File
@@ -1,5 +1,6 @@
from pdfplumber.container import Container
from pdfplumber.page import Page
from pdfplumber.utils import decode_text
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
@@ -22,6 +23,10 @@ class PDF(Container):
self.metadata = {}
for info in self.doc.info:
self.metadata.update(info)
for k, v in self.metadata.items():
if hasattr(v, "resolve"):
v = v.resolve()
self.metadata[k] = decode_text(v)
self.device = PDFPageAggregator(rsrcmgr, laparams=self.laparams)
self.interpreter = PDFPageInterpreter(rsrcmgr, self.device)
atexit.register(self.close)
+13
View File
@@ -1,6 +1,19 @@
from pdfplumber import helpers
from operator import itemgetter
import itertools
from pdfminer.utils import PDFDocEncoding
import six
def decode_text(s):
"""
Decodes a PDFDocEncoding string to Unicode.
Adds py3 compatability to pdfminer's version.
"""
if s.startswith(b'\xfe\xff'):
return six.text_type(s[2:], 'utf-16be', 'ignore')
else:
ords = (ord(c) if type(c) == str else c for c in s)
return ''.join(PDFDocEncoding[o] for o in ords)
def is_dataframe(collection):
cls = collection.__class__