如何将数据库中的html代码转换为PHP中的fpdf输出中的纯文本?

时间:2016-01-28 06:13:15

标签: php html xampp tinymce fpdf

我讨厌冗长的问题,但因为我是PHP的新手我正在编写完整的代码。请不要我。 我试图在Xampp中生成一个 PHP发票,其中包含" tinymce文本编辑器"在表单中,我用来编辑内容。 这是create.php页面

  <script src='js/tinymce.min.js'></script>
  <script>
  tinymce.init({
      selector: '#mytextarea',  
        plugins: [
                  'advlist autolink link image lists charmap print preview hr anchor pagebreak spellchecker',
                  'searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking',
                  'save table contextmenu directionality emoticons template paste textcolor'
                ],

      a_plugin_option: true,
      a_configuration_option: 400
    });

  </script>

我在编辑器中编辑的内容是一个包含nxn单元格的表格,但数据 以HTML代码保存在数据库中。

<table>
   <tbody>
       <tr>
        <td>Sl.NO</td>
        <td>Some Text</td>
        <td>Some more TExt</td>
        </tr>
    <tr>
        <td>1</td>
        <td>Some Text</td>
        <td>Some more TExt</td>
        </tr>
        </tbody>
        </table>

当我将数据检索到read.php时,输出正按预期进行。 Image of read.php

但是当我使用fpdf将页面生成为pdf时,输出是这样的, not as expected

我同时尝试了html_entity_decode和strip_tags html_entity_decode(strip_tags($data['content']))

我只是希望pdf与read.php相同..只是帮助我,我需要集中精力来获得我想要的东西, 在此先感谢。

2 个答案:

答案 0 :(得分:1)

在尝试将html转换为pdf时,我发现wkhtml是最好的免费工具。它可以在http://wkhtmltopdf.org/找到,或者通过linux包管理器(通常通过apt-get install wkhtmltopdf)在许多发行版上安装。这个工具的好处是它使用webkit浏览器引擎来真正渲染网页,就像浏览器一样,包括html和css。这意味着您可以使用所有可用的CSS样式来格式化发票。

如果您的php解释器可以访问并执行wkhtmltopdf文件,那么转换就像这样简单:

wkhtmltopdf http://your.domain/read.php /my/path/invoice.pdf

在php中,您可以使用exec()

执行此操作
$url = escapeshellarg('http://your.domain/read.php');
$filePath = escapeshellarg('/my/path/invoice.pdf');
exec('wkhtmltopdf ' . $url . ' ' . $filePath);

备选方案:

  1. 使用像fpdf这样的库来创建pdf。您必须自己从html创建纯文本值。这将为您提供灵活性,但您必须完全自己处理数据。
  2. 有一些库承诺将html直接转换为pdf。所有这些库只会实现html / css的子集,因此您必须采用样式来满足所使用库的功能。

答案 1 :(得分:0)

实际上这不是一个完整的答案。只是分享一个想法: HTML页面

<div id="htmltable">
    <table>....</table>
</div>

在js文件中从div获取内容并将其传递到PDF生成的位置:

htmltable = $( "#htmltable" ).html();

从js获取传递的html数据:

$pdf=new PDF_HTML();
$pdf->AliasNbPages();
$pdf->SetAutoPageBreak(true, 15);
$pdf->AddPage();
$pdf->SetFont('Arial','B',14);
$htmlTable = '<div id="htmltable"><table>....</table></div>';
$pdf->WriteHTML2($htmlTable);
$pdf->Output();