From 72b3c6d9244cc7a36bdc6b53798e2d925d59d7b3 Mon Sep 17 00:00:00 2001 From: Johannes 'josch' Schauer Date: Sun, 24 May 2020 01:13:41 +0200 Subject: [PATCH] remove pdfrw https://bugs.debian.org/958362 --- README.md | 2 +- appveyor.yml | 2 +- test.py | 41 +++++++++++++++++++++++++++++++++-------- 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 4e7c768..0e1020d 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ While basic functionality is implemented, lots of work remains to be done: - changing units - changing language - make PyMuPDF dependency optional - - optionally, use pdfrw and/or pypdf2 to read/write PDF + - optionally, use pypdf2 to read/write PDF - improve command line interface - improve module interface diff --git a/appveyor.yml b/appveyor.yml index 29243f6..5d52091 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -16,7 +16,7 @@ environment: - PYTHON: "C:\\Python37-x64" install: - - "%PYTHON%\\python.exe -m pip install wheel PyMuPDF pytest pdfrw pyinstaller" + - "%PYTHON%\\python.exe -m pip install wheel PyMuPDF pytest pyinstaller" build: off diff --git a/test.py b/test.py index 0fbe1c5..a2b2fb6 100644 --- a/test.py +++ b/test.py @@ -4,7 +4,7 @@ import tempfile import fitz import fitz.utils import os -import pdfrw +import math def mm_to_pt(length): @@ -180,12 +180,37 @@ def test_cases(postersize, input_pagesize, output_pagesize, strategy, expected): ) os.unlink(infile) - reader = pdfrw.PdfReader(outfile) + doc = fitz.open(outfile) os.unlink(outfile) - pages = reader.Root.Pages.Kids - assert len(pages) == len(expected) - - for page, (bbox, matrix) in zip(pages, expected): - assert page.Resources.XObject.fzFrm0.BBox == bbox - assert page.Resources.XObject.fzFrm0.Matrix == matrix + for pnum, (bbox, matrix) in zip(range(doc.pageCount), expected): + xreflist = doc._getPageInfo(pnum, 3) + assert len(xreflist) >= 1 + xref, name, _, _ = xreflist[0] + assert name == "fzFrm0" + # doc.xrefObject() will return something like: + # << + # /Type /XObject + # /Subtype /Form + # /BBox [ 185.47917 262.17189 445.79167 595 ] + # /Matrix [ 2.286773 0 0 2.286773 -424.1487 -599.5276 ] + # /Resources << + # /XObject << + # /fullpage 7 0 R + # >> + # >> + # /Length 12 + # >> + keyvals = dict( + tuple(line.strip().split(maxsplit=1)) + for line in doc.xrefObject(xref).splitlines() + if " " in line.strip() + ) + assert "/BBox" in keyvals + newbbox = keyvals["/BBox"].strip(" []").split() + for v1, v2 in zip(bbox, newbbox): + assert math.isclose(float(v1), float(v2), abs_tol=0.00001) + assert "/Matrix" in keyvals + newmatrix = keyvals["/Matrix"].strip(" []").split() + for v1, v2 in zip(matrix, newmatrix): + assert math.isclose(float(v1), float(v2), abs_tol=0.00001)