0

我正在制作一个使用数据库中的值生成的动态 html 页面。用户可以选择“隐藏” div 和操作页面上的其他元素。我想将页面上的所有 HTML 发送到 DOMPDF 并让它为我生成一个下载链接。

<a href="dl.php">Download</a>

其中 dl.php 会有这样的东西,其中 html 被发送到 DOMPDF 并生成:

$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("myCV.pdf");

但是,由于用户正在操作页面上的 DOM,并且我想摆脱链接之类的东西,所以我使用 jquery 来获取 html

   $('a').wrap('<span style="display:none;"></span>');
   var fullhtml = $("#body").html();
   fullhtml = encodeURIComponent(fullhtml);

annnndd 因为它是一个大页面,我不能使用 GET,必须使用 POST 来发送 html。我将如何获得它,以便我可以使用 html 对 dl.php 进行 AJAX 调用,并且只是“包含”页面以便它运行?如果我从 AJAX 调用返回任何内容,则 pdf 文件将转换为一团糟的文本。

4

1 回答 1

3

我不确定我是否完全理解您的问题,但据我了解,您正在获取页面的 HTML,隐藏所有链接,然后将整个内容提交到 POST 请求中dl.php,对吗?所以dl.php会这样说:

$html = urldecode($_POST['html']);
$dompdf = new DOMPDF();
$dompdf->load_html($html);
//...

对?

您可以让用户通过单击链接来启动此过程,此时您在提交发生之前使用已处理的 HTML(隐藏链接等)填充带有隐藏输入的表单,即:

$('a#submit_link').click(function() {
  // wrap links, etc. here
  var html = $("body").html();
  $('#hidden_form_input').val($html);
  $('#hidden_form').submit();
});

然后像这样的东西应该向您的用户展示生成的 PDF。

于 2011-08-08T22:10:50.717 回答