Skip to content

Commit 3cf3e6c

Browse files
committed
Add blank page function
1 parent 30d342e commit 3cf3e6c

File tree

2 files changed

+41
-22
lines changed

2 files changed

+41
-22
lines changed

pdfsyntax/api.py

Lines changed: 41 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,20 @@ def mm2pt(millimeters: int) -> int:
2323

2424

2525
PAPER_SIZES = {
26-
(in2pt(11.0), in2pt(17.0)): "US Tabloid",
27-
(in2pt( 8.5), in2pt(14.0)): "US Legal",
28-
(in2pt( 8.5), in2pt(11.0)): "US Letter",
29-
(mm2pt( 841), mm2pt(1189)): "A0",
30-
(mm2pt( 594), mm2pt( 841)): "A1",
31-
(mm2pt( 420), mm2pt( 594)): "A2",
32-
(mm2pt( 297), mm2pt( 420)): "A3",
33-
(mm2pt( 210), mm2pt( 297)): "A4",
34-
(mm2pt( 148), mm2pt( 210)): "A5",
35-
(mm2pt( 105), mm2pt( 148)): "A6",
36-
(mm2pt( 74), mm2pt( 105)): "A7",
37-
(mm2pt( 52), mm2pt( 74)): "A8",
38-
(mm2pt( 37), mm2pt( 52)): "A9",
39-
(mm2pt( 26), mm2pt( 37)): "A10",
26+
"US Tabloid": (in2pt(11.0), in2pt(17.0)),
27+
"US Legal": (in2pt( 8.5), in2pt(14.0)),
28+
"US Letter": (in2pt( 8.5), in2pt(11.0)),
29+
"A0": (mm2pt( 841), mm2pt(1189)),
30+
"A1": (mm2pt( 594), mm2pt( 841)),
31+
"A2": (mm2pt( 420), mm2pt( 594)),
32+
"A3": (mm2pt( 297), mm2pt( 420)),
33+
"A4": (mm2pt( 210), mm2pt( 297)),
34+
"A5": (mm2pt( 148), mm2pt( 210)),
35+
"A6": (mm2pt( 105), mm2pt( 148)),
36+
"A7": (mm2pt( 74), mm2pt( 105)),
37+
"A8": (mm2pt( 52), mm2pt( 74)),
38+
"A9": (mm2pt( 37), mm2pt( 52)),
39+
"A10": (mm2pt( 26), mm2pt( 37)),
4040
}
4141

4242

@@ -53,6 +53,29 @@ def doc_constructor(fdata: Callable) -> Doc:
5353
return doc_new_rev
5454

5555

56+
def blank(size: str = "A4") -> Doc:
57+
"""."""
58+
VER = '1.4'
59+
header = f"%PDF-{VER}".encode('ascii')
60+
data = [{}]
61+
data[-1]['fdata'] = bdata_dummy(header)
62+
index = [[{}]]
63+
index[0][0] = {'o_num': 0, 'o_gen': 0, 'o_ver': 0, 'doc_ver': 0}
64+
cache = [None]
65+
doc = Doc(index, cache, data)
66+
x, y = PAPER_SIZES[size]
67+
mb = [0, 0, x, y]
68+
cat = {'/Type': '/Catalog', '/Pages': 2j}
69+
doc, _ = add_object(doc, cat, immut=False) #1
70+
pages = {'/Type': '/Pages', '/Kids': [3j], '/Count': 1}
71+
doc, _ = add_object(doc, pages, immut=False) #2
72+
page = {'/Type': '/Page', '/Parent': 2j, '/MediaBox': mb, '/Resources': {}}
73+
doc, _ = add_object(doc, page, immut=False) #3
74+
cache[0] = {'/Root': 1j}
75+
doc = commit(doc)
76+
return doc
77+
78+
5679
def load(file_obj, mode: str = "SINGLE") -> Doc:
5780
"""Load from file."""
5881
fdata = bdata_provider(file_obj, mode)
@@ -145,7 +168,10 @@ def metadata(doc: Doc) -> dict:
145168
def paper(mediabox: list) -> str:
146169
"""Detect paper size."""
147170
x, y = mediabox[2] - mediabox[0], mediabox[3] - mediabox[1]
148-
ptype = PAPER_SIZES.get((x, y)) or PAPER_SIZES.get((y, x)) or "unknown"
171+
ptype = 'unknown'
172+
for t in PAPER_SIZES:
173+
if PAPER_SIZES[t] == (x, y):
174+
ptype = t
149175
pdim = f'{int(x*25.4/72)}x{int(y*25.4/72)}mm or {round(x/72, 2)}x{round(y/72, 2)}in'
150176
return pdim + f' ({ptype})'
151177

pdfsyntax/docstruct.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -859,14 +859,7 @@ def squash(doc: Doc) -> Doc:
859859
if not chg:
860860
return b''
861861
header = f"%PDF-{version(doc)}".encode('ascii')
862-
#new_bdata, new_i = build_revision_byte_stream(chg,
863-
# new_doc.index[0],
864-
# new_doc.cache,
865-
# len(header),
866-
# xref_stream_num)
867-
#new_data[-1]['fdata'] = bdata_dummy(header + new_bdata)
868862
new_data[-1]['fdata'] = bdata_dummy(header)
869-
#new_doc.index[0] = new_i
870863
#new_doc = commit(new_doc) #TODO: keep?
871864
return new_doc
872865

0 commit comments

Comments
 (0)