使用 mPDF 从 HTML 表单创建 PDF

Posted

技术标签:

【中文标题】使用 mPDF 从 HTML 表单创建 PDF【英文标题】:Using mPDF to create a PDF from a HTML form 【发布时间】:2012-07-23 22:32:09 【问题描述】:

我想使用 mpdf 创建我的 PDF 文件,因为我使用挪威字母,例如 ÆØÅ。 PDF 文件上的信息主要由用户以 html 形式编写的文本组成。但是,我有一些问题。

使用此代码时:

$mpdf->WriteHTML('Text with ÆØÅ');

PDF 将显示特殊字符。

但是当使用这个时:

<?php
include('mpdf/mpdf.php');

$name = 'Name - <b>' . $_POST['name'] . '</b>';

$mpdf = new mPDF();

$mpdf->WriteHTML($name);

$mpdf->Output();
exit;

?>

特殊字符不会显示。

HTML 表单如下所示:

<form action="hidden.php" method="POST">
    <p>Name:</p>
    <input type="text" name="name">

   <input type="submit" value="Send"><input type="reset" value="Clear">
</form>

为什么用这种方法不显示特殊字符?我应该使用哪种方法?

【问题讨论】:

这可能是一些编码问题。尝试 $mpdf->WriteHTML(utf8_encode($name)); 作为开始。您的网站是 UTF8 还是 Latin1 编码的?您应该以相同的编码获得 POST 数据,也许您需要另一个用于 mpdf。 使用 $mpdf->WriteHTML(utf8_encode($name));没解决。 文档说它支持 UTF8 编码的 HTML,所以这似乎不是问题。在网页上回显 $name 会产生预期的结果,我猜? 回显时字符不显示。 所以这不是 mpdf 的问题,而是您的网站的一般问题。我刚刚检查了我的网站,我安装了一些聊天工具,并且你的角色工作正常。我在那里做的唯一一件事就是用 utf8 对整个网站进行编码,并在 POST 数据上使用 htmspecialchars() 来防止恶意内容,但这在这里应该没有效果。你设置了编码吗? 【参考方案1】:

由于将 POST 数据回显到网站上也不会显示字符,这显然不是 mpdf 的问题。在使用包含非 Ascii 字符的内容时,必须特别注意网站的字符编码。

从 mpdf 文档中可以看出它支持 UTF-8 编码,因此您可能希望将其用于您的数据。以网站使用的相同编码接收 POST 数据。因此,如果网站是 latin-1,您需要调用 utf8_encode() 将 POST 数据转换为 unicode。如果网站已经使用 UTF-8 应该没问题。

如果您没有在网站标题中设置特定的编码(您应该始终避免这种麻烦),编码可能取决于几个因素,例如服务器上的操作系统和配置或原始 php 源文件,事实证明,它受您自己的操作系统配置和编辑器选择的影响。

【讨论】:

以上是关于使用 mPDF 从 HTML 表单创建 PDF的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 中使用 mPDF 从现有 PDF 将每个页面创建为 PDF

mPDF 错误:无法创建输出文件

空 HTML textarea 输入未显示在 mPDF 生成的 PDF 中

创建更大的 pdf 时,mpdf 内存太低

从 HTML 生成带有 <SELECT> 表单字段的 PDF 总是显示多行下拉菜单

每行表上的 Mpdf 底部边框