wkhtmltopdf 尝试从 http 而不是文件加载

2024-02-16

这是一个奇怪的小问题,导致我在 SO 上发布我的第一个问题。我正在使用 wkhtmltopdf 将 HTML 文档转换为 PDF,作为 Rails 应用程序的一部分。为此,我将 Rails 网页渲染为临时目录中的静态 HTML 文件,将静态页眉、页脚和图像复制到同一临时目录,然后使用“system”执行 wkhtmltopdf。

这在开发和测试环境中完美运行。在我的暂存环境中,它没有。我一开始怀疑权限,但该过程的前几个部分(创建 HTML 静态文件并将它们复制到目录)正在运行。我可以从该临时目录中的命令行运行 wkhtmltopdf 并获得预期结果。最后,我在临时环境中通过 Rails 控制台通过“系统”和反引号运行 wkhtmltopdf,以下是我得到的输出:

> `wkhtmltopdf --footer-html tmp/invoices/footer.html --header-html tmp/invoices/header.html -s Letter -L 0in -R 0in -T 0.5in -B 1in tmp/invoices/test.html tmp/invoices/this.pdf`
Loading pages (1/6)
QPainter::begin(): Returned false                            ] 10% 
Error: Unable to write to destination                             
Error: Failed loading page http://tmp/invoices/test.html (sometimes it will work just to ignore this error with --load-error-handling ignore) => "" 

注意最后一点。我指向本地文件,但它是通过 http 寻找它们。好吧,我想,也许我需要明确地向它提供 file:// 协议,这样它就不会寻找 http。所以我尝试这个:

> system("wkhtmltopdf --footer-html file://Library/Server/Web/Data/Sites/intranet-staging/current/tmp/invoices/footer.html --header-html file://Library/Server/Web/Data/Sites/intranet-staging/current/tmp/invoices/header.html -s Letter -L 0in -R 0in -T 0.5in -B 1in file://Library/Server/Web/Data/Sites/intranet-staging/current/tmp/invoices/test.html file://Library/Server/Web/Data/Sites/intranet-staging/current/tmp/invoices/this.pdf")
Loading pages (1/6)
Error: Failed loading page file://library/Server/Web/Data/Sites/intranet-staging/current/tmp/invoices/test.html (sometimes it will work just to ignore this error with --load-error-handling ignore)
=> false 

请注意,此操作失败并在库上显示小写“l”。有没有搞错? (不,建议忽略该开关的错误并没有得到任何改善。)

有任何想法吗?是否存在 Rails 或 Ruby 设置会导致系统命令被重写?是否有一个选项可以添加到 wkhtmltopdf 以确保它从本地文件加载?我很困惑。谢谢!


