распечатать в pdf с помощью php? - PullRequest
2 голосов
/ 29 декабря 2010

У меня есть форма, подобная следующей накладной

<!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 код: например <?php echo $history['status']; ?>

У кого-нибудь уже есть опыт или есть проблемы? пожалуйста, поделитесь здесь, или есть тот же образец? заранее спасибо

Ответы [ 3 ]

3 голосов
/ 29 декабря 2010

Как сказала Хелле, FPDF - действительно удобный инструмент для создания PDF-файлов из PHP.Хотя, используя FPDF, вам придется изучить его руководство, поскольку оно не конвертирует HTML в PDF-файлы.По моему опыту, FPDF довольно прост в использовании, и у вас не должно быть особых проблем с ним.

3 голосов
/ 29 декабря 2010

Большая проблема в том, что нет библиотеки, которая могла бы так хорошо обрабатывать HTML-код.

dom-pdf очень хороший, но все еще есть огромные проблемы с вложенными таблицами и разрывами страниц. по твоей причине это должно сработать, я думаю. Он также может немного обрабатывать CSS.

к вопросу безопасности: Чтобы решить проблему безопасности DOMPDF, достаточно лишь слегка изменить DOMPDF, чтобы он функционировал только в режиме cgi, предотвращая любой доступ из внешних источников и вызывая только из вашего приложения.

если вы можете создать таблицу самостоятельно, я настоятельно рекомендую использовать fpdf. Вы не сможете обрабатывать CSS, но есть много возможностей форматирования с помощью fpdf.

для DOM-PDF у вас есть ссылка с Kinjal выше. и fpdf вы уже нашли.

1 голос
/ 29 декабря 2010

wkhtml использует механизм рендеринга WebKit и, как таковой, дает фантастические результаты.Смотрите мой ответ на Преобразование HTML в PDF в PHP? для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...