使用 MPDF 将 HTML 保存为 PDF 和电子邮件

Posted

技术标签:

【中文标题】使用 MPDF 将 HTML 保存为 PDF 和电子邮件【英文标题】:Save HTML as PDF and email using MPDF 【发布时间】:2014-01-23 11:10:45 【问题描述】:

我需要能够以电子邮件的形式发送 php 页面的 html 的 PDF 版本(CSS 样式保持不变,因为某些标签在 @media print 子句中设置为 display: none)。

我发现mpdf 看起来相对简单,而且似乎是一个可靠的解决方案。该课程提供了即时email a PDF file 的能力。这很棒。

我的困境如下:

我想将page_1.php 的内容作为 url 变量发送到send_email.php 以用作 PDF 内容。

我试过存储这个变量:

ob_start(); // at the top of the page

    // THE DYNAMICALLY GENERATED PAGE CONTENT

$html = ob_get_contents(); // I put the page contents into a variable
ob_end_clean();

由于某种原因,这不会让页面完整加载。只显示几个标签。 ob_get_contents();ob_end_clean(); 位于末尾 </html> 标签之前。这是一个潜在的原因吗? 我需要在页面结束之前使用这些函数来利用我创建的实际“电子邮件链接”上的变量。

我也试过了:

$page_url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; // to grab the current url
$html = file_get_contents($page_url); // place contents in a variable

由于某种原因,这不允许加载网站上的任何页面。得到的只是浏览器 url 输入中的一个旋转轮。

即使我可以将页面的内容放入一个变量并将其解析为send_email.php,我如何在创建 PDF 时保留 CSS 属性?

javascript 替代方案会更可行吗?

任何帮助都会非常出色!

【问题讨论】:

PS:我想把php文件的OUTPUT转成PDF 会为您的目的包括工作吗?但是,如果您在 sendemail.php 中包含整个 page_1.php,为什么不在 page_1.php 中包含发送电子邮件的代码? @BFDatabaseAdmin,这可能会解决 CSS 样式保留的问题。但是我仍然需要将页面的内容放在一个变量中才能与 MPDF 一起使用.. 我没有使用过 MPDF,所以这是碰巧的东西,但 Curl 会帮助你吗? ***.com/questions/692962/… 【参考方案1】:

我已成功将 html 发布到 php 文件:

$html = $_POST['html'];
$head.= '<link rel="stylesheet" type="text/css" href="/app/css/app.css" /> ';
$head.= '<link rel="stylesheet" type="text/css" href="/app/css/pdf_style.css" /> ';
require_once 'mpdf/mpdf.php';
$mpdf = new mPDF('', 'Letter', 0, '', 12.7, 12.7, 12.7, 12.7, 0, 0);
$mpdf->WriteHTML($head.$html,0);

【讨论】:

以上是关于使用 MPDF 将 HTML 保存为 PDF 和电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

使用 ajax 和 mpdf 将 html 转换为 pdf

如何使用 php mpdf 库将多个 PDF 文件合并为一个 PDF

使用 mPDF 错误在 codeigniter 3 中将 html 导出并下载为 pdf 错误:找不到类“Mpdf\Mpdf”

在 mPDF 上呈现 CSS 的问题 - PHP

将背景图像复制到使用 mpdf 生成的 pdf 中的其他页面

如何使用 mPDF 和 CodeIgniter 保存 PDF 文件