将 URL 传递给 CakePdf

Passing a URL to CakePdf

使用 CakePHP 2.6.7

在使用 Wkhtmltopdf 引擎时使用 wkhtmltopdf I can simply run from the command line wkhtmltopdf http://url/of/my/website some_name.pdf but I can find no way to pass a URL in this manner through CakePdf 生成 PDF 时。我能得到的最接近的是使用 file_get_contents(http://my/website) 然后手动检查结果并将 stylesheets/scripts 的相对 URLs 转换为完整的 URLs.

有没有办法将 URL 传递给 CakePdf?或者,通过 HTML 负载并将相关链接转换为完整链接的最佳方法是什么?

部分解

目前我已经设法使用以下代码来操作页面上的链接并用完整的 url 替换它们。

$parsed_web_address = parse_url($this->request->data['ArmawareHtmlToPdf']['web_address']);
$root_web_address = $parsed_web_address['scheme'] . '://' . $parsed_web_address['host'] . '/';

$html_string = str_replace('href="/', 'href="' . $root_web_address, $html_string);
$html_string = str_replace('src="/', 'src="' . $root_web_address, $html_string);

没有。据我所知,您不能通过 CakePdf 传递 URL。该插件的全部目的是将从您的 Cakephp 应用程序生成的 html 转换为 wkhtmltopdf。因此,将 url 传递给外部 html 源没有多大意义。

我的建议是使用 proc_open() 直接使用 wkhtmltopdf。查看 CakePdf 插件中的 WkHtmlToPdfEngine.php 文件,了解将其与 wkhtmltopdf 一起使用的示例。

http://php.net/manual/en/function.proc-open.php