我正在使用knp snappy包从我的应用程序生成报告。但不工作,当我调用我的控制器生成pdf抛出下一个错误:
The exit status code '1' says something went wrong:
stderr: "Loading pages (1/6)
[> ] 0%
[======> ] 10%
[=======> ] 12%
Warning: Failed to load file:///gestionresiduospel/web/bundles/usuario/css/bootstrap.css (ignore)
Warning: Failed to load file:///gestionresiduospel/web/bundles/usuario/js/bootstrap.js (ignore)
[============================================================] 100%
Counting pages (2/6)
[============================================================] Object 1 of 1
Resolving links (4/6)
[============================================================] Object 1 of 1
Loading headers and footers (5/6)
Printing pages (6/6)
[> ] Preparing
[============================================================] Page 1 of 1
Done
Exit with code 1 due to network error: ContentNotFoundError
"
stdout: ""
command: "C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe" --lowquality "C:\Users\rodrigo\AppData\Local\Temp\knp_snappy5682878973ade7.09664058.html" "C:\Users\rodrigo\AppData\Local\Temp\knp_snappy56828789746968.46649162.pdf".
我的控制器是这样的:
public function historicosDetallePdfAction($id)
{
$em = $this->getDoctrine()->getManager();
//gets residuos peligrosos.
$solicitudRetiro= $em->getRepository('SolicitudRetiroBundle:SolicitudRetiro')->find($id);
//gets residuos no peligrosos
$residuosPRetirados = $em->getRepository('SolicitudRetiroBundle:RetiroResiduo')->findResiduos($id);
//retorna los residuos no peligrosos en la solicitud
$residuosNPRetirados = $em->getRepository('SolicitudRetiroBundle:RetiroResiduoNoPeligroso')->findResiduosNoPeligrosos($id);
// view generator
$html = $this->renderView('SolicitudRetiroBundle:Pdf:resumenSolicitudResiduoRetirado.html.twig', array(
'solicitudRetiro' => $solicitudRetiro,
'residuosRetirados' => $residuosPRetirados,
'residuosNoPel' => $residuosNPRetirados ));
// pdf generator
return new Response(
$this->get('knp_snappy.pdf')->getOutputFromHtml($html),
200,
array(
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'attachment; filename="historico.pdf"'
)
);
}
我复制了我的网址,并运行到控制台[CMD]与wkhtmltopdf.exe。在控制台我的pdf文件被创建,但当我看到的文件只显示我的登录屏幕。所以我认为可能是一个问题的权限进入我的控制器,但我不知道我如何通过这一点。
在另一方面,如果你知道另一个pdf生成器(从html),工作到symfony这可能是帮助我太多。
我在symfony2.7下工作
5条答案
按热度按时间qkf9rpyu1#
这意味着您的HTML文件中的一个资源不能被wkhtmltopdf加载,如果您的所有资源都有这样的绝对URL,请检查您的HTML文件:http://www.yourserver.com/images/myimage.jpg
如果不是这种情况,请尝试进行设置:
如果您正在加载
{% stylesheets %}
或{% javascript %}
或{% image %}
中具有assetic的资产,您还可以执行以下操作oknwwptz2#
我曾经遇到过两种问题:
第一个是因为kpn snappy在尝试转换 *.js文件时失败了。所以我不得不在我的情况下使用 *.js文件。
第二个问题是路径的问题。我必须使用绝对文件系统路径。我的意思是,类似于:
/home/ubuntu/workspace/bootstrap/css/bootstrap.css
这是用在href标签中使用的 *html.twig文件,然后由snappy转换为pdf。通过这样做,我使用了一些twig全局变量。
在树枝上
mhd8tkvw3#
可以使用
absolute_url()
分支函数{{ absolute_url(asset('assets/image.jpg')) }}
yuvru6vn4#
对我来说,这是工作,错误来自html
scyqe7ek5#
这个问题永远不会变老,我刚刚遇到了这个问题,我设法解决了它,这里是如何。
这个问题大多发生在Windows中,所以这个解决方案是针对这个问题的。
1.安装此编写器依赖项wemersonjanuario/wkhtmltopdf-windows
2.打开您的config/snappy.php并使用此配置。
3.确保您为pdf加载的刀片文件不包含外部链接,如下所示。
4.确保使用public_path()加载资源