0

我正在尝试通过将收据从 HTML 代码转换为 PDF 来为 Web 应用程序创建收据,以便在应用程序完成后可以下载它。我试图通过将目标 div 的内容分配给表单中的隐藏输入字段来将代码发送到 PHP 文件。在最后按下按钮时,点击执行下面的 js 函数,以及 PHP 文件:

function print() {
    var elem = document.getElementById("receipt").innerHTML;
    document.getElementById("hiddenhtml").value = elem;
}

以下是表格的大致轮廓:

<form method="post" action="htmlpdf.php" target="_blank">
    <div id="receipt">
        ------- CONTENT THAT I WANT IN THE PDF ----------
    </div>
    <input type="submit" onclick="print()" value="Print"/>
    <input id="hiddenhtml" type="hidden" value=""/>
</form>

hiddenhtml 是一个隐藏的输入字段。按下打印按钮后,收据 div 的内容将添加到隐藏输入字段的值中。然后我尝试按如下方式传递此值:

$html = $_POST['hiddenhtml'];
$pdf->writeHTML($html, true, false, true, false, '');

在 writeHTML 函数中使用它。但是,会返回一个空白 PDF 文件。我想知道是否可以将目标 div 的内容作为 writeHTML 方法中的参数传递。div 没有外部样式,并且包含文档中所有兼容的标签。

4

1 回答 1

1

您需要在文档中添加一个页面来呈现您的 html,然后您需要实际输出您的页面。请参阅示例 pdf 页面。您的代码应如下所示:-

$pdf = new TCPDF();
$pdf->AddPage('P');
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->Output();

我做了一些进一步的测试并创建了这个代码: -

if(isset($_POST['hidden'])){
    $pdf = new TCPDF();
    $pdf->AddPage('P');
    $html = $_POST['hidden'];
    $pdf->writeHTML($html);
    $pdf->Output();
}
?>
<form method="POST">
    <input name="hidden" type="hidden" value="
        <div>
            <h1>Receipt</h1>
            <p>Some stuff</p>
            <p>More stuff</p>
        </div>"/>
    <input type="submit" value="Submit"/>
</form>

其中,在提交时,给了我这个输出: -

在此处输入图像描述

如您所见,一个漂亮的 pdf 页面,其中呈现了我的 html。

我建议您将代码简化为这样简单的代码,以帮助排除故障。一旦你有了这个工作,你就可以增加复杂性。

于 2013-01-05T19:16:15.930 回答