🍲dfcv🏰dd⋉(● ∸ ●)⋊@% PNG %k25u25%fgd5n! PNG %k25u25%fgd5n!laravel-pdf/tests/snapshots/exposify.pdf000064400000105475152427537660014523 0ustar00%PDF-1.4 % 3 0 obj <> /Contents 4 0 R>> endobj 4 0 obj <> stream xTMo0s~H\v<V hCE#۲٢ ,djTYq{{5߱VZkΨk^ᄑU%eþSM0*3j9M=<׫dlc.cyK^xm&oqůĴ눷LSëm:x"/8)E wHù^17C*#y\\2?tA5}-}A|W!}{RPDkܰʋfHG FI G7#Tw|5HFlE)scHr$>Ig}k{tHvhGP:s=F5 ڃº,t?;b3PӶS6A=Lϊ~aU5exm1B~>Y&Hݢx4?$8%&m(qfl۪C(swC4 sSߣ5F:M)OH(PF!\ȇ 7ʈ MV!0 K endstream endobj 5 0 obj <> /Contents 6 0 R>> endobj 6 0 obj <> stream xUn7 |$Jt+r(@E1캈׀f awȧGC_V$OdWxVrLKq95>Lp#4+$;.O.DO9;`;r@NHUFN<+fjI\`]P쑓71T.zFLAݲzvs%M\~\2N&URK oD] 2Y_),)~s$;k Cq.+|tql4t3'ɘRqvFmrH!{C 9x9sܘ##edd[7٭_gsox?̳[u`D=_wt8wាV]Gb?nP3=ͯnH!%7跛9wXm؃u?b8L`,t aMςLhty:Nt {qޗAiO k kv:n:!Gvao:]!p[kv aO2bjm'|^GW|0r+G\^xe> endobj 7 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <> endobj 11 0 obj <> stream /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo <> def /CMapName /Adobe-Identity-UCS def /CMapType 2 def 1 begincodespacerange <0000> endcodespacerange 1 beginbfrange <0000> <0000> endbfrange endcmap CMapName currentdict /CMap defineresource pop end end endstream endobj 12 0 obj <> endobj 13 0 obj < >> /FontFile2 15 0 R >> endobj 14 0 obj <> stream xVQfd%{dT*l-Ȉ_sڥ}@;t:NtSn3msBhJWnt[Nw^{&lGM7l{z^4^7]B-JV[K}[}G?fVnw endstream endobj 15 0 obj <> stream x| \T9;EݬԋK"% (k. ̰(043`h.f.X*&[fffZϲgfiffO}2{͖{?9ン= #i԰.c۔<3?•o(lT "&ئ=baff?޵xB"ܣMk!rGnp37+ɚTT$ظ"yX569'V&=̙E>  O _hW 3.{#B}Mf)4GzT0 H9HEHq8T(K1[`UQz&3^^ XY&@e䚴P|G5 G]i[?YtJZBQMعssJ't_#j twP<P'P\+ $@@~+"_d ƺFt@܊hec跸o< GYtC x55mi^Ů8ff9=Njt~P=C@8m." w۶]uӹoֻuV0c;jF0h G=|aLNBNEb|4W 鐠+_cCO$sj,-P날l.o.LLFp&I1"1aĈ_^hƚ #'&)YTsу/\ZZAxvKNtꗻw:{)t%Kf>U6F17=5ǒ':v:Ҡ SA{J7F̤t =x0o2gmTu6F,! o< 0ckOB( ,էЧEOϞ;ȅ Kg~b nA|" K͙={΢ :i3_^/\1n@ Ir v%ș`IQ,IWEòpx}\r8c{q shD eSD7Iר2*h?^i?.t ˽!ʚC'. ;[^@r$>Of %7{)e󨶿 m9 3QR{ʕOxo/ 3 _/KJGpV:ΡVxA@o)"8Y<@UCMuh[}?O,Ї`&Svb(A 2ܛa 4~oﰯkΑ5πB7 _Oj v?]Z,W%}iSzkrU+WVid6 oSb ƐF'NTZz9z~k_vuZ=~sݻ׮{S(զ-^6^GF~%kzAP.#I҉OIy9k ޵v:jg sE8}ɒP)顢}tیWʒE3gO/3|9Cm^?vi۔J/J`mt\j@sɊ ~&k/^kqK0$0b+0>CGᦗtDĘ# bCE4UͿRbKt`2lËW[vm09 gXf:(mکO6]DXBn–if^{G<5ciϞcV ]&'c/ l_8 zj}b6ܹr/`@K_\pKilB/UaWμ6~OywWl6dϘ<ǽUN:g˚&_1W@${ĥ+tzk}w&dKuG<>rl;;z ߫T ],A,XLOcY3f̢}cX ,v>3o,!>b<^Xks)?wlȡG0|| H!%8Xw׮}WtlϊGz]L81v =HO/1c8@kCjZoԌ>ΓnNPUet4-e +K3^AM44as*V[c**Ux&7rAD6~Vڻ|av`+pQa89>K 87n\7,;OM|\|>6 ~44`.;%UU?>d|t43㯵$,BccmX* Y5?{ UyS~e]-Ĭǁ9bWI͝dp~DMse,r<=jUxɓtί[c|AA=sg>?"3:_R֧LvB} (|qQ|8"4k/d3̟@~?\Zy- q, tg)]}Q}>qԿ`׮5;Uuy'>Xa3>SQQI+Ν4I!S煆VkWmx =xN:O`yڶc%O͘YV6sFh]2av…p )FCo{&g&5vk>1 bm۶.vA~ighl#6wxs;ViMft/ /.7|q?*%mh,`׮[ =}e۷Rc!`t`UܟY_=2/ Wcozbꕕ:95aݛt(2z'S5S:W@JKgZd".nׅ)|7 ׄW}}塃_~y[|=䡷~,3WF&Y6@>"̽ !IsEy zz(aU{L+LW7 hÀ~Ko]DBWt(@MՊT^|4d#읕mA>-#6lf(t:I_M.>gپY<\Dv.t`p>ijT_UVmڐ5nZYEK7l*}Yf+1UV}%;I+ͮbW ͪ.qDVϞU^>}kș |pC/ 1{:A@[p@ZW87lQ46ڷJ /ե[X~g-gˑB׺ZQQW[\Xuͮu:p'x?Ԝl>׾ L)IPo+tw+Y6xғ#fxmW jmXє{QGo/.C箬 1bmN_% Rさ0 D>LxFǮkHY85"z3Ѳ%?x>z}~.ߏ=n?c@!>KU VP1$V/w罏08fVLCt|hK shby41f I%_">焂}$GWn@{&q8Onv9 Ӻw*{i0u%,Z^=t/,l•7 ?xEy7XWU3);wH2"(G$ 6)zajS ˾wh鍕 h .>}uԶ%bHgwvmٻ i]ҏY;G&d5c d9~|%|FLk\I2|fxmP4m8]hŮڵ.g&]7Xˀeo(I瀖GkMxu9;|p]uyek wLm Ix=NjWT{F쨎l )|:J?&C  J;|`ߌ? @{~It`#Ex3kY)8\L!F$EwUGe,FIHۤu~]/]nnyVY7Bn︝u~{dϸtFz426Z@6r<\ 1'==Xqңq]'74~qe/gs((*;r?Ls:y }Ý:߅GicOic ژRUkcxz^7A]}^m4Dma?Om _m, wlmL`ެE/6֡;j={MPNe ȧĒcSgvPZi CaqiICHLL$(#Aq!~xr>5UNJQ0?$:.qҔ4 Q5RqTF,A F1qi@KQ"Ȕ!)JT=Јq1)E%PTR򈔸i!!rZJd>!2ePĒ@@CeȩJԴ}dec$FG%%*Jdx*DG&D`800U9d0@OQRQqlvKGqH=X"<&"D,@H%'NZRJZ(R!JdJ\*HLJ#`ؓ9/QŰ5@0r=X.Bm-˨Z;CxԪEBx@$:LJ-Af]Gn m!jv"MP- V=O`,PP+ yf^BɎͰВ (,6(&f-mآmS\ũ,vbS^I(Z^%-^-_S/*ؔlNhх*;?:kA)}; >H+򙜒ձg4Р:JW7z%YWՄC'JWR~g$ ~G$ߩWRW]z%.~Ejd]RP$?7-\`Vp$-Lo[[&Lr-[Z&9-rh$&vdd;ݑG#ٵ;R~Ww$7);bZ/Qrï746|?4ȡzד sr<ZS1##1̨ E(ِڣL PP!+\dBB`6|("QRGLmb4|\qMNwfrq8"` cF P)BڭtR9F!KgR=7`;Pd2s`3W _U42KP|1-`ǵp+ ĸPsX㇭1L&MX?cX) k\ncxbToʭz8#^DI z#Wݞ2=۟ ۩s.|d3,Ük٥X;z+)լZwa9UºqQhG=qpdC&Fxofq08*C[+,;4 @+i+A۴lփub5O:2cMO3Y?6ӠiZRwe6);yѨERSK݌*)QA |G5#u_.Ȯ5G][cURʚ3pݻjd rP:Xx5똱E#_n=LZ3q-&pua:oŐaͱ۶v25go_2x]d-'ŰۀL n- ^^QMu~Wev fJ j2x$)Nm; ګ!.sU+ڙmLbC^]a0S,=>5!*'+՝rĦYuEz' %wih)|-R`e(ܱ?Wzk`(&!J#>0h+ Dph8j Yo0`fܳĺP%ii ӯHeoyvA8tispP{fdFׂeN0 jx}Z/tAFnkgtg/΃nsArA_|$yPN>E&YNP:akJmJ?Wr9Wr0W;%?]jt9]b]łۧL2ۻI>eo9er>L2))N)m0Ҫ֎Hn##vv$y?;gώ;'>8q=3O|?ts3;]N|vgn9Od·݅߹ vWȻP޿\n2P_N]´~7)#]ȿ&%?S`S2r5\y&RB22c5TM~b/}rﺐߦJȷm*9w6L:WMΆo(3]W~tS>IJ>& L68%>@>%S%Gȑ-#nI>B>,o}GɻC۔-JP77(ٵsUibՎ`jtZROLSzFklUJ+MMf#T#m &>ej TPYOɋH/v!뚐F@֔Քz+K+dE9)"e<%D1Vդ%HZxR@5?i7)HQH͉?%~R>xdHP8@1@7 ^%N"D?YBB'Y p /ய ky endstream endobj 16 0 obj <> endobj 17 0 obj <> endobj 18 0 obj <> stream /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo <> def /CMapName /Adobe-Identity-UCS def /CMapType 2 def 1 begincodespacerange <0000> endcodespacerange 1 beginbfrange <0000> <0000> endbfrange endcmap CMapName currentdict /CMap defineresource pop end end endstream endobj 19 0 obj <> endobj 20 0 obj < >> /FontFile2 22 0 R >> endobj 21 0 obj <> stream xiR@7-"مDed*KG3N^mюvP{۾wvwю6ֱwtg:x:߅&bܕڵލnvnwv5߃=i=k-u˽m+}ا>ڗh6ٯ~ͭo  endstream endobj 22 0 obj <> stream x} xEpUW$t2NB8$H(@.rpd&@pf!7x+*APYVx*,FEDd]<EĐ{ {?zUeF܂9+NCYK-_ipܺi.W"$^n/L=_,78 $8/Y?;Ta2ږ!npQwn׌;| #ޏP?`1̰֋b5XLLI ^m9] 8 bv>۰ JD|GDZ( hKqғ@&2 H#:Q/ w+%"?,͈4u!4WXg744R-AO' E uH@s)6f᳆EJ " |@? FAHڠ`BQjڡ;.+ G(uCQ;z^&E>(EPt3-V4݆$P:@P&F,rP.C#Q>*@B4t=M@$4#*a"2P ڃTG*^~ՠ\ ޅ m"片Њ bi4As]1\4HƈqU\ n*L\spT|J%g13nq$q*nSChƷHHZTE4]0W/'Q2FQ5zt>. ' =, [Gh ٙj:֣)Xju!>bpŋue஠IX,-,8ҕ !j⴮ 8vbQ-v{I|v0A%Tx #t$QZ1ݠ!G]tIԡ$ CcVa}ڠx"4 I |urY LtHDJSZwehr"@AoI"0VQ-I#(ƆS Q-3 ycĎ-R-$wyzD=R5iũY0 ?-1[(,ޢV(x)p_$@hMZhCf ևȓwr^  b'&ScFu陸)56Ds8~nrñ́2FW#qq$.4p~HaDz>{ (ܐs:/j<6x{#=G1n]d ܽ{}XX[} LH P6,,4DC:]hHX~݅wa,僿~|/mv:'K3>F>RL/et7m𗃭7#DOzھ@2KbZ-)e5:45([>ӹ! v|F0b=b[]p^pңIIiI]믻oaPw|8=CpΚtZ'N9^Lp|>ڽ9Nln[kgR7xp{ =CtS l_c/]8fѪovvfOŅKϊ7'jCN7Y_JXSq艥OI|Νbn1;=ùW/Ỹqwi>V v̓ 0CCy}r ?b÷'i"ǻ 澨 &~#ȴ pƐA".N<;/ػ~Q|0TOqCBYo(S AEI=z_mGǧ6뛣.Y2wFTK|@xW5}54VI5fXM>(T#6LX1~&[yMϜu4&nN/~ClޯO/?OO; |8"?/M{T{(dkx\5f\FyվJ7 iR>;k6t=?+?[0r̘cYUUV[ռ^~=6i#|'Ecǎ\ : ,c:KP-,.);fw<>|K?0w`n'&ǎ0!=bt}>Dv-Z;.Z0N-.ztR[mubdDr5(V#F\<2o㌼^Λѱ>o@|mxZݏ՝o?޷~tθvo8ӖN??D g=3/2r:p./c{D3s-%_W%͙3wϙ} K̥`}~3Y"Zة 0VIZ{ZV(B1;B'vWƓey9#ngI@g ښ#'՜7bA{*%wӨct#^G7l Wr='}r'#~ݎ l\Gf(#6|-pVpI-Ȃ(Qxs- ?ɸsQ7UXS껆'hSg0ѳ+mYkYyF}JkpWUY7^!渿l݃ Ym^v<UWr5ܺ`ZnDr쯂t}c.֟&]z'Hԕ&&yM^ `7\XJ<FS#~ OSSo8Q01"97C hÿsxk&NC'[JWZym $E6260aUxq ^+aրG+zE' T9'&yLv.z'686ɓ+=0A5gc ɐqeczTf:;^wBN`Qmݚj| ZUweܳ|=YTBVDZ6?D׮8PU݃ZIA #dsʪ);nyR&IBj1?]S:gbWLvkOd5îfI-ܭ-;8 7aL:uĪB\ܹ)lP#mp"}}Yٜ*+9pMYJb[{ժt!$4UU]tq84S؆ s='-SVя' q/xN]'> 8Vl6#_Y s؆i:gY37Om;7!>Y[ۼI؉!Τ]Hx|Qiq8g2Pap<ШPU;Ƀכ6Bk01(КLzKĊd]gQ°NO]#aΩvN.{l4[A%>f>rFc>u6K8Afz ƈg:o!plKGnT#Z >88m9 Cqok2I`I.Q<x^=+E\ Ej,ԐTݘ!2 ~ ūܖۻ߷={77,bH02 0el*W4alʘ/p^NŤ%>xƾ|~qcZEz/"#qЀ 湭/v i%5<@/qzH,E%g_[jހhTNBz=|#|߸[,fy=a{oLB@$6ϖlڎ /oc1O Z ,+>8uZ͂;Wp uѕbq}]YpI[wumm؈6nă% t̪'[꯬"B=3:| LQ\t(.\gB$݆ܧp ]A]yӒMBBT˭?a$m|`)Dh++\2pc$`х9yc&vBpnX\n@uBn!t&M35C=$c~.&6moqۼ쑥Ƽy[]^uʵоͧG?w|u_xs+:_f[sm58xP6r#Ƒsx3b=4}NU-߻o ?K[t89Ob2U0vu)m }uU5U P |( 1/-QGnpvAcsWO@~sP1TwU_r ^K|* ~씸ɹcfYG叟ʸO> 9gxԠQIv״owca&8آV˕mj@s\4?ξ|+yn￴^9~Sͭy~`<ӧ 1)$n{x0,h͑@t.Yh3V½G`|PJ7*wM@c>gCp;o;ܓ0.s}\84SZZIi/ա 7-}thhMhutEw_ 8}G(RpN3Yw7OB}J=P?Q. yЖT-Lgw~du#;M&v02[ĵ#~@kfK}´JEsqlųq5ށ?Yh'tFaQD2/|C}#|o{Rߍ5~{ЪMV[ml(rE>,-_w/}S+]@I ^VJrPo4vJA`ag(|aDD/im:whmUkm_ǭ;h6OcO i ⫵(0$kzpM#|Cgim."km FkP0}QDXCaEZ; *1a*n9Pحu5#f0WXXÕPr h%Z$WV* ʩ䛜&41Ff@602f-W*3140J)0XMN0)fb*4*F`z` VbMV8Vilq@(iYؘ*j5f^] zeOӪb*G(7XMt8g7K4SmzgdTδW8ns2͢$;L4V<4^Tz& AQYk4?f\E a0,TVv5Y39,f'7٩T&U0XAhĂi1s)L h *0( GO6y\%Q18RF[idu\2s%''(2tPD/Ήdw،U&h%U.An6!\ZYedL7*lU.`b1 U LhbbRA^4;64 j_E1hL.YU'4 eU+4FE+Ϊ)Ra*٘@5f&3Q 6%P3V T{UM) Ce\bҴl@i_8ajQl5n*3Ln4*]zK|UU2#d49VF0y8 ?Ϋ)12 3T@ g\f8LN9,k8"]ffe3 s'0$+y)EYJ^Q~^nAH99@%-; D)yc33FäB茖 SӲGD+,DW8H p 8Qlr,ehfaAa~Zr6eNsrR 3ssi JЬ47%%+93;ZIMN`x00U&ulBFZNZ~rVRB MdqvSrs FAyHDˣq @2pθ9 .S_̂h%9?Y$=?eMPde6b}z@ٚiYr3X&jjiT͝k$.aUx%,٭ifqzyrj8R!X2nvH%bS 0QL7 UD)86a) O;^3)0 |j< й3¨66a34g |ڸ wӵx\vTҬ-%p5ip6x;@s&>u8L0' G_]lqg`lh:2>d2`d&Tfs]~ˠm$sӮr4kU342\-ɮ-o]92_ϊ?l&0"0/p]O>X?$,[Sd9O|̤UΩX5GkvWRS}LhΗ[۵S)K1Cմtq.RPUU_D/VDpxU s |2RP #AR<6Q`UQl 1R>ÍKV.>Ґo@!ZRଊcQu2@:.M3-GG3T:k[=U[^ #Gt}yQ8f5TfMͭc=S7zuMM, h(Y۪IhhOF#&D)ǧxW5y,T5F{8a`Yqg6l4pm&Kg3XO4i;xSιsss_S%W9EϱDl4h4ԍ2:yѨyR%SGc)ө^YA |E4QɿFSf/6ʛ*%O5pQ}Cj8L.eM&3p|ӹZ-ٻ3_'ˍqpih  \h3Л4 H"f ĪP'l yyBoڜLNY6|a(r29>4X;GS\>t03)QbEd.m!UY8%TR?3CkQ* <|>:CjVf&,1.U>G5R.gp ? l =x=10e"._2C.01-2}f5z\UR穜R2HAxy[%)dpҸ8t1 3{T䲦hVq~DvS̲#jS\wͥ`voB@LYs4z) [hi*ۺ1Fyfk5zXS(3đvs r8,hԆ !`]+Wcnr{WMըwk+5 gpXUpMnI]:޵[K;lX=UoS%OkZ:mt>ڴ۵[}lkt#-ZԄK+ Z`Ԝ-h+|{tvi Jew\\kExdirֿۮ\ì:g_֤\r՛aKDW*0{qn亖zFh<_yθNy<;[<R g5Kxj:@ԖNXڹr͹ϕΕNe][L)|)S^au>6B}V|/ d3t[%ȡH=?QRp_)M(rr9XG.Q%).r)9Ow]9J=+KRrV&goob2|$L/u |_|F?)9Mɧ:rvI#9tH>:%}TGGFI֑>#I 1?=#ԑh#ɑ!ґ6r yL !;K%L"ގL$ķ[i$o<$ANuJQDioykdҞXF/@jvjdNiWkӟ ^d%C+m_)F_(ږܞl #: ^KRG"^C^dcwG2Z6,RJGQ!JS %Pr?%Qr=QҽE.J%,d~{2O&s)ClJfՑ;LJO['Md:R(UWG#9vJhMuRG*TJPb_%唔QLebLKKdԟP*bCdLd"%{%uS2u$c)SGFS2 FQRDIaRBGHٞ嶗Hn^mOr$ "e҈2<3P'dXH2BIzI#)RjkH&GICH2L"ICZKI -PҚH #[$A!fJ(? D@i@0_BH\O['﷎'1OtԧDFIщd$(JzK= BEzwB"$Hu$5 OU&]ΝKHRKĎCR9=m?: }Q$H %zSd$^10`$?/"'(ć$K:J$HIXG0K$'(xbf endstream endobj 23 0 obj <> /Length 1663>> stream xsFq[~ӱ I(=-׺SGL C;͟]i#rZgCرj;O?Cͳw._<|6Kcel ^RRnݭgZղ$`o2k<*"pcPGJz6C}Z{%|vQ-u/\X[ܲo˒PGqtSd=*l6ҳee܎cRB٩Yrfq^--e}X;u:jVʒ3dFgLZs,9x-)KY;u1c͇%eɄzSz \&4oHYrv\׳5w)Ӓ = xe9b-!isԕ%goQa&!eV<ÝPZu9>p<Vy¹mD3wOXQkͼ1&a e8 Ts,jzVګy5)KMk}bF5TmEkxx>9gz\9&d 4q:#4GʾvA[7uOIYrZ^> A=ǣN Zק~,9[5+")rCC\mܐSio}ɑ[nZ4sěM@:VwkyȵRy Z9cេߚ(e $^)eٺhlk͑5s.L7&rVM#eYp;5Xvv<ZʒVGEo=aG$]ʌ¿u~y䌕:~F\4Y o/?/~JY-sUl'_,es.Ύ]FXYz@W:.ξ\Pl?'ɓ.c{RvUR?w2 endstream endobj 24 0 obj <> stream x3 W]X!WԌKZJ;GaY5 endstream endobj 25 0 obj <> /Length 901>> stream xٿO@q$#ט1AV1BA1 F=Ϯ&&3;.ҭuO2-E GvR*۝ N.+Nm=$SFq.')Ӄ:xj'VgOCuBZM.=gGLUlV$Dm:5oN\;雬N]bLv Pչ⫥J?N1@ |5B+L26:81@ ôuWAt1p>1@ &[H}ٽQzd3JL!J.(F+C'YzmwQL!ug)dux"J[|,G1HeF-B9vfjVbFM2=@ f=?(zQ$DzUu[)$!#[ ҳYȁ|ɐ$bƕ dt~68ey2&4?"ݽE f)5Ia?ueR$-矺^ZH;hyaMߗ^Z79-O`1']e ?{4r(. ['\hI1ͪ~طQLN o> stream x;s æM%%%fΜS__* endstream endobj 27 0 obj <> /Length 251>> stream hj@h!-.$$KJJZ@ӽvgNG.ﳙaF%>wRߗ206t>'}n(t>c]MJ'9Y5t`qv}gy}ܛV20z|YTE;tyl׭;kQe[kw=]7fv][;mR]>ʕtkjܯ> stream x;s æM|||덍%%%fΜ p endstream endobj 29 0 obj <> >> endobj 30 0 obj << /Type /Pattern /PatternType 1 /PaintType 1 /TilingType 2 /Resources 29 0 R /BBox [0 0 105.000 105.000] /XStep 105.000 /YStep 105.000 /Matrix [1 0 0 1 245.140 670.890] /Filter /FlateDecode /Length 32>> stream x+T040300PAdvrKB  endstream endobj 2 0 obj <> /ExtGState << /GS1 7 0 R /GS2 8 0 R >> /XObject << /I1 23 0 R /I2 25 0 R /I3 27 0 R >> /Pattern << /P1 30 0 R >> >> endobj 31 0 obj << /Producer (mPDF 7.1.9) /Title (Parkstrae) /Creator (Laravel Pdf) /CreationDate (20191203152827+00'00') /ModDate (20191203152827+00'00') >> endobj 32 0 obj << /Type /Catalog /Pages 1 0 R /OpenAction [3 0 R /Fit] /PageLayout /OneColumn >> endobj xref 0 33 0000000000 65535 f 0000002001 00000 n 0000034323 00000 n 0000000015 00000 n 0000000223 00000 n 0000000797 00000 n 0000001005 00000 n 0000002096 00000 n 0000002157 00000 n 0000002214 00000 n 0000002366 00000 n 0000002906 00000 n 0000003302 00000 n 0000003371 00000 n 0000003678 00000 n 0000004054 00000 n 0000015657 00000 n 0000015815 00000 n 0000016637 00000 n 0000017033 00000 n 0000017102 00000 n 0000017420 00000 n 0000017804 00000 n 0000030042 00000 n 0000031968 00000 n 0000032073 00000 n 0000033236 00000 n 0000033342 00000 n 0000033855 00000 n 0000033961 00000 n 0000034053 00000 n 0000034535 00000 n 0000034731 00000 n trailer << /Size 33 /Root 32 0 R /Info 31 0 R /ID [<7b01e4e753baeed433b8483fee5c5638> <7b01e4e753baeed433b8483fee5c5638>] >> startxref 34829 %%EOFlaravel-pdf/tests/snapshots/simple.pdf000064400000034462152427537660014143 0ustar00%PDF-1.4 % 3 0 obj <> /Contents 4 0 R>> endobj 4 0 obj <> stream x=0 D=+ eFJlo-RI|2,.:hN;>qT^83힛K1˷;f,vGn=4kRE@44y&Zmo{Z$h endstream endobj 1 0 obj <> endobj 5 0 obj <> endobj 6 0 obj <> endobj 7 0 obj <> endobj 8 0 obj <> stream /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo <> def /CMapName /Adobe-Identity-UCS def /CMapType 2 def 1 begincodespacerange <0000> endcodespacerange 1 beginbfrange <0000> <0000> endbfrange endcmap CMapName currentdict /CMap defineresource pop end end endstream endobj 9 0 obj <> endobj 10 0 obj < >> /FontFile2 12 0 R >> endobj 11 0 obj <> stream xVQfd%{dT*l-Ȉ_sڥ}@;t:NtSn3msBhJWnt[Nw^{&lGM7l{z^4^7]B-JV[K}[}G?fVnw endstream endobj 12 0 obj <> stream x| \TU9;.zqIe]cet`apfQQqqGKSS+5-K+Ӟz635giwν3 d=}gs=\0B4#+76r=\}O:p <7rG~BHHEŖjBC_UW / q<U}~N0O` Zˀ;0>Hm $Z|^t ErUol/ì-a^ $@΢Ob_A5h L]tx1 $dYY Jf,WqoCf"<$a2z"8>='˧ s*/z[*{@xop:.OA{?pYz-ޡ!y }kP& T]H"0 Qic &oL Q򒏡cҤcCH11* =6{|.EEH܉dO [ ,~O5֓_І,>lozGs 6Mo^m 0P!,T#DK"SSku#%33̐hzIzvzN G`N"a[ `2"Ip~ED/rc=v7aib99XM𝄃+'icԆoāy'r4qSvOY- xƻ&MȘ4dN9qRCOYP+:{u6ز͛:#mtON̙kΜ&ܼ/M3/?{-o>P:V821qՁpErf;xPd|xXd %?ge^9u`[>zu+WDsbc%E©zQ>;Mc橢F01{+=g""(-9yDLL>< f>SrS\m Cj?(Lnk7n\[U]jBlX tGfı탃mѪ9sV}z}x^h.ОtM{]t2tWTHdԳ/$-"^<#?Ǐ^L3k:xRgڕ{7mؽpN2TҡyFG||DZSE6.^U;_ǃ  u>.a:LtyJHf1n$4}I5fe!?5k . Ȳ5,db Z &{bk2?i_M`4zoZnuːyݻӟ^[sF8(*"BC 9F,Xb+ةͽG`Qr~I|7^cm_?]b4ӿl;@GA Ą(dp1eg&Tbcgg.Aģ6gb2eݢE5ZScWGvmyx>v8Um[݊m.u|{o>Swu0}9T^:3}aJؠp0L<7L{}<:|w_Eoлv+ >J?]^';}q:t Gw/*_9Vb3 {ⴺ]܀q:gd H2$=c,`yCՒB< 585eTWgd@.GTGX5M&&.?;4/")45\擆m(D4=^MmEa,Jjo|u ۊLpU1=ZGys׊s4ǥ,rG1Pw^mѝQa;v:y{`.2h`wm|4yx/mxܥ?9b cd<f~?g:fx3ҔQoNlΜr/])kzFz~U\U:mҹ N*r^"xf3 { |9Hh p|&YV|s X?V&.fqٌGfv3Bx0PT^]RH"x~>;6ߡ{κG7џͻ?,K\nƯpEGCzBy9%̶rQ34s{Rs0v,mCJ:෬V5|G3}}vOqP"*ӮK_|w<'>9~@ߥ@he̳$ӧ Kddx:.O N~ρs s V/qsyIKK!YXĹWu 88f3_ s4_eCn*uRv Y⎜x=a ]oҐW~4EON2`~a![Hވ_|EX\o;f/'n;̀VzQ<q(HWSZ[T;-^?WqųLTj9>{r-B/13čUF8S$u|Ҵ$)cA3vydjmCMB@,z֭+@&} w%Igqx g)}ECDBO=KoY jgV 'D2\fͲy}ޤ_+ض{8/UYi.KHyH]0gX/}nr ACUmd*dַO? /xoVTL6+ٻ=1Kbpvs.;#S_O/?8[ 哯]|-\XGLɡ:3r$w_qǺv@S2#9vîBHt'u=zc~Q=n8u]Y#}k9 KJKLߦL.pF<?/^"|/;.xo8YKMeqA$xP@O?ESV{=Oo8i֔nW̓>s9<(?Sb6|-;j: _~tF;?Tsr`gJGDL=G7?DMZ9|ր+ 5=ans ͮ_vlk՝PO&̚L3=!^hL߬it*t{ hZ9Lv4QKv6]^XH$c5w4ZgQLb0]yI+|%% L/Zs ,28ڍߗq]yk뢵}}LٽO+l$j4* r2=RSf,lEڎ'f?گy5.rJ91V5yeܼq؍,_xq-`>`56 BoLy_R鐯PY Zċ|qeCK{]y}'_Y4׶^[P1 W/APctbyt̀jJ%'ౣ~_744|lx0̙V6=m6ҥ'Y):D,hʫ=rߟ~4{BPuƺuz֥.riʝ=z(kZ4wVvNMٺԝaLN [pJM=[6As/+#됌Ѕu/({. ݥP?@Ek{vxÇ=g̘ؤ{99N68V*?=#yxDoc;g ƥsJ&<ڌs ?XZe+X+@dM+}6.[I{ma*hû!  !lƧU\#xֲxnuB6@Гq~pqǧ36oBt rs[l'+.o%7Y޳\i  +P h$=ߛ9&+]ҠrE'^JrÓ ?qKM jVʰ_h$'Eqd~W> @~ ~0k&fg7aYTx0xu#3Q9A0_ n鍺P&o4×@vg@4-A</k{A#< F apN$^|XJAo|O_[{_Py~Q|K`h]llnꃶ@Ah;,?f#~8Sې#qOW"R\ABFBC]vϦ@4@~@m!٤zSgmj@Cm~AmKj[z QjE퇆 ;v@H'JSAQ{yJFVT P1*A^~AuiU3d3L0nˆH,p!h%2pwaFX3 0@ f\=2 (]s dXoz>Pf*.qȽ {qij9;lF%ZN+/6.F,!7hWʅ%b]ی\,(3Eo*9rPʁ#|۹dH5LEr`,? ZIVk H>_fV8:oMr9.F;5JHCV27,`9bcP1fF ax6;1k5kY1vkXdcʍ0\>{gcL<##xU\;~"c|yn٤jQzRrgs^dZ<].cFUbN{Qbaۢ9_Va9__FB &,]EìB!* VxW<|Z^-vW!ѫ)>X^i(>OT?汅K9ĂbNXO|[J%糅}F|E)DTUrE'UJxNp>O\V^p[uaֶp{lvXrDyIJ<(&UR4p[hGkQpECϩ媄FhD;ӄfreWFc;Ԭ(2.^i?e~<G(/J*{hӆݘڳ[Q(s 6uEk ѥ]ZL˹n72KUƈCܚtNʄ'F' 'sXPH><Gx fYh \TWdqK(%A5`*s(3LQ{βT+v JK|7\.:|d.[6u(\D,N!1-2}gxX%ٍq)%rWZk;\Fqt\S|v.Q=?qYU*+>d.#8S}*뮵J0[P,~'{uݶ^{L౨sZHr>\vguők;,LrƿUrB~qv۳zlJ=h\Y (Yxki3WʞrsNJMR%wW/wZ_ӕZJLh˞-|y*U+b)W > *v R9ڜ \;۸+3kՓ1* g-:aP~YXPԶe:(ܠZ\yh"_Ʊݪn42kU?x۲8h ݭo?P6æ7-z[l-jmYLvfmFUlӗ;h2VlVY_^-WmvX`-pbRL^S_XhTt6Q$TU n@4XXi1;O t܋!rQ:9+lVCeL a'Zܾhьf&ۍ`mVUېflSCU'TUb~3CQBU[e{eX`=%@raC,#@"΀ ʭ0]eVheLA5`\JNk9MXm-;+Ez 0zԢfTdb/sA@\Q/ ,8!n*.lUW"B.~m))gP/hs҂,U˦V"ٌg粆)"F;"@fX`]r 6N3F&Z v`B̲܌g; jd}EaJDoDcyk7ȕy%B,kce,@&V K b՝?sjE h,+bLɩYyrnVjބ+gd姥R\x''Ì̼IrV9I-&frs9-#;=M}iS2GI.3+ONOHм,TJ2 ]NhxLLJKO˛-e2TMsҒǧ'srui9@E!(9+{RNڨyѰ(:弜]Fbha#)1%`Ⱥ|8wtbzK`svFefe0LIKʔt JbRN DINOLˈS3Gr[i8-` F2u9rn.95@i9<>tH&geƍ"$@D/sqN^VN ih91'-2{ &x'3^/w,Z0E.4V8oGJͽVI£!p>;Zmjev#%f! Y*dReHmbU= *,ȗ2Xfw:\bKl&$Y_ 6u+[U[ ی ةLe103Ήjs:rC.j+}'Up)\r4q1h~C2bMgTTĪ9+7~:}>'[%͔l"m"7HC8!GܰW@6(!M\K֟Ykugڅ~`6A\5CUgՔZ9MZuWVN#+׊(Ro=*E%}@>O0OHzcpII$*5tl/u%,=L#II Fn܉n@[0V+v%].vrIg@܏t#HI *А)4&!!=kz) [Pi'0HIt" ?%~0c ^w( &)N IqD0/P\(a? endstream endobj 2 0 obj <> /ExtGState << /GS1 5 0 R >> >> endobj 13 0 obj << /Producer (mPDF 7.1.6) /Title (Document) /Creator (Laravel Pdf) /CreationDate (20181109125505+00'00') /ModDate (20181109125505+00'00') >> endobj 14 0 obj << /Type /Catalog /Pages 1 0 R /OpenAction [3 0 R /Fit] /PageLayout /OneColumn >> endobj xref 0 15 0000000000 65535 f 0000000424 00000 n 0000013780 00000 n 0000000015 00000 n 0000000223 00000 n 0000000513 00000 n 0000000574 00000 n 0000000725 00000 n 0000001264 00000 n 0000001659 00000 n 0000001727 00000 n 0000002035 00000 n 0000002411 00000 n 0000013896 00000 n 0000014088 00000 n trailer << /Size 15 /Root 14 0 R /Info 13 0 R /ID [ ] >> startxref 14186 %%EOFlaravel-pdf/tests/views/exposify-expose.html000064400000011203152427537660015313 0ustar00 Parkstraße

