11

有人可以告诉我如何解决以下问题吗?

  1. wkhtmltopdf 没有选项来传递代理信息(-p 或 --proxy),这与以前的版本不同,并且它也没有使用系统 $http_proxy 和 $https_proxy 环境变量。

  2. 即使我为 libssl.so 和 libcrypto.so 设置了 LD_LIBRARY_PATH,wkhtmltopdf 也无法使用 HTTPS/SSL

    [deploy@localhost ~]$ wkhtmltopdf https://www.google.co.in google.pdf
    loaded the Generic plugin 
    Loading page (1/2)
    Error: Failed loading page https://www.google.co.in (sometimes it will work just to ignore this error with --load-error-handling ignore)
    Exit with code 1 due to network error: UnknownNetworkError
    

    [deploy@localhost ~]$ wkhtmltoimage https://www.google.co.in sample.jpg
    loaded the Generic plugin 
    Loading page (1/2)
    Error: Failed loading page https://www.google.co.in (sometimes it will work just to ignore this error with --load-error-handling ignore)
    Exit with code 1 due to network error: UnknownNetworkError
    
  3. wkhtmltopdf 部分使用 HTTP。输出 pdf 文件缺少一些内容/背景/位置。

    [deploy@localhost ~]$ wkhtmltopdf http://localhost:8880/ sample.pdf
    loaded the Generic plugin 
    Loading page (1/2)
    Printing pages (2/2)                                               
    Done                                                           
    Exit with code 1 due to network error: ContentNotFoundError
    
    [deploy@localhost ~]$ wkhtmltoimage http://localhost:8880/ sample.jpg
    loaded the Generic plugin 
    Loading page (1/2)
    Rendering (2/2)                                                    
    Done                                                               
    Exit with code 1 due to network error: ContentNotFoundError
    

注意:我使用 wkhtmltopdf-0.12.1-1.fc20.x86_64 和 qt-4.8.6-10.fc20.x86_64

4

4 回答 4

3

不幸的是wkhtmltopdf,它不处理复杂网站的下载,因为它使用 Qt/QtWebKit 库,这似乎有一些问题。

一个问题是wkhtmltopdf不支持相对地址(GitHub:#1634#1886#2359QTBUG-46240),例如:

<img src="/images/filetypes/txt.png">
<script src="//cdn.optimizely.com/js/653710485.js">

并将它们加载为本地。我发现的一种解决方案是通过ex就地编辑器就地纠正html文件:

ex -V1 page.html <<-EOF
  %s,'//,'http://,ge 
  %s,"//,"http://,ge 
  %s,'/,'http://www.example.com/,ge
  %s,"/,"http://www.example.com/,ge
  wq " Update changes and quit.
EOF

但是,它不适用于在远程具有这些类型的 URL 的文件。

另一个问题是它不能处理丢失的资源。您可以尝试指定--load-error-handling ignore,但在大多数情况下它不起作用(参见#2051),所以这仍然很出色。解决方法是在转换之前简单地删除这些无效资源。

或者,wkhtmltopdf您可以使用PhantomJS和一些额外的脚本,例如使用rasterize.jshtmldoc

phantomjs rasterize.js http://example.com/

dompdf(PHP 的 HTML 到 PDF 转换器,您可以通过 composer 安装),示例代码如下:

<?php
// somewhere early in your project's loading, require the Composer autoloader
// see: http://getcomposer.org/doc/00-intro.md
$HOMEDIR = "/Users/foo";
require $HOMEDIR . '/.composer/vendor/autoload.php';

// disable DOMPDF's internal autoloader if you are using Composer
define('DOMPDF_ENABLE_AUTOLOAD', FALSE);
define('DOMPDF_ENABLE_REMOTE', TRUE);

// include DOMPDF's default configuration
require_once $HOMEDIR . '/.composer/vendor/dompdf/dompdf/dompdf_config.inc.php';

$htmlString = file_get_contents("https://example.com/foo.pdf");

$dompdf = new DOMPDF();
$dompdf->load_html($htmlString);
$dompdf->render();
$dompdf->stream("sample.pdf");
于 2015-05-20T14:57:43.467 回答
2

我的问题已解决,从 css 中删除 @font-face。

于 2017-11-18T10:31:15.797 回答
0

我以前遇到过这个问题。并像下面这样解决。

wkhtmltopdf

在上面的示例中,我有一些“src”文件和“url”,它们引用了静态目录,但静态目录不存在,所以 wkhtmltopdf 向我抛出了那个错误。例如:

src: url("file:///home/ehsan/Projects/Example/main/sib/ static /WebYekan.eot");

我要说的更重要的一件事是 html 文件中的所有文件路径都必须是绝对路径。根本不要使用相对路径。

我希望这对你有帮助。

于 2020-05-20T09:30:15.893 回答
0

我搜索了很多但找不到但终于在这里找到了。我正在使用 (./name) 但这会产生 contentnotfound 错误。

但最后使用了完整的地址,得到了想要的结果

于 2020-05-28T13:12:02.923 回答