diff --git a/ocrmypdf/__main__.py b/ocrmypdf/__main__.py index 2b05f230..c83508b7 100755 --- a/ocrmypdf/__main__.py +++ b/ocrmypdf/__main__.py @@ -734,7 +734,7 @@ def run_pipeline(): 180: 's', 270: 'w'} orientations = [] for n, page in enumerate(pdfinfo): - angle = pdfinfo[n].get('rotated', 0) + angle = pdfinfo[n].rotation or 0 if angle != 0: orientations.append('{0}{1}'.format( n + 1, diff --git a/ocrmypdf/pdfinfo.py b/ocrmypdf/pdfinfo.py index 1078d36d..9d6919cd 100644 --- a/ocrmypdf/pdfinfo.py +++ b/ocrmypdf/pdfinfo.py @@ -592,14 +592,14 @@ def _pdf_get_pageinfo(pdf, pageno: int): return pageinfo -def pdf_get_all_pageinfo(infile): +def _pdf_get_all_pageinfo(infile): if isinstance(infile, Path): infile = str(infile) pdf = pypdf.PdfFileReader(infile) return [PageInfo(pdf, n) for n in range(pdf.numPages)] -class PageInfo(MutableMapping): +class PageInfo: def __init__(self, infile, pageno): self._infile = infile self._pageno = pageno @@ -631,7 +631,14 @@ class PageInfo(MutableMapping): @property def rotation(self): - return self._pageinfo['rotate'] + return self._pageinfo.get('rotate', None) + + @rotation.setter + def rotation(self, value): + if value in (0, 90, 180, 270, 360, -90, -180, -270): + self._pageinfo['rotate'] = value + else: + raise ValueError("rotation must be a cardinal angle") @property def images(self): @@ -645,27 +652,21 @@ class PageInfo(MutableMapping): def yres(self): return self._pageinfo.get('yres', None) + @property + def userunit(self): + return self._pageinfo.get('userunit', None) + + @property + def min_version(self): + if self.userunit is not None: + return '1.6' + else: + return '1.5' + @property def images(self): return self._pageinfo['images'] - def __getitem__(self, item): - warnings.warn("pageinfo[item] is deprecated", DeprecationWarning) - return self._pageinfo[item] - - def __len__(self): - return len(self._pageinfo) - - def __iter__(self): - return iter(self._pageinfo) - - def __setitem__(self, key, value): - warnings.warn("pageinfo[item] is deprecated", DeprecationWarning) - self._pageinfo[key] = value - - def __delitem__(self, key): - del self._pageinfo[key] - def __repr__(self): return ( '