1 月末に、DOMPDF ライブラリを使用して HTML から PDF ファイルを生成するスクリプトを作成しました。
HTML は次のとおりです。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>test</title>
<style type="text/css">
*{
color:#715335;
font-family:Helvetica, Arial, Serif;
}
.i{font-style: italic;}
.b{font-weight:bold;}
h1, h2, h3, h4, h5, h6{display:inline;}
h1{font-size:350%;}
h3{font-size:275%;}
h6{font-size:150%;}
span{font-size:125%;}
div{background-color:#fedebd;}
</style>
</head>
<body>
<div align="center" style="margin-left:10px;margin-right:10px;padding:0px;">
<br />
<br />
<br />
<br />
<img src="img/banner/Bronze/top.gif" />
<br />
<br />
<h1 class="b" style="color:#715335;">Bronze Certificate</h1>
<br />
<br />
<h3 class="i" style="color:#715335;">Ruth Candlish</h3>
<br />
<br />
<h6 style="color:#715335;">This certificate has been awarded to you for earning over 250 points on the LEAP System.</h6>
<br />
<br />
<img src="img/barry.gif" />
<br /><br />
<img src="img/badge.gif" />
<br />
<h6 class="i">Date Awarded: 14-03-2013</h6>
<br />
<br />
<span>Awarded by: Middle School</span>
<br />
<br />
<img src="img/banner/Bronze/bottom.gif" />
<br />
<br />
<br />
<br />
</div>
</body>
</html>
PDF ファイルを保存してレンダリングするために、2 つのコード セグメントを使用しています。compile
1 つは、入力変数 (生徒の名前、ポイント数など) に従って HTML を生成する単純な関数で、もう 1 つは次のとおりです。
/*
* @param string $data : <HTML> from $this->compile();
* @param string $size : "a1","a2","a3","a4","a5","a6"...
* @param string $orientation : "landscape", "portrait"
* @param string $name : The name of the student, used to prefix the name of the output file
*/
public function save($data, $size, $orientation, $name, $type){
$dompdf = new DOMPDF();
$dompdf->set_paper($size, $orientation);
$dompdf->load_html($data);
$dompdf->render();
$data = $dompdf->output();
$filename = 'data/'.$type.'/'.$name.' - '.date("d-m-Y").'.pdf';
return file_put_contents($filename, $data);
}
当時、このスクリプトは完全に実行されました。PDF が作成され、画像とともに保存されました。
今日、私は2つのことを見つけるためにそれに戻ってきました:
- 画像が欠落していることを示す X はありませんが、保存された PDF で画像が機能しません。
- 大量の文字化けしたテキスト出力があり、文字形式の画像である可能性があります
出力の一部を次に示します。
‰PNG
IHDR»< û;8úPLTEÿÿÿÅ__ÀVVÉlií%š$î:+ÃaUª4&ïK6ïD2ðW>ðQ9ñaEñ\BórU½VAònQòjMñeIòˆlôƒeô‚eô€bó}_ô`óz\ô|\óxZôyYóvXôwWö–yö’tõqõoõ‹mõˆjõ†hõ…fô‚cô~^ô|[¥:ù°—ø¥Š÷Ÿƒö›~öoökø‹iõ‰gÃdDúº¢ø«ö—uÎ|\±L&úìÆo<º`*Ø–hÞ¥uÕ‘EÍ„,Åxâ¯j羀ߨSÙ /î·æºUä¶3íÍfôÝÛøæ˜þçƒþëŒþë†óÞzÿê{üålå¿ûî›ôç•ÿî‘ùèŠþî‰þëÿì~þìzþëwõápÿësóÞXÿèYÿæSî×LìÓ2ùÙîÍûØýÛûô»úñúï£îã–úí”ÿò•ùìùìùìŠøëˆøë…øë„øë‚øê€øê}ÜÏnøéz÷éxøétøéoøèjþëm÷çfþêg÷æ\þë_ÿçIûåCùä<þä5þã,ïÕ#ÿâ#þâÿáíÓõ×
øÝ
ÿáüÜ ýÝûÛÿÞüÝÿÞõêŽùí‡ÿô÷ça÷çU÷åLöã+ñÛþèøâôÞÿåþöŒÿôuÿòHþì&õãöâÿîþôVýñÿúkþø8ÿþ¡ÿÿŒÿþxÿþYÿþFÿý-ÿþÿýØé½Ðå¯Ëâ§ÆàŸÂÞ˜¿Ü”¼ÚŽ¹Ù‰±Õ|Óu¨ÑlžÍY˜ÊN¶Ø…´×£ÏcÆ<zÀÄ/…Æ;‰ÉU’ÍPÍGËiœÒg›Òb˜Ð]–ÐZ”Îu¢Ör ÕnŸÔkÓe™Ña–Ï“´Þ‹¯Ü…¬Û€©Ù}¦Øy¤×ržÓoœÓl™Ð²È礿㙸à—9‘(ˆ$~"¸@Zœ.³3L¯'B¥7¾QeŸ+«'6Ä`eŸ!'™"•¿QU½LP»EJ¯48ª.2¦*-£%*›$ÂXZ·AC³<=M$æ‚tRNS@æØf,IDAThÍÚwXTwºð±D(d2E)S£ˆn¢‘&EÁÜ«fe]MŒ’½H‡À‚ÛM\“Ñ{APÈf€Xh* }Á¬fM@©áyîïô33ewó¸÷ý#É3çŒóÉ÷yϯiß~îÜßΞ9súô©'âããbcböí=~ìÈîOwîð÷óòòÚ¾yËÎ]»;¾o_Ll\|ü‰§NŸ>sæì¹sç¾ßÿ%ím•5‡Ëe±Õ?û>á»ïÎ; Øw}¶cûv/¯CÛwìüt÷‘cÇ÷‰%ègÏ~—ð··$ç2ù¦|Ó¥|º5ùÓý¸ýlÇsÿ|'fßòÙ.ؾ²ÇŸ8u
ØϼM;‡Éä±--,,yæ|æÌì[6ÿÿ°[šs¹–¶6k–/_naÊgLgÏËåÀ.eeíº •H$Ivüç…¬Ý<.“¥ÅÄŠÅ'Ôìß¾
; ³@ê¶+l–¯¶15§SÚÓO¸¯³÷ï“müè#O©§ÀÁQ°á?7§nu¹ot»˜–æážþÖí‡Áe[[ü
›Õ¶|sJ{¶ÊÙ]å$sëú=·
&'›\{¤®]_ˆ<ÃNrùG“ÙoÝÎg›,aÒ9,+K8z¶9>Ú¨Ûû=ävn²þuYY‹Æ¤Á|_‰ëÈ&©ëàEnóåòu‹ÞºÅ ,1Å¢_ckÊ£´'÷Û½t–ywoe¹õ…»D²adÖœÁ9Q¢9“º¼ÿv6ÇLßÈÐÀl1Ž~…-Zµr_'ëwÊÊHa»ëð†ó.ƒGDƒAÏF1°g§ÿîöFe]²iš‹,®¡ž1À/1aÒÙ,+.>Ljô»{\·½l]·§[·ƒT2Øá~¹tyî¯ëuw>™þûÚÔ)êë”õ•
j=›m¨£¿è—˜ñy¶•—2÷ôd{;;ç´L™ÓÔ¤›t§ÔÁôŒàÏÒ
"™ÌM öX´hÊã÷µ×(šÛZž>m©TP]·þÐlÞ= G£gó(í'NˆãÓäiÐø.ÊsÓ! ˜›àñýˆH¶w_š<Vœý{÷L›BÙô¨µµåé“'
•Í7XðYºîzÉ¥¶k¬ û!|^ÑžWÿu»¢NYÛø ½
Ò7V·QÜa²Òp®®½ ÛÜrFö7® þe;ˆ½JQWÛØð¨õéCeðækõæÎCð¸\>~åßl¯©©º_¥¨W6AÑ?l¬¤ºÇ”g©?wî<]Æt61ÒöïOÈÍÍÍ
ô²¬gd2´ž‘J¡õ(ðY"øT.—Cýž
Ý›UÊþ™ÚƒÏS_hTÞ¯¨®F£oy@ù´Ò̵L=]]ý%,¶)‡dÏøj=ZÎH9!åÊ+777øsøäÛ2ffŠAm//¿¿ºªŠþQ#µÆḒÍá¬b3äÿ’»íWP TPuCÕß××70ÐÛÛÛÓÓÓÕÕõìÙàà3ðïžžÞ^p¥»Üîÿõ“Ü¿Ì„.Œõ;xÐ+ü°¿öµšŽò²òŠûpô5j¦±ƒQžÇeré<µ¿Ìøj¨shhèÅ‹ßž?Ÿ˜xùr|||llljjrrttddxö«Y³ç€šõjxdtrrjl|üåÄÄóß^uÎÌ.û{<àëx4PëbûÏUeŽÌP3øóˆú:ãÛwþYû¶™Øý"ÃÃC‚ÀÖ÷À°(íËŠÇåeeHôÕJEû?d?™’²ŒÒ>ì£ýÕ4vÕÐW¹_¿ùB#G Ãμ…½¡¹ —•—W(š(‡™éË'%×îWÌþ³Oõ
ŒŽööŽ¾îéÉgöÎw¾Ï8ùæ‰J:Gª}½þçŽ
_Qÿ¸ŠúO°bsè\:.:›´ÛöNÈ]ÛßÁÃöEž.}}Ž›æ÷
opîqøÂaµMŽaöe)d{~IqI±ö/N<)ð£ ÕÕt(+«?+ë(åÖï3ø¦|&T|¦©ùÒxø(ùW’½ßþÝ爽oQÖ Uâ:ÇQ"qtØšå𳯛@íö¹ „ýfaÁ7ò
ó5;ðhòŤh½0ø¼0˜’§¬yüø±òå5“ÉcY‚íÞ
¸,8æ¦Llç”û fïv¶ëÇì¢+RéŽÍ_ÉöÍRéç¸}jÊy³¯ÏM ~ÐoÞ¸þÓ¢[š¹““/^LÑG†Sñ¯-&ƒÁ²µ±Y³:%X
êãÕ6<óPü—_Cƒ$dW¹ÛwöOwnÙ.ñ’Ú¼c'aï]ä1€ô4Döü’’‚| ÿ)¯DóçC¯%ǂ裣„”¾”A·²]a‹ÄŽþ|ü±¥ùR|ùRJƲΨÝYE¶ï8ôÀB’l_çƒÚUCÿ›q ÿ‘‚¢"€Ïm£e
Jºz59>6qºØÛ444´7h]á3¹`£daâm`<Ð[˜›[A×} †Çìãã¨=õÐpïè&éÄ>Û}ú{ç²\Ò£š»´¨Ž¾@«ã…þ i¢Â)SoR**ŠJ¸=Ï6粬¬,¡³HoCDomn
ßïñ±q0Î öY=¯ûlÈîŽÚŸCíîCØKïܾ]TXœŸG1Ôøú‡PÈkšuíÚÚÚZ[[Û•jc
ŸÎa¿g
ôšÑ¯^Í[
ÿMÆ5Ððˆ=¹Ó>m\åí¦šBsïÃrïqHêê‰uúŵ¿PmËÝOüLþí{wJoCÑkõÌkª¹¹®¡åáç`×ôäÉßÿþôAU}-~Õò—Ãf³¬µ£ÿØv)¼*ƒg§°Ý9ÛÝCîá$KrÚbowutõƒúýŠ§ËÙF7yœ“ر«–edfÕ›ÅwïݽSZZT’7sºRQÛÞ
Uì
ô•ÄÜÊaðt gY[kD¿fõÆð=pÓ v±8N.ƒ6¬ˆ,ßáqf·Ht|¯ìWÅÙ¨´LŠÉ‘_Pz÷îÛ%±…
¡E°0Tctoª¬ihoo‡úÂ#úbÇͤ3Mïs9µèW }c½ž`¿É¸üN'j—;'eîE^@§íÛ!;Ø8eÎÈãâQ{¿ê+òè*/¯zXµäÂȈðÐàPad¤Ú¼
vÙ`€Úý£ªFÌÎ51[̤Ž~¹%r´šŒ4¸}Ê[†¼øØrÚ7mÆì]³ {§]nÊ%
å›ÚýÀÀØ×÷@àaÒXÓ¨¨ônüf,x.}‰™‰Éb=¦_nn rÿ{HEaOõstpü“d‹¶ý9˜˜R´»C«¢Â¼BuáŒ"–’ʺæfeVôOUµcv33ýûPôxã@ø5|Ä~)%Ǿó7¼g^îÉ„íRçƒÓì¤Z=óRõnnÆ7jʼ‚âââ’’bõ¦‰
õó‚^ZáúDòJø<‹þŒú'-•hÓpè†Kàè™<:=‹4àX.F—d)9—:‡P{\Zú²LêЖï=Ô¾73-Ë]õ‰ú“ZPR’ŸêV^IañqxD€€?ŠGô^‰^èÅææ*E=¤oj"Gÿôa½³@z´ëÙøLìhîPðë;1{nôƒ iNê…O5ì*»œŒÿQ£ç…Øõë?ºQH5¡AAï‡ã}}…èÊ ¥¾ìóHÑ·#Ñ?li®ÅìFF††@FÏe]¿Â
³ÓR~¼:¤š@í1ÓØáw”}â—m9äØóón‚ºqãÌÇÇIÿÈ°ÐOŠÞ×íø¶fEuÀÃú¦Æâ™%Ùa=½)“žYö{¨~…³ŸLÉqÿõùLí¿¬ÏI¹FŠ½ôË[°¿o‚…Âp ?Fë}F"[›`ƒ]G_§Ä£oki%ìÆ5¢ÇºÞÖ·ÓR.çØuÂs“Xž–)ƒS/`v©ô‘H–™™–ÏMÝ/ü1ƒDÏÃ:ªG¢¿Uˆ\#z„îÁ¤èŒôGí•`
ð•h×#Ïlka_¨oðXô ëyØ"Á‚ÅÀí>)9é/:Ó}|â¼½½÷ìIüâ‹ç=°ýÏ¡‘‡FïÙs16ά Ž!íÅ%‹þ§ë¨=("
‡…]À+Ò±++¡£
XOŽ¾·ëë-\hL=À“ì´«g³Ý;ûŸ÷CGÈ)rÆb[í±_œsÎ’Ôü‚ÂÂ’bRôׯcöÃQ‘Xô˜Þ+Í]YUã‘g¶© êúöf’]_ൣ·b“ì´«§³;ûAML øô|†°÷ôº}ÎirÇ€‘½°Â“¢/(@퉇!==hœƒ~XîUåÑ7v½žˆž.YÉN»œžm¯zãÙRßTvz†º½¨àa==Éx‹>íz,÷Ÿ«Ë*Èx4ú0;›¾@GO‰ÞoSÐ8¯n? ðvª×ÛG=û²ú©L^Øu’£GíIþ0ÚõÈ€C¶—#ÉãÑ××Ac=Öïì÷è,X §½ =WÍNó¹,Û©^géLÎ>±v°ëP‹³G^„ð zâ™õ@ímÀæÑ£3Un§ëèÂxu=òÌréjvšOºXÚflûì‘ÞQqö©du:-/¿´ô¶zô„:@¢G»> ëwØN½²®ùƒy::Ñ›™ðùtõÜi´ät±ÜYÕ7]ÅéštÈ~ÒÑç£ö€ÈXŸHDŒæNCìd=}3jg®Ò›§««C=iáðNO“»wwÃG©šö®'¹8݇¦Y·òï;=4\â¹ÇAxrôà™ÅíUe$<1\Öס/Z¹«ŒæêBxµè®ç˜hAââceÞSÝãZöÁ®áòØtoo€ÜïÜEõDôhîqÒ“¢ÇÁʺ²²2Šèë›Ñƒ+k‰^½qù\ž¶„#“9u÷iØ»™ò˜x
:j'G_ŒÎMáqÉqÑG„‡£ßkz\¡ŽG¢¯Vâ/û–®5žëu°ÆAñF†lSà3Ež‹ú;t†í)ËŒ‰¥ºàKïÝÅõpôØMPôÕx<úh4zü[ÙTV¦ýýJ%~Êaa¾VàçiDodlÌã0µpýußqQ–Ë¢¾ÞÑ°ž™5k¸kŽXŠíÛC};íV!°£z8úló’|$DõG…‘ø÷jWiá+ª›Hïœ>\9ÇãÑë/\ÌZj;
†–ðR—Ù½½£³‡G,#GOw3t(FàKo—’6aaW¯%“¢OŠ"¿>P´W—©éËËï75“ÿJ„Á*K¹êÑë-Ðg®2Õ Õêð‘R©«`´wDàš*½räØkî¥åü½{ˆþÎ"ÒžÕ/<,ùÚÕääd”¦vžªh¨/WÓWwh¼Aà¸Ö@wî\Ø<·z†œUÄ_) ®]Ÿ¥J$›7H¤>ßµõõ÷æçݽ‡d_Z¤vF&£èxÔž”®þEå㎪Šr¬î×uÔ5ªß@c0W®43ÖC†xý…FK¸,®ÖЮ]Á;R¡s±Ô-o¼ô<Ødƒá:]Ò8¤ öãz8øGhXæ÷¾ã1R5Jí?ÙŠÇüƒ¥åJ¤¬þÀÓœP§©ÿòò:ô§ÝI£Ý̃
(®üðC¨à (¿×Þ„õ[í=°êå¢ïÊ8VøÇÿ ©/&ÿIEND®B`‚
「PNG」が出力の上部にもラベル付けされているのは奇妙だと思います-使用されているファイルはどれもPNGファイルではありませんが、Photoshopで一度に変換された可能性があります。
ディレクトリから画像ファイルを削除すると、文字化けした出力が消えます - おそらく DOMPDF がそれらをレンダリングしていないためです。PDF は引き続き作成されますが、今回は、欠落していることを示す小さな「X」マークとして画像が存在します。
I echo
before $dompdf->render()
and echo
after の場合echo
、文字化けした出力の前後に 'd コンテンツが表示されるため、(これもおそらく) 問題の関数です。
1 月 30 日以降に変更されたと思われる唯一の点は、ネットワーク マネージャーが PHP をバージョン 5.2.9 から 5.3 にアップグレードしたことです。
IIS を使用してこの Web サーバーをホストしています。
私は問題をグーグルで検索しようとしましたが、同じ問題を抱えている人は誰もいないようです. 誰か提案はありますか?
前もって感謝します、