【问题标题】:Using wkhtmltopdf on Windows在 Windows 上使用 wkhtmltopdf
【发布时间】:2012-11-27 06:58:27
【问题描述】:

我正在尝试设置漂亮的 HTML 到图像插件 wkhtmltopdf,但我遇到了非常困难的时间。

到目前为止我做了什么:

  1. 已下载 wkhtmltopdf zip 包,并在我的网站根文件夹中上传文件

  2. 作为测试,我在 index.php 文件中包含以下代码,我希望将 bbc.com 网站的内容作为 .jpg 图像保存在我的网站根文件夹中: ..

    shell_exec('./wkhtmltopdf --quality 50 http://www.bbc.combbc.jpg');

似乎什么都没有发生。 PHP 不是在安全模式下运行,所以这不是问题。 shell_exec 正在执行,我能够使用它创建一个 .txt 文档。

我已经研究了好几天了,我提供 100 赏金给任何可以想出一个关于如何在 Widows 上设置 wkhtmltopdf 的清晰、简化的分步工作指南的人使用 PHP 运行。

更具体地说,我正在寻找关于如何简化演练:

  • 设置 wkhtmltopdf 以使用 php 在 Windows 上运行(包括常见问题的详细信息以及如何克服这些问题)。

  • 单击按钮或链接:将“当前”网页打印为 pdf,包括所有填写的 输入 值(包括此部分的示例代码)。包含更改页面内容的事件的网页应该打印出页面的当前版本,而不是页面的初始状态。

  • 为创建的 .pdf 创建一个下载链接,onClick 与上述创建和打印为 pdf 的功能相同(包括此部分的示例代码)。

【问题讨论】:

  • 在 PHP 之外的命令行中调用程序时会发生什么?有用吗?
  • 我在 Windows 上的 php 脚本中运行 linux 命令,所以我不确定是否/如何能够直接从命令行运行它。
  • SSH 进入服务器并试用,然后呢?您可能需要与您的主机核实,看看他们是否支持 SSH。他们可能也有一个关于这样做的小教程。这很可能是一些简单的事情,比如错误的权限,但在服务器本身的命令行中最容易找到。
  • 好的,我发现 shell_exec 命令确实有效,通过运行这个脚本:shell_exec('dir > dir.txt'); ,所以这是一个命令语法问题,有什么想法吗?
  • shell_exec 可能适用于您的 other 命令,但如果不直接尝试,我们不会发现 wkhtmltoimage 命令有什么问题。您在问题中使用的语法很好。

标签: php shell wkhtmltopdf shell-exec wkhtmltoimage


【解决方案1】:

我意识到这是一个老问题,但由于它是我发现的唯一一个可以从 HTML 打印到 PDF 并保留图像和背景颜色的库,所以我使用 Windows 命令提示符。我曾经使用过 PDF Architect,但它始终无法处理背景颜色。

当您安装 wkhtmltopdf 时,它将进入 c:\Program Files\wkhtmltopdf\ 或 c:\Program Files (x86)\wkhtmltopdf。

假设您有一个本地 PHP 环境,其中 http://localhost/ 设置为您的起点。假设您有一个名为 html_invoice.html 的文件,并且您想将其打印到名为 dev_invoice_200.pdf 的文件中,并将其放入 xampp Web 服务器内的 invoices 文件夹中。为此,您将启动 Windows 命令提示符(即开始 -> 所有程序 -> 附件 -> 命令提示符或开始 -> 运行 -> cmd)并输入:

c:\Program Files\wkhtmltopdf\bin\wkhtmltopdf http://localhost/html_invoice.html c:\xampp\htdocs\invoices\dev_invoice_200.pdf

这将在正确的位置创建 PDF。

因为我们使用的是 Windows 命令提示符,所以真的没有理由使用 PHP。相反,我们可以使用批处理文件,如果需要自动化,我们可以使用Windows任务计划程序调用批处理文件(开始->所有程序->附件->系统工具->任务计划程序)。

如果您从未编写过批处理文件,只需将要执行的命令输入到纯文本文件中,然后以 .bat 扩展名保存即可。

假设我们希望始终在同一位置将文件 html_invoice.html 打印到名为 dev_invoice.pdf 的发票文件夹中,并且我们将在它到达那里后更改名称。您只需将上面的行减去“_200”放入一个文本文件并将其另存为 .bat,然后在 Windows 中双击它或通过任务计划程序运行它。

【讨论】:

    【解决方案2】:

    很难弄清楚这里的实际问题是什么,但我提出了a blag post tutorial on getting wkhtmltopdf to respond in a Windows 7 / PHP Environment。如果您需要更多详细信息,请随时询问 - 我确信这不会涵盖您的问题。

    就像我在 cmets 中所说的那样,您的函数调用 shell_exec('./wkhtmltopdf --quality 50 http://www.bbc.com bbc.jpg'); 将失败,因为 wkhtmltopdf 和 wkhtmltoimage 是不同的程序并接受不同的命令行选项。在该命令中将 wkhtmltopdf 替换为 wkhtmltoimage,您可能会生成一个输出文件。我相信在您的情况下,像shell_exec('c:\wkhtmltopdf\wkhtmltopdf www.google.com goog.pdf 2>> err3.txt 1>> out3.txt'); 这样的测试执行将是最有趣的,因为您可以看到 wkhtmltopdf 所做的所有不同的输入/输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      • 2013-04-04
      相关资源
      最近更新 更多