3

有没有什么好的方法可以让用户将页面保存为文件以供以后干净查看,可能是PDF?需要尊重@media print CSS。

考虑的选项:

  1. http://www.web2pdfconvert.com - 样式是超基本的并且不考虑@media print - 如果它使用@media print CSS 是可以接受的
  2. 触发打印到文件的“打印”按钮,例如 Microsoft XPS Document Writer - 我的理解是这是不可行的,如果用户理解他们可以轻松打印到文件,他们就不需要按钮
  3. Word doc - 具有可编辑的优点,但我的理解是这非常复杂,尤其是动态格式
  4. 按钮打开一个单独的 PHP 文件,该文件提供 pdf,就像使用http://www.fpdf.org/一样- 我的理解是重新创建我已经用 CSS 制作的格式会有大量工作,并且可能无法100% 到达那里
  5. 使用 Word 保存可查看的 html - 因为 CSS 在单独的文件中,所以很难通过电子邮件发送,而且 Word 无论如何处理 CSS 都很差

有没有我想念的更简单的方法?或者是克服我在这些选项之一中发现的障碍的好方法?

4

1 回答 1

0

我以前不得不这样做,所以我知道你的痛苦。让我告诉你我的解决方案,然后给你正确的代码。

我决定让用户下载整个页面的 PDF。我想要一个将 HTML 呈现为 PDF 的库。此外,我知道我需要与我的核心站点不同的 CSS。但是,我不想复制它(比如媒体查询支持......用于制作新的换行符等)。因此,我最终使用了投影仪的媒体类型 dompdf,并通过使用 Zend Framework 的一些内置工具加载我的同一页面来加载我的网站。(此解决方案不需要 ZF)。

让我们这样做(哦 - 是的,这不是完美的,但它会让你非常接近!)

1)下载domPDF

2) 在 dompdf_config.custom.inc.php 文件中,取消注释或添加或任何以下行(是的,这并不完美,但我不知道有多少投影仪使用这种媒体类型):

define("DOMPDF_DEFAULT_MEDIA_TYPE", "projection");

3)然后,修改您的 CSS 以具有媒体查询:

@media projection {
    // all of your css to make sure this works fine - like page breaks
}

4) 当然,最后使用 file_get_contents() 或 curl 之类的方法获取整个页面。

这是我最后一段代码的样子($html = 要保存的页面的全部内容)

require_once(APPLICATION_PATH . '/../library/dompdf/dompdf_config.inc.php');
$dompdf = new DOMPDF();
$dompdf->set_protocol('http://');
$dompdf->set_host($options->domain);
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream('Printed.pdf');
于 2013-02-19T02:40:17.720 回答