From f9757a96aa6c974a5ba8ed8b3703906db717f412 Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Tue, 20 Nov 2018 22:45:26 -0800 Subject: [PATCH] 12 & 13 --- pitfall/pitfall/check-pdf.rkt | 13 ++++++++----- pitfall/ptest/test12.rkt | 2 +- pitfall/ptest/test12crkt copy.pdf | Bin 4475 -> 4477 bytes pitfall/ptest/test12rkt copy.pdf | Bin 6345 -> 6345 bytes pitfall/ptest/test13.rkt | 9 +-------- 5 files changed, 10 insertions(+), 14 deletions(-) diff --git a/pitfall/pitfall/check-pdf.rkt b/pitfall/pitfall/check-pdf.rkt index 433ccc28..eddb2d70 100644 --- a/pitfall/pitfall/check-pdf.rkt +++ b/pitfall/pitfall/check-pdf.rkt @@ -70,15 +70,17 @@ [(regexp-try-match #px"^\\s*stream\n" ip) (define stream-length (read (open-input-bytes (cdr (assoc #"/Length" dic))))) - (define stream (read-bytes stream-length ip)) (define compressed? (equal? (dict-ref dic #"/Filter" #f) #"/FlateDecode")) + (define stream ((if compressed? zlib:inflate values) (read-bytes stream-length ip))) + ;; font subsets have their own interior structure, so ignore (maybe too lenient) + (define font? (equal? (subbytes stream 0 4) #"true")) (dict-update (append dic - (list (cons 'stream (if compressed? - (zlib:inflate stream) - stream)))) + (list (cons 'stream (if font? #"0" stream)))) ;; compressed length may vary, so just set to #"0" - #"/Length" (λ (val) (if compressed? #"0" val)))] + #"/Length" (λ (val) (cond + [(or font? compressed?) #"0"] + [else val])))] [else dic])] [else (pat-lex ip @@ -88,6 +90,7 @@ ["[-]?\\d*\\.\\d+"] ; real ["[-]?\\d+\\.?"] ; integer ["\\(.*?\\)"] ; parenstring + ["/[A-Z]{6}(\\+\\w+)" => cadr] ; font keystring. prefix is random, so ignore ["/\\S+"] ; keystring [else eof])])) diff --git a/pitfall/ptest/test12.rkt b/pitfall/ptest/test12.rkt index 32fc8117..efdf539e 100644 --- a/pitfall/ptest/test12.rkt +++ b/pitfall/ptest/test12.rkt @@ -19,4 +19,4 @@ (make-doc this #f proc) (define-runtime-path that "test12crkt.pdf") -(make-doc that #t proc #:pdfkit #f) \ No newline at end of file +(make-doc that #t proc) \ No newline at end of file diff --git a/pitfall/ptest/test12crkt copy.pdf b/pitfall/ptest/test12crkt copy.pdf index 9dbce0bc56542de9270483e70deee9062e0f54f9..b1ad1586e1abae44472fae9d45d8fda7ef2d0057 100644 GIT binary patch delta 3182 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 E0MiDqX#fBK delta 3134 zcmZ{mc{~*A8plHh)5s`GB}|qGHA{m*Oqy(^>}#UI7!w9#vP4GN9ofddBr%9=Axri( z5iKX##xf+z#AHjxaXIJQKkmKfzJEQR_j!Kr@A5NO}~s#7;H5AyV{p6x?k`Y_FzLVULugqOU3{S zXWBaBwfw=ct*R?j|Am>NxXfRY2eK!rJh>Ne#e;q}XuIeUfPIB|IHaz8^h z`YYCKDm1O*otZ!may^Y>WRWKqB`wxi8lHCFj1n&n-}H-ILG*Wv&K%unoNnK(;9HKN zGD<~SKd0SXELVMI@a+gpzP7w-DBM9?Lc&4YqD@aJUok{%SHg1;%l-4vovnNB?fTSZs$+Cq@~Z9M4CEQmMrhci~?YtL;*ESXI|(1cTkIdCKvR4`!e11)` zUGx+~-v*nyM=29;R!he)tQSF2sY<$zr;W}zW_L#Y5aZV;gl%!ws~H{Gxt_P{Ysd8O zeMmyT-jN>{tgQ&uxE_;SEnP2l{IWDzA)-7t@;ccpWK>xJEtuWJ&SnBlw<#kEDe_vO z10tINPYYr&LQk~XQ=LRVL7kubWHF+D?2I;Go^8#yFrPB>l{G~T6@zD%8(fh#qc=`Y zp=lE1o_?d^JgpMZK`;|mNx<=D-dbYinY>sn!}42Sx#wCF-vO-8RXDPezS(!)Q6f!h z@>U57LL0|>>C9gCT##C>6vg|!=)Jk%D`}Ug`Cr{CY&2OMHWr0ap9MFnt(|xI%C>Zz z{o4pu;&HKqg{YxG7U|(lZ8nr%1!Ou``W>@#_M%7EElA7?zL@q4(Hn^%ZW^~|l}l?T z#!YVQSiIkWbS>Zx&ihndG;z9nn421fQ8Bx?S|rx!yIhM8*4TI>NlBiRTpXj+xUn~9 zE1FR4<;BB~L`8BeEtp&D4$P9<)w?T!%_=4upbg8Uk+E7x*9Di?-LDgH)( zFYEdBx7I$ooROvGh#+mUQT~s8c-cjh;&tSzxVty-^r_lu|7iirRT)lKC_R@(KkLC0Hdrg_o7pH^$R6Qu7T7dU4+**v~T;RE$v_{e+{57U44Nf~@Y)bbM# zyGKn4gw19M$ueT5=3*|&Ns?qcq%r(GLvXNF0(|=G^y{>*n}sCVP(wgK*{m(f%2`zz zFzZa?d&p`QhqXEBjwTdKIuue>s=cc#eJv+bl}&;T=UqPc5uUDKBYXe?LmyXHHnL|r zr7J1WO8W`k4Q}^@6K}%n8QXy@dh>~#-BRJB3&rV^SqeQe-Ao0S@TB;hfc3DGutS%T zdFo@*5ow};>jFrB8@+(zYunX5T{@Vq29K1r7eRB|6-t9zR3OOqFf%J_(I~P~zFdLz z{`y%$9UyU0xGY~e0;rO>wy{O&EI-(QIBjyJ92iQAjKrtZB&M%x0Y*H@F|~- z%EE^^`qfs&-6%w2d#+f6!*g-a*+rM;88YMN;0N^Z>0r(`zC zKs_{?WIPk&#V^>^6$f>T>80Mzw2QpC+RJJT)UvPmy~Bg0U-p7;v+AvuNXw8ZzaI+w z-Rr?}h}c9M^bQR_*O)%0wwto`%aNjNS7Gip<8Sw<++jk^q1Bqd*G-w7TFX3BJ|rQK zsWtu<|BV;u>y&nLb^S{H;aZw3#*DGvO{1+GVZhb_c1_)F)0UWSrfPDq3~(6inoLu8hma7kpsi?xK-k@VLmvMi!&mzvF_Fi$v;(Z`{Fl#`@x)YqViFkJ$1V+sP$sXFnTO0y{ z+J|2%3v}$*C9Dr_-}Ju?sYrf9Y9YTqm6!h1N)Cu0Ml|JNf<;270hK#|%m;2?zYyt7Z`K&W|u*Is;MEFR}WMS>B+FbHh_ zK!_0Fp9KsFQ-)Im!A2Y~YCl+A0lpXJKL^gAM0%~{@kC0a{(gZ%BnzFSsf!?;J*M2h{QDj diff --git a/pitfall/ptest/test12rkt copy.pdf b/pitfall/ptest/test12rkt copy.pdf index 4f208f6094af53f09393de72ccf9aae499e9e5e9..d333778ef45954269735c06e02ab3ec15ee3939c 100644 GIT binary patch delta 604 zcmZ`%!EVz)5M7%~WfaLx3~8x=1r^jP3LA&2HC!M~iRwm*tR_I!1JcUb*p_UsWp7c# z0XQKfBt*3r4oG|gpd7jM+P?_=0cQ>{j)OQL<}h#H?ChJ_**!DQ%y%m%>pLal(3Hgj zo4A4Zzl84<-AVcI$Ym*BbL>Ia9!NzsWf%p7K z90P(Wx4_+Zp9-8a;4!#Mqr{756e+JEmWAA%>#IK@e%%YlqhkNuWrRwL2Gk!G0o?@L zl&|!4S<_c!RPM=+-dZ+L4fSD1|8)}tzoGN$M^sj)Xkjwdg);e}-Yv;bx+%Ywuh2G4 zc3I&00&i}a8tL#@bb^pIv6W9kBRec}^TE`cw=IqI1&bcxhDHYCgyC6so{$EK;HgFq z=29D0E)`NQ!yEERNd?--qye8|282PjJ?SlljA6h1pbLM}<$*t9W~;Dic_RE3L8)EZbC3{k9BAxc8&hEC4Kwq*M(`#=o~ zh_ONlbOQ^5i5-*?iM=Dt4Db`+50o?Zgv2f1efQq?zIX4P7$?T7jdMesl9)jQw&Cct z-uo22k(TY0U`A8e96FOdXTl}T+q1-rO8x=>DRUn)Sn%ajfvXpil#~W5x_B5Y?wz?+ z<$7g&D`Hg-N;ww!m2AtejpIrGA1X`8}x1KfqbusSNn%`bB5VNOS<( z3OekQ!1EdGScZanG-d-F5r`g)dV7caTego=Mp6ZJGdG{q4NFLDoRp&N9fQ}@#^xPT zgj?oyOH>K5m%)yL9EQWd?Z#e6V4L4muPpU~keJZQ=gnWLjmB-9k=*oOL;h9W=eE}8 zAJl8gWS)qQ^0dXVwkGdR=>0fw>6Ad@@8%TrzcLEC8;iss_8@Ym;sXJjxBC3uT8mfL uA8Iyzly6@_g~JegBwIXNUzIL7@r=TqyiEm-C}q$r?&IKza5eeIhW-aXYnQbE diff --git a/pitfall/ptest/test13.rkt b/pitfall/ptest/test13.rkt index 7fa3a00d..ba3f5bac 100644 --- a/pitfall/ptest/test13.rkt +++ b/pitfall/ptest/test13.rkt @@ -18,11 +18,4 @@ (make-doc this #f proc) (define-runtime-path that "test13crkt.pdf") -(make-doc that #t proc #:pdfkit #f) - -#;(module+ test - (define doc (make-object PDFDocument)) - (send doc registerFont "Charter" (path->string charter-path)) - (send* doc [font "Charter"]) - (send doc pipe (open-output-string)) - (send doc end)) +(make-doc that #t proc)