【问题标题】:HOW TO FIX: output result generated by domPDF?如何修复:domPDF 生成的输出结果?
【发布时间】:2018-06-07 15:54:04
【问题描述】:

您好,这是我使用 domPDF 得到的。是我的最终结果,但显然我不希望这样,我希望我的页面以 PDF 格式打印。

我需要在用户浏览器中下载文件,而不是在本地主机中。

这是我的javascript:

$("#submit").click(function(){          
        $.post("converter/converter.php", {strHtml: $(".container-   fluid").html()}, function(data, status){
                alert("Data: " + data);
        });
    });

这是我的 php:

<?php
    require_once '../dompdf/autoload.inc.php';
    use Dompdf\Dompdf;

    $html = $_POST['strHtml'];

    $dompdf = new Dompdf();

    $dompdf->loadHtml($html);
    $dompdf->setPaper('A4', 'landscape');
    $dompdf->render();
    $dompdf->output('test.pdf', 'F');
 ?>

这是我想在 pdf 中显示的内容:

【问题讨论】:

  • 虽然在技术上是可行的,但它不仅仅是alert从您的 AJAX 调用返回。 PDF 文档是二进制格式,需要渲染。虽然大多数浏览器都支持呈现 PDF 内容,但通常必须是整个页面。
  • 您究竟想在这里做什么?显然,您想向服务器提交一些数据并呈现 PDF 文档。但是你为什么要通过 AJAX 请求来做这件事呢? Is that necessary?更简单的方法是将内容推送到隐藏变量中并正常提交表单。
  • 好的,如果我不想刷新页面,你如何提交带有行 的 ???
  • 您可以使用现有的方法,但不是 ajax,而是使用内容填充隐藏的表单变量并提交。

标签: php dompdf


【解决方案1】:

如果要将生成的 pdf 文件保存到磁盘。你不需要file_put_content()。但是您将两个参数传递给-&gt;output() 方法,如下所示:

$dompdf->output($path_to_new_file, 'F');

【讨论】:

  • 它似乎正在工作,但没有下载并保存在路径中的文件。 ajax可以吗??
  • $dompdf->output('test.pdf', 'F');
  • 如果它既不保存文件也不下载文件,你认为它工作的原因是什么?
  • 你提供了什么路径?它必须可由网络用户写入。检查它是否有权写入该特定目录。
  • 我需要在用户浏览器中下载文件,而不是在本地主机中
【解决方案2】:

如果您想提交浏览器中存在的页面,则必须捕获内容(就像您所做的那样),然后,而不是通过 AJAX 请求提交,将该内容推送到表单中并提交该表单。

$("#submit").click(
  function() {
    $('#strHtml').val($(".container-fluid").html());
    $('#makePdfForm').submit();
  }
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class=".container-fluid">
  <p>Some stuff here, rendered dynamically on the client</p>
</div>

<form action="converter/converter.php" method="post" id="makePdfForm">
  <input name="strHtml" id="strHtml" type="hidden" value="">
  <button type="button" id="submit">Make PDF</button>
</form>

那么你的 PHP 变化很小:

<?php
require_once '../dompdf/autoload.inc.php';
use Dompdf\Dompdf;
$html = $_POST['strHtml'];
$dompdf = new Dompdf();
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$dompdf->stream('test.pdf');
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-22
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    相关资源
    最近更新 更多