我想生成一个网页的 PDF,但应用一个备用的打印类型样式表,而不是它现在使用的样式。例如,我在http://eorailway.co.uk上有一个按钮来生成同一页面的 PDF(由我运行和管理,因此我可以包含每个页面所需的任何 PHP/JS)但我想在生成 PDF 之前对其应用替代样式。
目前,我正在使用 dompdf PHP 库使用普通/默认样式表生成 PDF,但我一生都无法想到单击“生成 PDF”按钮时如何将备用样式表应用于页面。
任何建议都非常感谢。
我想生成一个网页的 PDF,但应用一个备用的打印类型样式表,而不是它现在使用的样式。例如,我在http://eorailway.co.uk上有一个按钮来生成同一页面的 PDF(由我运行和管理,因此我可以包含每个页面所需的任何 PHP/JS)但我想在生成 PDF 之前对其应用替代样式。
目前,我正在使用 dompdf PHP 库使用普通/默认样式表生成 PDF,但我一生都无法想到单击“生成 PDF”按钮时如何将备用样式表应用于页面。
任何建议都非常感谢。
由于站点处于控制之下,因此您可以根据查询字符串参数动态决定要包含哪些样式表。即http://example.com/page.php?stylesheet=print将使您的模板仅输出备用样式表,并且您的 PDF 库将获取该页面以生成。
我建议制作一个应用了“打印”样式表的备用页面,并使用打印元标记指向它。(例如<link rel="alternate" media="print" href="<? ECHO $_SERVER['PHP_SELF'].'?print'; ?>"">
)
然后让 PHP 根据该 GET 变量的存在来确定要使用的样式表。
您可以使用 php 中的 DOMXML 内容将特定的 XSLT 文件应用于某些 XML:
$stylsheet = "Example.xsl";
$xsldoc = domxml_xslt_stylesheet_file($stylsheet);
$htmldoc = $xsldoc->process($xmldoc);
$results_page = $xsldoc->result_dump_mem($htmldoc);
那是我在 php4 中所做的事情,在 5 中可能是一种更简单的方法。
在 DOMPDF 的 0.6.0 版本中,您可以通过修改 DOMPDF_DEFAULT_MEDIA_TYPE 配置常量来指定要使用的样式表。
http://code.google.com/p/dompdf/source/browse/trunk/dompdf/dompdf_config.inc.php?r=336#234