使用wkhtmltopdf时如何处理ContentNotFoundError?

2024-01-03

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

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

  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
    

    and

    [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


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

一个问题是wkhtmltopdf不支持相对地址(GitHub:#1634 https://github.com/wkhtmltopdf/wkhtmltopdf/issues/1634, #1886 https://github.com/wkhtmltopdf/wkhtmltopdf/issues/1886, #2359 https://github.com/wkhtmltopdf/wkhtmltopdf/issues/2359, QTBUG-46240 https://bugreports.qt.io/browse/QTBUG-46240) 例如:

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

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

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 https://github.com/wkhtmltopdf/wkhtmltopdf/issues/2051),所以这仍然是突出的。解决方法是在转换之前简单地删除这些无效资源。

或者wkhtmltopdf,您可以使用htmldoc, PhantomJS http://phantomjs.org/使用一些附加脚本,例如使用光栅化.js https://github.com/ariya/phantomjs/blob/master/examples/rasterize.js:

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

or dompdf https://github.com/dompdf/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");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用wkhtmltopdf时如何处理ContentNotFoundError? 的相关文章

随机推荐

  • 如何将 WindowState 从桌面快捷方式传递到 WPF 应用程序?

    如何从桌面快捷方式控制 WPF 主窗口的初始 WindowState 正常 最小化 最大化 快捷方式属性对话框的 运行 组合框让我可以在 正常窗口 最小化 和 最大化 之间进行选择 但 WPF 应用程序似乎完全忽略了此选项 对于 WinFo
  • 统计每月有条件的记录数

    我有一张桌子 我们打电话给他们吧SUMMARYDATA NIP NAME DEPARTMENT STATUSIN STATUSOUT LATECOME A1 ARIA BB 2020 01 21 08 06 23 2020 01 21 11
  • EF 5 Enable-Migrations:在程序集中找不到上下文类型

    我有 4 个项目 Toombu Entities all models are there Toombu DataAccess Mapping Repository and ToombuContext Toombu Logique Logi
  • 当搜索中使用多个单词时,如何在 Lucene.net 中执行 AND 搜索?

    我正在研究 Lucene net 尝试了解如何在我的应用程序中实现它 我有以下代码 Add 2 documents var doc1 new Document var doc2 new Document doc1 Add new Field
  • “LIKE”运算符适用于 MS Access,但不适用于 ADO

    我正在尝试使用带有星号的 Like 来过滤记录 它在使用 Access 2010 返回许多记录时有效 我很困惑为什么它与 ADO 一起使用时什么也不返回 该代码包含多个表和列 因此为了排除故障 我做了一个简单的查询 这是代码 strsql
  • 将 Jpeg 更改为渐进式 Jpeg 图像 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想从基线 Jpeg 图像转换为渐进式 Jpeg 图像 我的磁盘中存储了 10 000 张图像 我尝试
  • 如何混合两个图像?

    我的视图中有两个图像 我需要混合这两个图像 但问题是无法得到完美的融合 图像混合代码 CGSize newSize CGSizeMake backGroundImage frame size width backGroundImage fr
  • NHibernate Future 对象图许多查询

    给定一个使用 Future 调用的多级对象图 var Dads db Session Query
  • jQuery 验证无法正常工作

    我需要在单击 div 按钮时触发此验证 如果验证成功 我希望它提醒 很好 不幸的是 尽管会触发验证并检查所有规则 但如果必填字段为空 则不会出错 不过 任何其他检查都会出错 最后 如果我正确填写字段并单击按钮 则不会发生任何情况 JS do
  • 当 Elasticsearch 索引的运行状况为黄色时,这意味着什么?

    我正在开发一个创建 N 个索引和 N 个别名的应用程序 并且这些索引和别名之间存在一一对应的关系 但偶尔 我会得到 N 个索引和 N 1 个别名 其中一个索引的名称本应由别名使用 由于某种原因 当发生这种情况时 虚假索引 应该是别名 的状态
  • 创建新站点时,如何告诉 IIS 6 将 .NET 版本设置为 2.0(而不是 1.1)?

    我们使用 IIS 管理器在 IIS 6 Windows Server 2003 中创建新站点 当这些站点在 IIS 6 中创建时 ASP NET 版本默认为 ASP NET 1 1 我们希望它默认为 ASP NET 2 0 这对我们来说是一
  • 如何将身份验证标头传递给 OData 服务

    我正在遵循以下描述的身份验证方法http blogs msdn com b astoriateam archive 2010 07 21 odata and authentication part 6 custom basic authen
  • getClass() 在基类的构造函数中报告哪个类

    在 Java 中 可以安全地假设getClass 在用作基类的类的构造函数中调用将提供有关派生类的信息 而不是基类的类的信息 它似乎有效 但我想这并不一定意味着它是安全的 例如 如果我有以下两个类 public class Parent p
  • Autofac:使用输入和输出类型参数解析变体类型

    这个问题是我之前问题的后续 Autofac 将多个逆变实现隐藏在一个组合后面 https stackoverflow com questions 7139054 autofac hiding multiple contravariant i
  • Windows 窗体 - 以透明度为背景的 PNG

    我正在开发一个小型个人项目 我需要创建一个具有阴影的非矩形窗口 更准确地说是一个圆形 尽管这可能会改变 如果表单将 png 设置为背景 我可以通过更改 Region 属性来获得圆形窗口 问题是窗口已对齐 PNG 的透明度不起作用 所以问题是
  • Picture.writeToStream() 未写出所有位图

    我在用着webview capturePicture 创建一个包含网页所有绘图对象的 Picture 对象 我可以使用以下方法成功将此 Picture 对象渲染为位图canvas drawPicture picture dst 没有问题 但
  • 在Java中将Key和Value添加到优先级队列并按Key排序

    我正在尝试获取字符串列表并将它们添加到带有键和值的优先级队列中 键是单词 值是单词的字符串值 然后我需要首先对具有最高字符串值的队列进行排序 优先级队列不允许我添加 2 个值 public static List
  • JavaScript,声明变量时语法混乱

    我最近在一本正在研究的 JavaScript 书中发现了以下代码行 var col top bottom 这是我第一次遇到一个变量似乎被赋予了三个变量 有人可以解释一下这行代码中发生了什么吗 它只是一个较短的版本 var col var t
  • Java 的 RAM 使用情况与任务管理器显示的不符

    我一直在玩Java的JVM 制作一个1024 3 基本上 1Gb 长度字节数组 我使用任务管理器 查看进程 和这个小片段测量了数组创建之前 之后以及数组被垃圾收集器销毁之后的 RAM 使用情况 public static void show
  • 使用wkhtmltopdf时如何处理ContentNotFoundError?

    有人可以告诉我如何解决以下问题吗 与以前的版本不同 wkhtmltopdf 没有传递代理信息 p 或 proxy 的选项 并且它也不使用系统 http proxy 和 https proxy env 变量 即使我为 libssl so 和