Details

Typ: Wohnung zur Miete
Nummer: #5865

Niklas

test@gmail.com
1234
laravel-pdf/tests/TestCase.php000064400000001260152427537660012347 0ustar00 Pdf::class, ]; } } laravel-pdf/tests/PdfTest.php000064400000002542152427537660012211 0ustar00This gets tested!

'); $this->compareToSnapshot('simple', $pdf->output()); } public function testExposifyPdfExposeIsCorrect() { $pdf = PDF::loadFile('tests/views/exposify-expose.html'); $this->compareToSnapshot('exposify', $pdf->output()); } protected function compareToSnapshot($snapshotId, $data) { $snapshotFile = "tests/snapshots/{$snapshotId}.pdf"; // create snapshot if it doesn't exist if (!file_exists($snapshotFile)) { file_put_contents($snapshotFile, $data); return; } $snapshot = file_get_contents($snapshotFile); $this->assertPdfsLookTheSame($snapshot, $data); } public function assertPdfsLookTheSame($pdf1, $pdf2, $message = '') { $assertedImagick = new Imagick(); $assertedImagick->readImageBlob($pdf1); $assertedImagick->resetIterator(); $assertedImagick = $assertedImagick->appendImages(true); $testImagick = new Imagick(); $testImagick->readImageBlob($pdf2); $testImagick->resetIterator(); $testImagick = $testImagick->appendImages(true); $diff = $assertedImagick->compareImages($testImagick, 1); $pdfsLookTheSame = 0.0 == $diff[1]; self::assertTrue($pdfsLookTheSame, 'Failed asserting that PDFs look the same.'); } } laravel-pdf/.github/ISSUE_TEMPLATE/bug_report.md000064400000001126152427537660015177 0ustar00--- name: Bug report about: Create a report to help us improve title: '' labels: '' assignees: '' --- We are only able to handle bug reports at this point in time. If you have an idea on how to improve the library, please submit a pull request. **Describe the bug** A clear and concise description of what the bug is. **To Reproduce** Steps to reproduce the behavior: 1. Use this method '...' 2. Download PDF '....' 3. See error **Expected behavior** A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. laravel-pdf/src/LaravelPdf/Facades/Pdf.php000064400000000447152427537660014346 0ustar00config = $config; // @see https://mpdf.github.io/reference/mpdf-functions/construct.html $mpdf_config = [ 'mode' => $this->getConfig('mode'), // Mode of the document. 'format' => $this->getConfig('format'), // Can be specified either as a pre-defined page size, or as an array of width and height in millimetres 'default_font_size' => $this->getConfig('default_font_size'), // Sets the default document font size in points (pt). 'default_font' => $this->getConfig('default_font'), // Sets the default font-family for the new document. 'margin_left' => $this->getConfig('margin_left'), // Set the page margins for the new document. 'margin_right' => $this->getConfig('margin_right'), // Set the page margins for the new document. 'margin_top' => $this->getConfig('margin_top'), // Set the page margins for the new document. 'margin_bottom' => $this->getConfig('margin_bottom'), // Set the page margins for the new document. 'margin_header' => $this->getConfig('margin_header'), // Set the page margins for the new document. 'margin_footer' => $this->getConfig('margin_footer'), // Set the page margins for the new document. 'orientation' => $this->getConfig('orientation'), // This attribute specifies the default page orientation of the new document if format is defined as an array. This value will be ignored if format is a string value. 'tempDir' => $this->getConfig('tempDir') // temporary directory ]; // Handle custom fonts $mpdf_config = $this->addCustomFontsConfig($mpdf_config); $this->mpdf = new Mpdf\Mpdf($mpdf_config); // If you want to change your document title, // please use the tag. $this->mpdf->SetTitle('Document'); $this->mpdf->SetAuthor ( $this->getConfig('author') ); $this->mpdf->SetCreator ( $this->getConfig('creator') ); $this->mpdf->SetSubject ( $this->getConfig('subject') ); $this->mpdf->SetKeywords ( $this->getConfig('keywords') ); $this->mpdf->SetDisplayMode ( $this->getConfig('display_mode') ); if (!empty($this->getConfig('pdf_a'))) { $this->mpdf->PDFA = $this->getConfig('pdf_a'); // Set the flag whether you want to use the pdfA-1b format $this->mpdf->PDFAauto = $this->getConfig('pdf_a_auto'); // Overrides warnings making changes when possible to force PDFA1-b compliance; } if (!empty($this->getConfig('icc_profile_path'))) { $this->mpdf->ICCProfile = $this->getConfig('icc_profile_path'); // Specify ICC colour profile } if (isset($this->config['instanceConfigurator']) && is_callable(($this->config['instanceConfigurator']))) { $this->config['instanceConfigurator']($this->mpdf); } $this->mpdf->WriteHTML($html); } protected function getConfig($key) { if (isset($this->config[$key])) { return $this->config[$key]; } else { return Config::get('pdf.' . $key); } } protected function addCustomFontsConfig($mpdf_config) { if (!Config::has('pdf.font_path') || !Config::has('pdf.font_data')) { return $mpdf_config; } // Get default font configuration $fontDirs = (new Mpdf\Config\ConfigVariables())->getDefaults()['fontDir']; $fontData = (new Mpdf\Config\FontVariables())->getDefaults()['fontdata']; // Merge default with custom configuration $mpdf_config['fontDir'] = array_merge($fontDirs, [Config::get('pdf.font_path')]); $mpdf_config['fontdata'] = array_merge($fontData, Config::get('pdf.font_data')); return $mpdf_config; } /** * Encrypts and sets the PDF document permissions * * @param array $permisson Permissons e.g.: ['copy', 'print'] * @param string $userPassword User password * @param string $ownerPassword Owner password * @return static * */ public function setProtection($permisson, $userPassword = '', $ownerPassword = '') { if (func_get_args()[2] === NULL) { $ownerPassword = bin2hex(openssl_random_pseudo_bytes(8)); }; return $this->mpdf->SetProtection($permisson, $userPassword, $ownerPassword); } /** * Output the PDF as a string. * * @return string The rendered PDF as string */ public function output() { return $this->mpdf->Output('', 'S'); } /** * Save the PDF to a file * * @param $filename * @return static */ public function save($filename) { return $this->mpdf->Output($filename, 'F'); } /** * Make the PDF downloadable by the user * * @param string $filename * @return \Symfony\Component\HttpFoundation\Response */ public function download($filename = 'document.pdf') { return $this->mpdf->Output($filename, 'D'); } /** * Return a response with the PDF to show in the browser * * @param string $filename * @return \Symfony\Component\HttpFoundation\Response */ public function stream($filename = 'document.pdf') { return $this->mpdf->Output($filename, 'I'); } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������laravel-pdf/src/LaravelPdf/PdfWrapper.php�����������������������������������������������������������0000644�����������������00000001327�15242753766�0014357 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php namespace niklasravnsborg\LaravelPdf; use File; use View; class PdfWrapper { /** * Load a HTML string * * @param string $html * @return Pdf */ public function loadHTML($html, $config = []) { return new Pdf($html, $config); } /** * Load a HTML file * * @param string $file * @return Pdf */ public function loadFile($file, $config = []) { return new Pdf(File::get($file), $config); } /** * Load a View and convert to HTML * * @param string $view * @param array $data * @param array $mergeData * @return Pdf */ public function loadView($view, $data = [], $mergeData = [], $config = []) { return new Pdf(View::make($view, $data, $mergeData)->render(), $config); } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������laravel-pdf/src/LaravelPdf/PdfServiceProvider.php���������������������������������������������������0000644�����������������00000001635�15242753766�0016054 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php namespace niklasravnsborg\LaravelPdf; use Illuminate\Support\Facades\Config; use Illuminate\Support\ServiceProvider as BaseServiceProvider; class PdfServiceProvider extends BaseServiceProvider { /** * Indicates if loading of the provider is deferred. * * @var bool */ protected $defer = false; /* * Bootstrap the application service * * @return void */ public function boot() { $this->publishes([ __DIR__ . '/../config/pdf.php' => config_path('pdf.php'), ]); } /** * Register the service provider. * * @return void */ public function register() { $this->mergeConfigFrom( __DIR__ . '/../config/pdf.php', 'pdf' ); $this->app->bind('mpdf.wrapper', function($app) { return new PdfWrapper(); }); } /** * Get the services provided by the provider. * * @return array */ public function provides() { return array('mpdf.pdf'); } } ���������������������������������������������������������������������������������������������������laravel-pdf/src/config/pdf.php����������������������������������������������������������������������0000644�����������������00000000645�15242753766�0012305 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php return [ 'mode' => 'utf-8', 'format' => 'A4', 'author' => '', 'subject' => '', 'keywords' => '', 'creator' => 'Laravel Pdf', 'display_mode' => 'fullpage', 'tempDir' => base_path('../temp/'), 'pdf_a' => false, 'pdf_a_auto' => false, 'icc_profile_path' => '' ]; �������������������������������������������������������������������������������������������laravel-pdf/src/mpdf_ttfonts_config.php�������������������������������������������������������������0000644�����������������00000000310�15242753766�0014310 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?php use Illuminate\Support\Facades\Config; define('_MPDF_SYSTEM_TTFONTS', Config::get('pdf.custom_font_path')); $this->fontdata = array_merge($this->fontdata, Config::get('pdf.custom_font_data')); ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������laravel-pdf/.gitignore������������������������������������������������������������������������������0000644�����������������00000000026�15242753766�0010750 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������vendor/ composer.lock ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������laravel-pdf/README.md�������������������������������������������������������������������������������0000644�����������������00000012365�15242753766�0010250 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Laravel PDF: mPDF wrapper for Laravel 5 > Easily generate PDF documents from HTML right inside of Laravel using this mPDF wrapper. ## Installation Require this package in your `composer.json` or install it by running: ``` composer require niklasravnsborg/laravel-pdf ``` > Note: This package supports auto-discovery features of Laravel 5.5+, You only need to manually add the service provider and alias if working on Laravel version lower then 5.5 To start using Laravel, add the Service Provider and the Facade to your `config/app.php`: ```php 'providers' => [ // ... niklasravnsborg\LaravelPdf\PdfServiceProvider::class ] ``` ```php 'aliases' => [ // ... 'PDF' => niklasravnsborg\LaravelPdf\Facades\Pdf::class ] ``` Now, you should publish package's config file to your config directory by using following command: ``` php artisan vendor:publish ``` ## Basic Usage To use Laravel PDF add something like this to one of your controllers. You can pass data to a view in `/resources/views`. ```php use PDF; function generate_pdf() { $data = [ 'foo' => 'bar' ]; $pdf = PDF::loadView('pdf.document', $data); return $pdf->stream('document.pdf'); } ``` ## Other methods It is also possible to use the following methods on the `pdf` object: `output()`: Outputs the PDF as a string. `save($filename)`: Save the PDF to a file `download($filename)`: Make the PDF downloadable by the user. `stream($filename)`: Return a response with the PDF to show in the browser. ## Config If you have published config file, you can change the default settings in `config/pdf.php` file: ```php return [ 'format' => 'A4', // See https://mpdf.github.io/paging/page-size-orientation.html 'author' => 'John Doe', 'subject' => 'This Document will explain the whole universe.', 'keywords' => 'PDF, Laravel, Package, Peace', // Separate values with comma 'creator' => 'Laravel Pdf', 'display_mode' => 'fullpage' ]; ``` To override this configuration on a per-file basis use the fourth parameter of the initializing call like this: ```php PDF::loadView('pdf', $data, [], [ 'format' => 'A5-L' ])->save($pdfFilePath); ``` You can use a callback with the key 'instanceConfigurator' to access mpdf functions: ```php $config = ['instanceConfigurator' => function($mpdf) { $mpdf->SetImportUse(); $mpdf->SetDocTemplate(/path/example.pdf, true); }] PDF::loadView('pdf', $data, [], $config)->save($pdfFilePath); ``` ## Headers and Footers If you want to have headers and footers that appear on every page, add them to your `<body>` tag like this: ```html <htmlpageheader name="page-header"> Your Header Content </htmlpageheader> <htmlpagefooter name="page-footer"> Your Footer Content </htmlpagefooter> ``` Now you just need to define them with the name attribute in your CSS: ```css @page { header: page-header; footer: page-footer; } ``` Inside of headers and footers `{PAGENO}` can be used to display the page number. ## Included Fonts By default you can use all the fonts [shipped with mPDF](https://mpdf.github.io/fonts-languages/available-fonts-v6.html). ## Custom Fonts You can use your own fonts in the generated PDFs. The TTF files have to be located in one folder, e.g. `/resources/fonts/`. Add this to your configuration file (`/config/pdf.php`): ```php return [ // ... 'font_path' => base_path('resources/fonts/'), 'font_data' => [ 'examplefont' => [ 'R' => 'ExampleFont-Regular.ttf', // regular font 'B' => 'ExampleFont-Bold.ttf', // optional: bold font 'I' => 'ExampleFont-Italic.ttf', // optional: italic font 'BI' => 'ExampleFont-Bold-Italic.ttf' // optional: bold-italic font //'useOTL' => 0xFF, // required for complicated langs like Persian, Arabic and Chinese //'useKashida' => 75, // required for complicated langs like Persian, Arabic and Chinese ] // ...add as many as you want. ] // ... ]; ``` *Note*: If you are using `laravel-pdf` for producing PDF documents in a complicated language (like Persian, Arabic or Chinese) you should have `useOTL` and `useKashida` indexes in your custom font definition array. If you do not use these indexes, your characters will be shown dispatched and incorrectly in the produced PDF. Now you can use the font in CSS: ```css body { font-family: 'examplefont', sans-serif; } ``` ## Set Protection To set protection, you just call the `SetProtection()` method and pass an array with permissions, an user password and an owner password. The passwords are optional. There are a fews permissions: `'copy'`, `'print'`, `'modify'`, `'annot-forms'`, `'fill-forms'`, `'extract'`, `'assemble'`, `'print-highres'`. ```php use PDF; function generate_pdf() { $data = [ 'foo' => 'bar' ]; $pdf = PDF::loadView('pdf.document', $data); $pdf->SetProtection(['copy', 'print'], '', 'pass'); return $pdf->stream('document.pdf'); } ``` Find more information to `SetProtection()` here: https://mpdf.github.io/reference/mpdf-functions/setprotection.html ## Testing To use the testing suite, you need some extensions and binaries for your local PHP. On macOS, you can install them like this: ``` brew install imagemagick ghostscript pecl install imagick ``` ## License Laravel PDF is open-sourced software licensed under the [MIT license](http://opensource.org/licenses/MIT) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������laravel-pdf/composer.json���������������������������������������������������������������������������0000644�����������������00000001637�15242753766�0011513 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ "name": "niklasravnsborg/laravel-pdf", "description": "Generate PDFs in Laravel with this mPDF wrapper.", "keywords": ["mpdf", "pdf", "laravel"], "license": "MIT", "scripts": { "test": "phpunit --colors=always" }, "require": { "php": ">=7.0", "mpdf/mpdf": "^8.0" }, "autoload": { "psr-4": { "niklasravnsborg\\LaravelPdf\\": "src/LaravelPdf" } }, "autoload-dev": { "psr-4": { "niklasravnsborg\\LaravelPdf\\Test\\": "tests/" } }, "extra": { "laravel": { "providers": [ "niklasravnsborg\\LaravelPdf\\PdfServiceProvider" ], "aliases": { "PDF": "niklasravnsborg\\LaravelPdf\\Facades\\Pdf" } } }, "require-dev": { "phpunit/phpunit": "^7.4", "orchestra/testbench": "^3.7" } } �������������������������������������������������������������������������������������������������laravel-pdf/phpunit.xml�����������������������������������������������������������������������������0000644�����������������00000001222�15242753766�0011170 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <phpunit bootstrap="vendor/autoload.php" backupGlobals="false" backupStaticAttributes="false" colors="true" verbose="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" stopOnFailure="false"> <testsuites> <testsuite name="default"> <directory>tests</directory> </testsuite> </testsuites> <filter> <whitelist> <directory suffix=".php">src/</directory> </whitelist> </filter> </phpunit> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������