@@ -23,20 +23,20 @@ def mm2pt(millimeters: int) -> int:
2323
2424
2525PAPER_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+
5679def 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:
145168def 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
0 commit comments