使用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? 的相关文章

  • 如何访问命令行参数? [复制]

    这个问题在这里已经有答案了 我使用 python 创建项目设置设置 但我需要帮助获取命令行参数 我在终端上尝试过 python myfile py var1 var2 var3 在我的 Python 文件中 我想使用输入的所有变量 Pyth
  • QTableView 并双击一个单元格

    我正在开发测试用例编辑器 该编辑器包含 USART 传输和接收数据包格式 编辑器是一个表格视图 发送和接收数据包的长度为八个字节 例如 0x01 0x02 0x03 0x08 它在我的第五和第六栏中 现在 我希望此列中的单元格为只读 但是当
  • 如何doxygen注释Qt属性?

    我想将 Doxygen 注释附加到我的 Q PROPERTY 例如 song h class Song public QObject Q OBJECT private Q PROPERTY QString title READ title
  • Qt中Q_PROPERTY的意义是什么?

    我无法理解 Q PROPERTY 的用法 Q PROPERTY 如何帮助程序具有防御性 它是干什么用的 我看过这个论坛 但确实无法应用 我已经理解了这个例子 但不明白它的用法 这是一个例子 我能从中得到什么 我知道阅读将赋予只读特权 wri
  • 将自定义字体与 wkhtmltopdf 一起使用

    我正在尝试在使用 wkhtmltopdf 生成的 PDF 中使用自定义字体 我读到您不能使用 google webfonts 并且 wkhtmltopdf 使用 truetype ttf 文件 谁能证实这一点吗 所以我从 google we
  • 如何将自定义 Qt 类型与 QML 信号一起使用?

    我在 Qt 5 2 qml 应用程序中创建了一个自定义类型 class Setting public QObject Q OBJECT Q PROPERTY QString key READ key WRITE setKey Q PROPE
  • PyQt4 信号和槽

    我正在使用 PyQt4 编写我的第一个 Python 应用程序 我有一个 MainWindow 和一个 Dialog 类 它是 MainWindow 类的一部分 self loginDialog LoginDialog 我使用插槽和信号 这
  • Qt QML 数据模型似乎不适用于 C++

    我一直在使用中的示例http doc qt digia com 4 7 qdeclarativemodels html http doc qt digia com 4 7 qdeclarativemodels html这是 QML 声明性数
  • Qt(在 Windows 上)将权限级别设置为“requireAdministrator”

    我正在使用 Qt Creator 并努力制作 exe文件默认以管理员身份运行 在线阅读所有解决方案我试图将这一行放入我的 pro file QMAKE LFLAGS MANIFESTUAC level requireAdministrato
  • 为什么 QT 设计器重新调整大小或不允许我缩小或展开小部件或按钮?

    很多时候 在使用 QT 设计器时 我发现自己需要通过缩小或扩展来调整事物的大小 每当我尝试这样做时 程序都不允许我这样做 而只是恢复到将对象放置在窗口中时给我的原始默认大小 无论我的布局如何 为什么要这样做 是否有可能改变这一点 以便我可以
  • 如何向 PyQt5 GUI 添加线程?

    所以我使用 QT Designer 创建了一个 GUI 它工作得很好 但在更复杂的调用中 它不会更新主窗口并锁定 我想运行我的CustomComplexFunction 在根据不断变化的后端信息更新主窗口中的文本编辑时 我希望它每 2 秒运
  • Qt:更改 Mac OS X 上的应用程序 QMenuBar 内容

    我的应用程序对多个 页面 使用 QTabWidget 其中顶级菜单根据用户所在的页面而变化 我的问题是 尝试重新创建菜单栏的内容会导致严重的显示问题 它在除 Mac OS X 之外的所有平台上按预期使用第一种和第三种样式 尚未测试第二种 但
  • 使用 QNetworkAccessManager 的 Qt 控制台应用程序

    我正在尝试写一个Qt调用网络服务的应用程序 这是一个控制台应用程序 url 将作为命令行参数传入 我搜索了例如http程序在Qt并找到这个链接 http qt project org doc qt 5 qnetworkaccessmanag
  • Qt - 如何使用 QNetworkAccessmanager 获取响应文本

    这是我的代码 Widget Widget manager new QNetworkAccessManager this connect manager SIGNAL finished QNetworkReply this SLOT repl
  • 为什么动态 qml 对象的创建如此缓慢,有哪些合理的替代方案?

    我想要实现的目标类似于棋盘游戏 有一个100 100的网格 放在一个Item它驻留在一个Flickable 游戏板 的各个矩形都是 svg 图像 目前大约有 20 种 可能会增加到数百种 作为基准测试 我只是尝试用元素填充 世界 Compo
  • 一个具有完全透明背景的qt小部件

    我需要创建一个 qt 小部件 它将充当其他一些小部件的父级 并对它们进行排序 现在的问题是如何使其背景完全透明 我想这样做 struct Imp Imp QWidget parent thisWidget new QWidget paren
  • PyQt5 使动态小部件可点击并将参数传递给另一个函数

    我正在尝试制作动态小部件并使它们可点击 通过单击一个小部件 它应该将动态值传递给其他小部件 我尝试过 sender 和其他访问小部件的选项 但没有任何效果 所有小部件都从最后一个小部件发送信息 下面是代码 import sys from P
  • Jquery/Javascript 上传和下载文件,无需后端

    是否可以在没有后端服务器的情况下在 JavaScript 函数中下载和上传文件 我需要导出和导入由 JavaScript 函数生成的 XML 我想创建按钮 保存 xml 来保存文件 但我不知道是否可行 另一方面 我希望将 XML 文件直接上
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • 如何在不声明 32 个插槽的情况下将 32 个按钮的 pressed() 信号连接到单个函数?

    我有一个小部件 里面有 32 个按钮 我需要将每个按钮的 Pressed 信号连接到一个插槽 以便调用一个函数 该函数的参数取决于我按下的按钮 现在我通过以 on QPushButtonName pressed 的形式添加 32 个插槽来做

随机推荐

  • 如何将 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 和