From 8119e6eb3ffe7a56ced7b99cc696b0ba1a2bd7e2 Mon Sep 17 00:00:00 2001 From: John Whitington Date: Mon, 4 Nov 2024 15:06:34 +0000 Subject: [PATCH] Modernize @B bookmark namer --- cpdfattach.ml | 43 ++++++++++++++++++++++++++----------------- cpdfattach.mli | 5 ++--- cpdfbookmarks.ml | 2 +- cpdfmanual.pdf | Bin 440412 -> 440408 bytes cpdfmanual.tex | 6 ++---- 5 files changed, 31 insertions(+), 25 deletions(-) diff --git a/cpdfattach.ml b/cpdfattach.ml index 01ed0f3..7b918e4 100644 --- a/cpdfattach.ml +++ b/cpdfattach.ml @@ -2,22 +2,31 @@ open Pdfutil open Pdfio open Cpdferror -(* Remove characters which might not make good filenames. *) -let remove_unsafe_characters encoding s = - if encoding = Cpdfmetadata.UTF8 then Pdftext.utf8_of_pdfdocstring s else (* For @B bookmarks splitting. *) - if encoding = Cpdfmetadata.Raw then s else - let chars = - lose - (function x -> - match x with - '/' | '?' | '<' | '>' | '\\' | ':' | '*' | '|' | '\"' | '^' | '+' | '=' -> true - | x when int_of_char x < 32 || (int_of_char x > 126 && encoding <> Cpdfmetadata.Stripped) -> true - | _ -> false) - (explode s) - in - match chars with - | '.'::more -> implode more - | chars -> implode chars +(* Remove characters which might not make good filenames. In, UTF8, out UTF8. *) +let remove_unsafe_characters s = + let codepoints = Pdftext.codepoints_of_utf8 s in + let codepoints = + lose + (function x -> + x = int_of_char '/' + || x = int_of_char '?' + || x = int_of_char '<' + || x = int_of_char '>' + || x = int_of_char '\\' + || x = int_of_char ':' + || x = int_of_char '*' + || x = int_of_char '|' + || x = int_of_char '\"' + || x = int_of_char '^' + || x = int_of_char '+' + || x = int_of_char '=' + || x < 32 + || x = 127) + codepoints + in + match codepoints with + | 46::more -> Pdftext.utf8_of_codepoints codepoints (* Don't produce a dotfile *) + | chars -> Pdftext.utf8_of_codepoints codepoints (* Attaching files *) let attach_file ?memory keepversion topage pdf file = @@ -257,7 +266,7 @@ let dump_attachment out pdf (_, embeddedfile) = | _ -> error "Bad embedded file stream" end in - let s = remove_unsafe_characters Cpdfmetadata.UTF8 s in + let s = remove_unsafe_characters (Pdftext.utf8_of_pdfdocstring s) in let filename = if out = "" then s else out ^ Filename.dir_sep ^ s in begin try let fh = open_out_bin filename in diff --git a/cpdfattach.mli b/cpdfattach.mli index a90e04d..0e42441 100644 --- a/cpdfattach.mli +++ b/cpdfattach.mli @@ -5,9 +5,8 @@ type attachment = pagenumber : int; data : unit -> Pdfio.bytes} -(** Remove characters which might not make good filenames. If the encoding is - [Cpdfmetadata.Stripped] we in addition lose any character > 126. *) -val remove_unsafe_characters : Cpdfmetadata.encoding -> string -> string +(** Remove characters which might not make good filenames from a UTF8 string. *) +val remove_unsafe_characters : string -> string (** [attach_file keepversion topage pdf filename] attaches the file in [filename] to the pdf, optionally to a page (rather than document-level). diff --git a/cpdfbookmarks.ml b/cpdfbookmarks.ml index c89e2f1..eca9ee2 100644 --- a/cpdfbookmarks.ml +++ b/cpdfbookmarks.ml @@ -265,7 +265,7 @@ let get_bookmark_name encoding pdf marks splitlevel n _ = let refnums = Pdf.page_reference_numbers pdf in let fastrefnums = hashtable_of_dictionary (combine refnums (indx refnums)) in match keep (function m -> n = Pdfpage.pagenumber_of_target ~fastrefnums pdf m.Pdfmarks.target && m.Pdfmarks.level <= splitlevel) marks with - | {Pdfmarks.text = title}::_ -> Cpdfattach.remove_unsafe_characters encoding title + | {Pdfmarks.text = title}::_ -> Cpdfattach.remove_unsafe_characters (Pdftext.utf8_of_pdfdocstring title) | _ -> "" (* @F means filename without extension *) diff --git a/cpdfmanual.pdf b/cpdfmanual.pdf index 8f8711a2c5f37987e222d41e70d5b6b162338c3e..4ac18a6d2f2ee7e7e2b8551cf98835cfae044ec1 100644 GIT binary patch delta 20180 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 delta 20232 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Ξrb7^7ZsU*)y-2tvgZs1EO<eh78l+Z-1=7dqJ{aWXnhc`8#aB}nvq){Wl-|x=tX?5Utmu%V~$b;4X7-6JS48my{ z;7|?}N_nCPPf190*mBUFN|cNZ77VNv9ov_E)o00b5_t7%#AGR@=Gl!7c+JovYEQtLcsybK)A z!@~WLoSBKZeV8zx@Bv3_!E_7S&j9ln09>Q( zg+c*HyAf96`|rV;j(x%F#hhqa_;ttDR=|9>W2Zkl$CTED*uxT^?ItH&GUO--VDjSr zrrJu;yvo#$HjTQjdC`{-R*%Q*GA4n;AUQ92Zm|FIqVg@{{C{9zl@H?+nA?PUNZrT+mpIZI-y@PkVHDMiK zP1R>(794JQEhIEM)~h%*wje@HoAG>1D)%rWZbCx*BXq*&OyVnQ?D-J`a9Z}gz%4;U zt&DDU2At5t|+}|>~d|&Aib)ji&yHw$UYfIdUK*gTF9= zWVvC*=0#BL&qK%bierJ(Sjpw9n_#U-xkgzclx-f9+rQG;_>< zZ%ehF9{6(qc313K2*+CJ?mlj~Bj6(r`U2m#Gq3|ZJvn;eQA+aZHH_R=!7YX`6fct+ zg*b?0cLrP`$x$D=#wo?V7ZK`_0r}g!=dUSY9w_rn(5<8u~JKT8;jCJPi!-IBQ zov~rTW`D3p_P7XRD3fo!*>LHa2jdkE(|0MN{>YIJW$O2RGA~8r8;#E-B?{N)=@Swj zP(?k~0{}%%=zWW?%0H@8pVEH56(=G)<8wz##JCW{R6TeKk0br7NR)f8=4{wu|B@U1 z`JgZ5@*!eD9|Cv-GrpAw8 z8G;}-csB`!_@#ox%IB0pm;2rlP<@(s=q|(%rU09vY3j)cV(LN4U}jM7S7d~eRf7x? zqaqdaRX0KE?QH8sND*(O!(D-e%_CQS=d0c7=8mL|docI50_ zBv=i!)D_dPv}_*o^AO1~ol#c{s$>oO8V=gH^gN{CJH+JE6oK;~!yXawkp<7RNbgvq&LbO0W;%e5PaDKZwt4pH< z!D)qdPZ&>meC9dmXL1#WVqahk4&Wty=H0>JYq$1CTmO2N+)@JL8O&kFGoOV;1v@^& zGMK|f`oMoq5te72pQNCo!lsPetstAfezB1U=Tt->NJD-yKfDm2k9Lk_UR_TO+k^&H z^OSzGnW}z*^zQgx!T)uS-Q5N)G{{IFf<86fXb~y}#w2hVe@>}w=OLm|2xxd8>QR*AM z4DlVl2of?7g96EcI7`| zA~Ui^25+-gEH7HCyh!de?OAua7Y_aQNBoS?J{8;|L=yULEMrc>LJKpXG~n`NG8d6g z`$k@O0%`6Y>i-AW(y0Fj*V2Vzz^T)Ps3AB3a(67OC)1gGN1um}&qX_(r}7NmU$cDI zF%nzbj*B>Q6kB`iS{8(Ec>=fbgI@J7dujG0G+}`d7|5d?zoVQfqSq1Cs*O_;$GDH5g^s#XSVcezpcRw-=hc-CP5ZkZJnx_=raW%d_j(X;> zYJ))!?I|!N7KR=_?&~u}9pYMp#e5-M`Xg+h;>rm#yAae7bg-SLI7c-P0$crM~1 zghEsNY9S0l)G21UrDTSNYoNi-X3a&DdSe$H(1{R2v))q)|EH8Co924pdc!@i14XwH? z#9vg=Ui37|@bGX?`)b92^A}w84f%dOV3h>=o2mrA8@ju7LIOcOu5xfV>3FC_)A3@~ z5L9H{M}a0h&G0mWTP-S|RbeJCUr@$j1Lr-7C6>ho zinC3(j)5Tms5mv`yG%d!hf}IIgrPTW&XHlae&dO`nMq0%#cVohN{W6#Ku{S`%>Jx-c_;R6hf(u zItTIa?gu}RLMNlkzO~mfR?l*w*blu>3nQpqNBwo2D$SlwNsS)`roSC-V1}gIdR}}t z(~G=KqTbYLyp?v5fUD-_T*+?A@b&i^Dm&kmeT-9VjF}3^RWh>imGyr*GxI;;S0&|I z|CfG2GeBU2{=WuWspkLXUzN?g!87Eh&5wnw$dcwuY*J_}xw&o4q_#LI<4F=}u%91< zqy%qZP)&YGbgm^XU$c~>&CRn3-&EKC)EP>55pC`m%^RRI zkj@#W50B2S1D@iEMVXi7%LKfLUiIuP0bnr@gQIKQ^r3j@!J2RRe|$RLfZ5qxB$Ist{v|T;IqI0?rbqE5F;O*aBnfn7xf8hpY5l5$z{OYVGRWGYLXlx|Bg3!Fc)a<qxRXyl!)9#KXucE-ZF-eiPQm=h3g=|HR(Mv|kteqg?4KdU~ z*FwoAQ=tvKnkPJ|MMA$u+pGB+K~Rg%d)=ah*rQ>g+ zOV^-yZ_R*G@ta18za-A=MJ?ICLChPd#Jt<0^{eG`^@4>VW+^Sj+S(`|@xY{i$Wx>L z#RY!Ag$P6AghOP#ly76xLzJ}TsHosh7cx|UwJV7ATGoIVYzf~0VW%p?A;7!iE9f-6 ziIU{WI@o7PgI<@QAhTf3TbVWaDwNa~Xy69f24Q1)S$|*xDmKL~Ljp2%^$!kM1WrI1 zAYG@R)?7@KxLnObo*lvM(Hsm{Mk4Eb5j(R|lbKv>a9drpG00PoU%n2&Cr6Y|NWrMF zGwQKKl)Pa3uDc|n5?m8Y2oN|*n{fSfR^eR}JqdVLg20COgez7>j#mv=r6!AbKyast z&?}CbgSAla1Zf(J=k99U)q+*369L_|Am>>BInPI$n~C%TD6+)@Wi=!H+jnfNQN}Ep z2MT`&{Ls}EpGEd;90qETp^V5+d|8(*xcyF~6Vi1*uT7-%{mfLF2Z#+O)tr8p2{szn zO@l*&>X}c>aS^YO$@3+7+i(NiVyD=ZAgCf2oXboKNfk8?^}<6&yFzen%hDv|s)CW^ zDz!;A*aRJ*T?lM#>^szuws3Hl#aG3Mn*!0?%bG3@^iWm&5!p7l+e+3r zV(6*TcA}rvK3QLgBF}mWIzzUD;_t7jVf}0s2%905;5yNUE~5=E&=jwFL_=X+spLUD z@1!h7VG%9)Brx8$wr^qf^_tl?@=1H$Acmiz%^GOf_2MJP0dRdXPwL2+dl^34(F7~z zp9%lOAzhvq$)leI+~8=m8PL4vYyg;ic@ru)os?oG16;STd19BfPkEquni5Vx2L}ILFK}>bL zioo|KjIjvp!rJoiejpXR+1&jvG;gp%U?rEa(g0#LgPpB+#aBdWOALRJ_VyE=hvI-?wnB)5FBB{ zaK;}~pr|_3qF|sUx~#*XqAWb`GX_+H4`4jG zSn1+A&AJhn-HlS$b?j#}LWGFSiZ@Gl(2RyUOPRkm(@UN zMABF-8>>DF_so&5Lzei6f>s0e-X+`8ySOIXU~%B-yC{CM_X_H3ZLGLEJqKV35h+`% zicYme`s)}ry;U&kSmRVa*8Sy60l4cL(F-w@TU9}$IVc^5ZSe5)Y11)o6OYrc6+qqz zMl%;{-gSwFI>AmpS@Jt1i_8knaDL>_jTsc6ixv|IFidq~oQ>IzyI2 zrxwsqtT-$n{i~j9+3=*1V^k$&p!(8%%sWL15 zlF->1sAU*<_mUG~lPC6#0H)M1A!mh3ZbTCG6k4)uLDpm5%mn(N>O^`&r6mmP;xUV7 zU}y1Elqlnr`!UZYtHPYm*lskom2rv+beLy>3R^%X)xEtXXxyn(N+FfV0*nX~=&m2U zfONWF;`2OG!O3BEW$~T#Rhq}&yNW43h!LXpS$%v%cbhA!oEfW0sfsA+2QqSUh` zvZX2gG9_vdO4{ty_e;dmKIPJuL*1z|`Cwa3aj!y#22a$~i)%lGfi4j;!FfNLSbJ0| z=zt;-7;7{bhnQrlpw=`Y?J;NCfIsAplt`Bz#SRjqQi<)^!+QuiP{T%ZAWG}8eFj<% z)GxsrTA8D7*W*8NfDdtO6OmSgilk_>*Erh_qHR8LjGVB;n$a&$*^5Ts9EDfoZcKJR zgjoZpWKu4_;m0ABSxF=xU0UuCCO3`Qq; zt!5H%H|@i)pziDf+7dfxT;wG8rS}QsVq9x-qLa=Fug@endXHf5OK-w%PW4g(um=$< z#t5?Pf?YxM+Y}A?y`-|}p=<$*LjF_l=rc}j}fhmgb4+7~D`!-eRHARc}k0KLmVWE zKF%lTrMFJb{5j|;%iEVRnK=Q%IEmtgG1{cXv5V}3LV=NNL?aujRfD(p*ZiX|z{Jd> zFVoAh#dl^SJHA)>w=dJ9Lhpl1Khv`d8v*+?SyM+%*l_@_Nbbr4K9kA%ate9G&n8IPwTM;7}o_bkLFspVW6}=wyU4 zJ}8{n%n2<}6_%7{uf}sg5^h8q0NYUgx6dbLKc;4Is>pNXAXQ7|#PV8hwhU1qdRnv9 zKgADwL-S;g!~L#H3Vl2#jPdQcgYnFe_Nxuf<>*I9?!5OmDtIuaO-~`FFDcLm#SQIHmQnOZse$RIPh5-hi7zOQd9AmH!lx5YRK10 zvF&dMzs^;ey8;DIbzPCj=EM#a&B5h zGzY0s82Jl7cBX25F0hw3b`+UZ+VEvk^c#?F7;o&qbSA-teUQ<+c79VTuqts7C}SCp zHKOKV{QG-W;acdrMkbzW9MTmXvjRp!EZrco5in|h_jHfH z}W=7rXj$Q-~w0;o)#TnqldCUl;AGGy98 z$z?B8L9*mlOIy4WI(yNVMHR`>F)!@u^3_**@e|;1&VOu zQwr0(g zd3ScZ>kaDv1aPLjBiqEL8Am#$`326N>^P4KS@Cy5itp8~Om_@kqsHwcucGP0%?;sS zL>)b1h5zbopTTN1-$4vNP_Pe`P}Y&7dGsD-%Qf4S1MDBQ!H99Qq0_hOoE7xG3{&XR zZ37aoFBsd1z$n~l>I|&T>ZwzZZyfgnn9tU(nXaUljje940+l78Eu;>Cb->Cu_PBIs`SK_dkyMA0+p_XuPh0 z*+{r2l|f-fyIn$D6bS|W9U z&Yv`yD*;&Y(0zYEZc?m)v_G=-!`|5W12HZ_d2w_64Df_!2BE#}0JT5g!qVI!gqDFW zp6t81=o@$TylfV)?79;T>Q_nw`EdUXy?t5M5vm;zfqdTM-W=a{uOraejfHb;+AAW4 zmU6T4lOAQ!$)uZk)|h12N))63l(Z!C*PqA0u_{wS zmP3^4qJGOE^nimj<-qSiq4>;HTb~OjH+`&6;$*?1$k~{0T#7Ao;P|z*|DK7#C2%1w zeipCZkSmu&!(I2io-7qdMto1_a)voCLAR@q&Z5b2C?85)ai3|>r3A;61hyP?Hy%y< z?Jp(vHjo=oK$WgYxMieonN^-(PKFZ3rZEi=`baI6|MZ}n2zVv!BDWs?r=4*G>d%Ra#v?N@yn%%IZwLVIvN)6m~!4TZY&;i;e@42U4yaUE8g@A z^B<3vhB#G9quoEJ84YA?sHP>2&KPz%?L>2BvN5;oq`R>UkKmp?sH3JRm&Oy6nTmyf z8zua!^&=#jSl*^W=P8c09h6XuBii?)T#0sL#f68~!Trqp_U(3njCC zV#>8tt8kHol;7%c7S2Y*L!t00QIkkJUBers=dmG-un`)JU@P2bidKnGm=@&a(8-dU z>3N00L;b>;TmJX_{-{Gs2k$VN(|~OV*)+3@*Cq{b)6!6WS<>2-%#&Br?`MqtISds* zs6RTt6e0`q{o~(QLhZZ1T6#nwVD>dKQI8dqF?c|wk?EpjMktq)R z3s|}Xh;H4-=j9=2DPxAK3hZ&qs= z>y0$U=5bZ@{Ri2ne#T@TqM*vS|7v-S7t)1S!Nhcj3|C>t@y=$ns`CXZOEM8~Uj{X@ zqD#05orK}Cs7Pxo$i#)A0DkWLK+_Gk{3{9?_|2ctq+5#+zFpfD!137^ntAE5*=?oV z@BC|MP8c3mP4mE~v;mPi(hGI8cb=oo5hn=llA&osWdO-Az#dpHNny)QSJDsBXMN`5 z+_D1NZ>-VMUQy5*aS{8jQzv-HZ&l4_3BT~!}xLV-Z z=Iog*`Mc)Nt2M15kVSaS-KMfh{fj-d;h-Ps$Okw)&V_MnO2SBJIP*zw#02p~1J$ek ztJ-6#?*wC|EC(DOJ;*zr!hbb1)P1{YOpgr$heu%ODLj^n%k zC1l7YV0orzdQX}CTcR*a8K+EENqW4ydZjxb#)C%sf2D;6Q3wn$F0S-I6DS%$s=AyD z@IQIsL&MTp+T1!Tg}j=lt1`7j&Q_t;3dv5QnJgU@H$m`@MC?UFN~K*}4O_*)sm zTq=u^lTH=>@cm3K^QU)4FDyJ@CBz^&9dorvD@?)`u6gAbcTR%k&KLiWS;8-d@`=+j zpAT6+7j!Bhb`@NIY&uKd#LwW+`YrMP%<4jAS8U!_hHUr}vVR7`a9;nS6OU{&?3Z~t zhd6%!?{jQFaCZ{1V8g%d9PqFx8{!>mvaYe_cxlQ)6FNkIyj-Z1E6^=KHTxCvuvDq2q3dbyCG|me|lL8&l?=6*F=%Lc+S|o468pT9jlD!+!DW6$vRb!7F8LQ3T`bp8C*3$7A8(hMxr7oR@ooF=@`hl#J z`juY0JoQH`3d1%X67AN=KpPY__w8HWAWu>%R+aW;MXRmozt|c;ER7$^4MT5Q5lC1Q zuSZe8tvYt%KYbpdrZ(5^Wci9XT^~td9Xr*GORD1YVl>QGg$38R=O)3D>s^^~CGpKp z1D3!!JF~(SO&DVj;1Ohr{(=@IocpItf&LkQbbaW2!syEf;X2B4mtArWH)s6D{h6Fj z9X-sA0kV}=V!#`a?0Z_hgxh9&SAl~w-DulK($p#h{4Za%&CW(hrqX+GT&is##mm;U zdb0eau}hxDeCKoRJFtmo?-mMycZaF!z0)8i|MW_ic_}gMHu-S0%E&KKgyQ69F3RUs zo9ZNSc5P|Zcw_Oe^7|j{(ACzGqwmAnSt08#kkH~_q!%46I2F)cHsMc`vvO)v!!gP^n2H*?nh{fp@~|+m zurdGNVS9EFR2rnRxR@}LxTq+*I6EgNr#L%1myj?gn>d>=D+fEPs5lG9A7Z}$-xWPL zMp-j^3s*~GR&Gw#|M{Y)0+46=*y>t&jn4VZdh+%0x?jGo5gHhex%*Cybgo6#M_x(s zb#liM7@+Y6&Zadr1T`(H!)#bL3k!D7+hc9$!A&hLn$5TASQ@F@wL{t|aSOVES&xX( zq()V=h`nn|YuLg+e&&5XJb2|hnETFp<-cTm?HqXJy}<80_|Eaw0~p@W4(DF=d3-Qu z0^;2zNZSUy;m!_o?pZ-}+1gs2tZUcqfh4dE(AyJK8I z7!g!RbO&;XcObD9)D{s?+CqFRtj@=wa0HsS$h8!QKnuceU~ZrcA-5E5iQ|#mf?q|d zKQ4&FG#7x=3*u2+0wDA(k1Rz(wswiNq3jYGpdX9a3kWFqAl~P37ocE120=DJ|DU$4 zJRa(=3lEcZY*|YTl5CB2?E6^8SVAHuOHzDClq^5HFNXYDEG5!V&DdpUEFo)@G8wxR zrpPX8MD}-j-+$k~&hxqFdG0;;bMLwT+;fmgkv}D|r?3*F!$B3S9>LH`R_ES7d=*dZ zMZyIu*ldeQIl*ETB5RVQo2wjTCZv19qaeU?k-4Ftjn+#mdW?uOM@Cd6sjw*#-Hjcal@nx; zJ5^6rc$G-*78y=TctzmXTx?evO_ZQ7pM$`!0Ez&2q9ToT(iZ6&B2-SQ$R8D$KDGkr z0kzw#6K0=H%VfSVe+I&+7e)1GS?h&rzdSX*22|hALOHsEYw>zOJ&>6gCSZoCDVErB z0es?{AINRJLub5FOB9THjLLXbvh?rOv?0J9z@ZS=sLg|${4szG!6y6kTzQ@!*$^3{ ze@SpOPuzsg@#>U=!6XLxOf*c*&p6|uKB|^)4Q;)e%@Z1MO~ub52i0O~xs@+W#vy-L zCkE#^lfhu1C9z4#4}IBe_PK?&=Cbhz($wiUYYrka$5l3n((BqR1cgxzs4jfTrO`S-+|l$-1r;5VARVF zAHi?!j2)!rJCUX&3nuaf04dSw6uGTMK`bac8H&1RAc~e=kZMa~3~`C(pu~dQ!tU4AG$K#cn`PNcA({GjKl6EAS7)w%yS*o8V?B`%ax%WfF`k zPcX0vXSZLi;ru7ATH>#DCVAvWTe+r!;s&eIBSxYY!v>@1r8DTk3832pyn*IpGT#LWKb%BJ{JN<{dwCz8ocu^E4b)}7UVuRgrQVzp%(ifRNEY}Q z=ZX}%dvi}rJGocOf5Ivp-k<+7Kvdy6?84T*G|u6m)A&W( zcTuk2)tVBD#MWe6IV(x>=-N+eO{op{$Bdhp9}UYXMgX;o3NEJVVYi;~@ljV6vO~W-#|+mSAw${zaG~ zmFthBO4Z$4=fUD3u(h{pNe-$I&bCb^n`M7nR6}2v3k!{&T zphTnUw`pXbA+=*gDQJX!3lAj0*k#8LWx$Hr7p`zHcW4;~Q+FsKW8IeEb z14VOLGHCkQP=WcBneo4GRW?)I75HLe$ojxjt@<*NmEQRd7UEtQhn)Hc$y?K}{(0@P z5GLdX)#?bP3n$k%GmmxHR`Y0foSk6)e1+``b7QB{1T+l76CC}#`vQ;kD@Xyv`L;`s zmr!z**dZ94N#wi;)t~cYD!QHB`;~tjQk|5M?3_{8&M45reTl6N9BmEQdCy=wiNS*c zAj8@=vnnawGCWVT-M$6h?Y68Gp@}4WipAbO@y3f!i+$rxx9QDeH2!33v4+5jE^)T( z-e-{T?yt~fUNP3&0+4oX|F6|a-OM~N?Q^uiyI{ABk~}_hAtYd;%L|r_5Hk$?)A3)j z^X-T@X|dEmmkuwcWEO^Yoas}Tc2@;+G;Jfkn~g_8`~QI-L#J;zUojR)fB;IwqITwz z(JJOz^KYxaWnNeGw+;=26nt!FEt#o;F8|tQ`n{C`8jHsW*h_$rk|^Hz$SqCd;^za* zyYy&TqT)apH1cOOFA+K*!Mr)O6KmY~%!q5ThHe`7QP+rhv6zme?gY^}?G{(lAcXJx zs`TkdC((nDSgu@FSxVF#9!re>Xczy}Y%iY7VPkvg=?m!aya8dTiwhPVk@+hTCix0n zj{vR87EE}klz9D>jJPL z%|GoQ#MTnT>4$SI*d~@AkaPBCiV6!+^RG7vsM*&#b)^qb(e^e&2Zi8;cj+aTAMf{x zP>sme-IC_~p5?0RH%5n4OdsZotO%@?fkRtA`<5Fp(KUUoe{Lga|DM)SzB3=QErip~ zv)sB*=u2O^njCSoRfg^1GFNk7RbQWZhCF9KLcK<99gp=C6_)b@P^kOp{=KRv^??t9 zzm5rEf>d`-|G_!KWaE3qXMHpk0+<1^>UHNDDcfP*T5PU*SyW&=Aq3E`0mec=TTzUX z-)g$n4bYk3PdbjT_8*I}gEi}%x-wdR)LH1aTFqkVaeLUm00Se)%cV3@dJUy)=}_qP z4t2fu0@e6iTS-TQ51aSNu5IRCIt#V$9fV3$T0$ZIM-_I4Ab!O+~KVlni8@MB6Y5=%sd`r2c|gB zv@u+^KHD?pqoDBl0KBv=nORsa1g}}Q{$<=6U~~mJC*gf&j-Dg^9f*wz>Ak4-PrT#x zaV(sKe;;HYEGicaqBD{1RQ5BNZM(KY7F*1De1^}hO-w#Uq11i6U%K?i(VjHI20~H$ zcy>~`0C%hwGT(0(8xmYFcxV3j{dwQ!g70xYynR|Ykb>7M{h2t=b%}B-dLtr4wh)nu z^rxQj>e;VGl}+RkN4e>G;2B%rm!+KzJJ8ER*Wz1f4LhbY=|xh^chd~$cJl2tt{aJl zI!bKv^ntdQ)enX{+*C8gWc7M>w8-{MBbDO>(4isar-{w+w<+_UgDEMauN{YP*X?NO z7CbxvT>`?(c5KgIQ+qcC|NIB z_3r1Bfa2$8VqDAoSyb<)rR5xrsp1}o+kBhNm~TIz51mNrxfrH@^H92eXtSO&m2%R* zhvA?nW3!n@{PevKy|)V}grg?wA3yeHiqpYCC;eN8Rd$MQDo3Wbh6c^k)sLp_1U*!a zwx=tlHSdM@?ep$ub-hslH=M)~c*S|}k5tm6+@lf0vI?DEg`c7H7tTeqZZjNCKqajk!XuEQb-uB0FAb}UW zG!#5fuJ%1#kPw?vJ^Frj;DUzHd5>S4$}2MDtiAy}4L>fln@g``k%+)b#Q>H42{St- zU0jyN98KVY=xtj*9GAaig4>@Itna*a-*JBXTVuUmk>)f6xOOhvca(P<4Ithynw1fpqvLP?Hl43e%Z{e$M(efb&Xb=}&L*F8$?OFjc=9 z)n4d&NAr2dg+0)b)GLrF8Bn^RirbaC0DE~Zb2LUCr*BeZ9h$Y=tY8~#Bd&oz$XZ5R znmD#$vJ_Xy(`Yr^$cF)y>al(yE~0mpm$og&E_fR~DSFKz@woY%21!vN6guR-Tt8wX zY3q3V0Cje%FxHxK)F{jf`J~K^UG7pGx)axy|1RP#&h@UUC&tK7H3M5Rm7eu0>d8 zj7l3B%z~Gh^$YscsFdZCFW}2d@^I+XIq%)oP-1a-WNZ0CUu0Z41Npzbrdr1KF7j$C z_vUJGS(}CTkS8x@e|_2*@=sV2 ztBY(PBQIkK2*k5ld3cmN;XwJBw^_FL*>^Xyd`>4@FAyNSzbCqf2x4`w3WF<%l%avw f&vU88>rqF%C&zrVpC~u6O0jEm%E*}8S#bUbkem@s diff --git a/cpdfmanual.tex b/cpdfmanual.tex index 15b6837..13a9b9a 100644 --- a/cpdfmanual.tex +++ b/cpdfmanual.tex @@ -1303,7 +1303,7 @@ the result is unspecified. The following format operators may be used: \texttt{@N} & Sequence number without padding zeroes \\ \texttt{@S} & Start page of this chunk \\ \texttt{@E} & End page of this chunk \\ - \texttt{@B} & Bookmark name at this page \\ + \texttt{@B} & Bookmark name at this page, if any. \\ \end{tabular} \end{center} @@ -1340,14 +1340,12 @@ one of the output files. \noindent Split \texttt{a.pdf} on bookmark boundaries, using the bookmark text as the filename. \end{framed} -\noindent The bookmark text used for a name is converted from unicode to 7 bit ASCII, and the following characters are removed, in addition to any character with ASCII code less than 32: +\noindent The bookmark text used for a name has the following characters are removed, in addition to any character with ASCII code less than 32 or equal to 126. In addition, names beginning with \texttt{.} are not produced. \begin{framed} \centering \verb! / ? < > \ : * | " ^ + =! \end{framed} -\noindent To prevent this process, and convert bookmark names to UTF8 instead, add \texttt{-utf8} to the command. - \section{Splitting to Maximum Size} The \texttt{-split-max} operation splits a file into chunks of no more than the given size, starting at the beginning. The suffixes kB, KiB, MB, MiB, GB, and GiB may be used to give the size. For example: