1
0
Fork 0
forked from josch/plakativ
This commit is contained in:
Johannes 'josch' Schauer 2020-05-24 01:13:41 +02:00
parent f1dba65984
commit 72b3c6d924
Signed by untrusted user: josch
GPG key ID: F2CBA5C78FBD83E1
3 changed files with 35 additions and 10 deletions

View file

@ -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

View file

@ -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

41
test.py
View file

@ -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)