【问题标题】:print to pdf with php?用php打印成pdf?
【发布时间】:2011-05-31 23:04:21
【问题描述】:

我有一张类似以下发票的表格

<!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"
 dir="<?php echo $direction; ?>"
 lang="<?php echo $lang; ?>"
 xml:lang="<?php echo $lang; ?>">
 <head> <title><?php echo $title;
 ?></title> <link rel="stylesheet"
 type="text/css" href="theme/<?php echo
 $template;
 ?>/stylesheet/stylesheet.css" />
 <style type="text/css"> body {
 background: #FFFFFF; } </style>
 </head> <body>

 <div style="page-break-after: always;
 "> <table width="100%">   <tr>
     <td width="auto" align="left"><a href="<?php echo $url_logo; ?>"
 title="<?php echo $_name; ?>"><?php
 echo "<img src=".$logo." alt=\"Logo
 Store\" style=\"border: none;\" />";
 ?></a></td>
     <td width="*" valign="middle"><h1><?php echo
 $heading_title; ?></h1></td>   </tr>
 </table><div class="line"></div>  
 <div class="div_">
     <table width="100%">
       <tr>
         <td>  
           <?php echo $_address; ?><br />
          <?php if ($telephone) { ?>
           <?php echo $store_telephone; ?><br />
           <?php } ?>
           <?php echo $_email; ?><br />         </td>
         <td align="right" valign="top">        <table>
             <?php if ($invoice_id) { ?>
             <tr>
               <td><b><?php echo $txt_invoice_id; ?></b></td>
               <td>:&nbsp;<?php echo $invoice_id; ?></td>
             </tr>
             <?php } ?> <?php if ($historys) { ?> <?php foreach ($historys as $history) { ?
             <tr>
               <td><b><?php echo $column_date_added; ?></b></td>
               <td>:&nbsp;<?php echo $history['date_added']; ?></td>
             </tr>
             <tr>
               <td><b><?php echo $column_status; ?></b></td>
               <td>:&nbsp;<?php echo $history['status']; ?></td>
             </tr>      <?php } ?>      <?php } ?>
             <tr>
               <td><b><?php echo $txt_order_id; ?></b></td>
               <td>:&nbsp;<?php echo $order_id; ?></td>
             </tr>      <?php if ($shipping_method) { ?>
             <tr>
               <td><b><?php echo $txt_shipping_method; ?></b></td>
               <td>:&nbsp;<?php echo $shipping_method; ?></td>
             </tr>      <?php } ?>
             <tr>
               <td><b><?php echo $txt_payment_method; ?></b></td>
               <td>:&nbsp;<?php echo $payment_method; ?></td>
             </tr>
           </table>
          </td>
       </tr>
     </table>   </div> </div> </body> </html>

通过http://www.mysite.com/index.php?print=page/invoice&id=952访问的发票表格 发票扩展名是 .tpl

我尝试过使用 FPDF (http://www.fpdf.org/),但失败了,而且 FPDF 似乎与 css 不匹配,然后我尝试使用 tcpdf (http://www.tcpdf.org )关于来自http://www.tcpdf.org/examples/example_054.phps,但只有php代码可见的错误:例如&lt;?php echo $history['status']; ?&gt;

是否有人已经有经验或有问题?请在这里分享,或有相同的样品?提前致谢

【问题讨论】:

  • 您想从 HTML 代码生成 PDF,对吗?
  • 尝试使用 dompdf。 code.google.com/p/dompdf
  • @Pekka,我想从上面显示的发票页面生成pdf,里面包含一些php代码,谢谢
  • @kinjal,我听说 dompdf 有很多安全漏洞,例如开发。许多软件开发人员从他们的软件中删除了有关该安全问题的 dompdf

标签: php pdf printing


【解决方案1】:

最大的问题是,没有库可以很好地处理 html 代码。

dom-pdf 是一个非常好的文件,但在嵌套表格和分页符方面仍然存在巨大问题。我想,出于你的原因,它应该可以解决问题。它还可以处理一点css。

关于安全问题: 要解决 DOMPDF 的安全问题,只需对 DOMPDF 稍作修改,使其仅在 cgi 模式下运行,防止来自外部源的任何访问,并且只能从您的应用程序中调用。

如果您可以自己创建表格,我强烈建议您使用 fpdf。您将无法处理任何 css,但 fpdf 有许多格式化可能性。

对于 dom-pdf,您有来自上面 kinjal 的链接。还有你已经找到的fpdf。

【讨论】:

  • “没有库可以很好地处理 html 代码” - 所以像我建议的那样,把它留给一个久经考验的渲染引擎吧。
  • 嗨,我对 pdf 库的任何东西都不熟悉,但是使用 fpdf 对我来说似乎是硬代码,因为一切都需要先创建,dompdf 似乎比 fpdf 容易但有很多安全风险,现在我想看看另一种选择,例如tcpdf、html2pdf (html2pdf.fr/en/default) 或 wkhtmltopdf 有人有经验吗?谢谢你的建议
  • 如果只是时间问题,我想您将需要相同的时间来设置后面的建议之一,并找到 fpdf 类。提示:专注于多细胞而不是细胞。
  • dompdf 使用起来相当简单。存在一个安全问题,但它取决于您的配置并且很容易解决(如 helle 所述)。此外,只需传入发票的 URL 即可轻松转换发票。
【解决方案2】:

wkhtml 使用 WebKit 渲染引擎,因此产生了奇妙的结果。有关详细信息,请参阅我在 Converting html to pdf in php? 上的回答。

【讨论】:

  • 是的,它看起来很棒,但我仍在搜索关于我上面的发票代码的示例,你知道吗?谢谢
  • @user 发票的文件格式是什么?我们都假设 HTML,但也许不是。
  • 我的发票文件格式是.tpl 用作模板站点,.tpl 文件里面有很多如上所示的php代码。
【解决方案3】:

正如 Helle 所说,FPDF 是一个非常巧妙的从 PHP 生成 PDF 的工具。虽然使用 FPDF,但您必须深入研究它的手册,因为它不会将 HTML 转换为 PDF。不过,根据我的经验,FPDF 使用起来相当简单,您应该不会遇到太多麻烦。

【讨论】:

  • 我尝试了几次,但我还没有运气,这对我来说似乎很难编码。
猜你喜欢
  • 2010-10-29
  • 1970-01-01
  • 1970-01-01
  • 2016-09-24
  • 2023-03-06
  • 2012-03-31
  • 2016-09-24
  • 2011-07-31
  • 1970-01-01
相关资源
最近更新 更多