我在使用绝对文件路径时取得了成功(请注意后面的额外斜杠file://)

wkhtmltopdf --footer-html file:///Library/Server/Web/Data/Sites/intranet-staging/current/tmp/invoices/footer.html --header-html file:///Library/Server/Web/Data/Sites/intranet-staging/current/tmp/invoices/header.html -s Letter -L 0in -R 0in -T 0.5in -B 1in file:///Library/Server/Web/Data/Sites/intranet-staging/current/tmp/invoices/test.html file:///Library/Server/Web/Data/Sites/intranet-staging/current/tmp/invoices/this.pdf

这在 Windows 上也是一样的

Unix路径

file:///absolute/path/to/file

Windows路径

file:///C:/absolute/path/to/file
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

wkhtmltopdf 尝试从 http 而不是文件加载 的相关文章

随机推荐

  • 每次 ComboBox 更改(使用 SelectedIndexChanged)时,如果打开,则以其他形式显示新值的消息

    我想从 Form1 组合框中获取所选语言 并启用其他表单来查看该语言 该组合框大约有 20 种语言 所以是的 您可以说相当多的语言 我有一个名为 ComboBoxLang SelectedIndexChanged 的 方法 当组合框中的语言
  • 设置 codeDOM 文件的文件版本

    我正在寻找任何方法来设置使用 codeDOM 生成的 exe 文件的文件版本 我的总是显示为 0 0 0 0 以编程方式显然是首选 但在这一点上 任何事情都比没有好 已编译程序集的版本由 AssemblyFileVersion 属性控制 您
  • Windows 中的 Git 符号链接

    我们的开发人员混合使用基于 Windows 和 Unix 的操作系统 因此 在 Unix 机器上创建的符号链接成为 Windows 开发人员的一个问题 在 Windows 中 MSysGit https github com msysgit
  • 无法使用 Vue.config.delimiters,只能在 new Vue() 上设置分隔符

    As per 这个答案 https stackoverflow com a 36530534 11236 我正在尝试设置Vue config delimiters 为了使用Vue与服务器端handlebars 当我只使用全局配置时 它没有任
  • 如何减小 openlayers 3 中图标的大小,我正在使用 bing 地图

    这是我的代码 var iconFeature new ol Feature geometry new ol geom Point ol proj transform 95 3698 29 7604 EPSG 4326 EPSG 3857 n
  • 计算行中最后一个单元格和下一个非空白单元格之间的空白单元格数量

    是否可以 最好使用公式 计算行中空白单元格的数量 其中计数从给定列开始并向后计数 例如从右到左 空白单元格的数量 直到找到非空白单元格 在下面的示例中 计数从 H 列开始并向左进行 使用COUNTA or COUNTIF似乎是合理的工具 但
  • Passport Laravel Rest API Auth 与正常设计

    I have Completely assigned the Passport REST API and i get token and tested on PostMan 并使用此 Auth 检索数据 这是带有 laravel Blade
  • Java Scanner 类读取字符串

    我得到以下代码 int nnames String names System out print How many names are you going to save Scanner in new Scanner System in n
  • 读取巨大的 .csv 文件

    我目前正在尝试从 Python 2 7 中的 csv 文件读取最多 100 万行和 200 列的数据 文件范围从 100mb 到 1 6gb 我可以对 300 000 行以下的文件执行此操作 非常缓慢 但是一旦超过该行数 就会出现内存错误
  • 如何更新 Git 克隆

    我已经开始使用 Git 我已在本地系统上克隆了该存储库 我在本地计算机上进行更改并使用git push更新远程仓库 效果很好 我有一个快速查询如何从远程更新我的克隆 我试过git remote update 它不起作用 没有出现新的变化 我
  • 为 iOS 应用程序提交开放图操作?

    对于 App Store 中尚不存在的 iOS 应用程序 当我提交 Facebook Open Graph Api 的操作时 我应该为 重现操作的步骤 编写什么 当您拥有这样的本机移动应用程序时 您可以提交应用程序流程的屏幕截图作为可接受的
  • 将文件读取为元组列表

    我想使用 Python 读取文本文件 我的清单必须是这样的 mylist 34 968398 6 487265 34 969448 6 488250 34 967364 6 492370 34 965735 6 582322 我的文本文件是
  • 动态选中/取消选中树中的复选框

    我有一个类似的问题如果在 JQuery 中未选中所有子节点 则取消选中父节点 https stackoverflow com questions 6556446 uncheck parent node if all children unc
  • 写入 Visual Studio 的输出窗口

    我正在尝试向输出窗口写入一条消息以进行调试 我搜索了一个类似Java的函数system out println 我试过Debug Write Console Write and Trace Write 它不会给出错误 但也不会打印任何内容
  • devise 和 Rails 3 中的 http 身份验证

    我有一个使用 devise on Rails 3 的应用程序 我想启用 http 身份验证 以便我可以从 iPhone 应用程序对我的 Web 应用程序进行身份验证 如何通过我的 iPhone 应用程序进行身份验证以进行设计 这是安全的还是
  • 升级.net紧凑框架版本后出现异常

    我已通过 Visual Studio 将项目从 NET 2 0 升级到 NET 3 5Project gt Upgrade Project 升级后 当我编译项目时 出现错误 The type System Windows Forms Dat
  • Undertow 中的图像/媒体 MIME 类型响应

    我一直在努力寻找一种在 Undertow 中传递 jpeg png 或其他内容的方法 发送 byte 不起作用 并且由于 Undertow 是非阻塞的 我不想通过执行通常的操作在输出上写入文件 exchange getOutputStrea
  • Spring Data JPA - JpaRepository 中的自定义排序

    我正在将 Spring Data JPA 与 Spring Data REST 一起使用 并且我已经为我的 JpaRepository 创建了一个 JpaRepositoryThing entity Repository public in
  • 如何设置 Angular2 url 的查询参数?

    我需要设置一个带有查询参数的网址 例如 Questions id 1234 pageid 0 我尝试通过router Navigate Questions id 1234 pageid 0 但没有运气 导航后浏览器显示如下 Question
  • wkhtmltopdf 尝试从 http 而不是文件加载

    这是一个奇怪的小问题 导致我在 SO 上发布我的第一个问题 我正在使用 wkhtmltopdf 将 HTML 文档转换为 PDF 作为 Rails 应用程序的一部分 为此 我将 Rails 网页渲染为临时目录中的静态 HTML 文件 将静态