0

一月底,我编写了一个脚本,使用 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 文件。一个只是一个简单的compile函数,它根据输入变量(即学生姓名、分数等)生成 HTML,另一个是:

/*
 * @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 已创建并保存,带有图像。

我今天回到它,发现两件事:

  1. 图像在保存的 PDF 中不起作用,但没有 X 表示它们丢失
  2. 有大量乱码文本输出,我怀疑可能是字符形式的图像

这是一些输出:

‰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¢‘&amp;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üç…¬Ý&lt;.“¥ÅÄŠÅ'Ôìß¾
; ³@ê¶+l–¯¶15§SÚÓO¸¯³÷ï“müè#O©§ÀÁQ°á?7§nu¹ot»˜–æážþÖí‡Áe[[ü
›Õ¶|sJ{¶ÊÙ]å$sëú=·
&'›\{¤®]_ˆ<ÃNrùG“ÙoÝÎg›,aÒ9,+K8z¶9>Ú¨Ûû=ävn²þuYY‹Æ¤Á|_‰ëÈ&amp;©ëà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?™’²ŒÒ&gt;ì£ýÕ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áŒ"–’ʺæfe­VôOUµcv33ýûPôxã@ø5|Ä~)%Ǿó7¼g^îÉ„íRçƒÓì¤Z=óRõnnÆ7jʼ‚âââ’’bõ¦‰
õó‚^ZáúDòJø<‹þŒú'-•hÓpè†Kàè™&lt;:=‹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‹&gt;í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öÁ®áòØto­o€ÜïÜ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”标记存在,表示它们丢失了。

如果我echo之前$dompdf->render()echo之后,echo'd 内容出现在乱码输出之前和之后 - 所以(再次,大概)这就是问题功能。

我认为自 1 月 30 日以来唯一改变的是我们的网络管理员将 PHP 从版本 5.2.9 升级到了 5.3。

我们使用 IIS 来托管这个网络服务器。

我试图用谷歌搜索这些问题,但似乎没有人遇到同样的问题。有没有人有什么建议?

提前致谢,

4

1 回答 1

0

升级到最新版本的 DOMPDF,现在我遇到了一个完全不同的问题。

于 2013-03-19T11:27:02.820 回答