繁体   English   中英

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

[英]How to convert html code in database to plain-text in fpdf output in PHP?

我讨厌冗长的问题,但是由于我是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中时,输出将按预期进行。 read.php的图像

但是当我使用fpdf将页面生成为pdf时,输出是这样的, 而不是预期的

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

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

当尝试将html转换为pdf时,我发现wkhtml是可用的最佳免费工具。 可以在http://wkhtmltopdf.org/上找到它,也可以通过linux软件包管理器(通常通过apt-get install wkhtmltopdf )在许多发行版中进行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类的fpdf来创建pdf。 您必须自己从html创建纯文本值。 这将为您提供灵活性,但您必须完全自行处理数据。
  2. 有一些库可以将html直接转换为pdf。 所有这些库将仅实现html / css的子集,因此您将必须采用样式来满足使用中的库的功能。

实际上这不是一个完整的答案。 只是分享一个想法: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(); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM