mirror of
https://github.com/jsvine/pdfplumber.git
synced 2026-08-29 16:40:24 +08:00
Resolve un-resolved metadata fields & decode_text
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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__
|
||||
|
||||
Reference in New Issue
Block a user