使用java应用程序在heroku上安装wkhtmltopdf

时间:2015-11-24 13:49:35

标签: spring heroku wkhtmltopdf

我想在Heroku上在线启动我的春季启动网站。但我也使用wkhtmltopdf来创建一个pdf。这在当地有效,但现在我遇到了一些问题。

离线它的工作原理如下:

        ProcessBuilder pb = new ProcessBuilder
                ("cmd.exe",
                        "/c",
                        " cd C:\\Program Files\\wkhtmltopdf\\bin && wkhtmltopdf.exe "
                + "http://google.com C:\\MainWebApps\\TestApp\\src\\main\\resources\\userstorage\\Google2.pdf");

但是如何在Heroku上安装它?

我在哪里存储临时html页面,以便从中创建pdf?

在Heroku上安装wkhtmltopdf在哪里?

我可以在heroku上使用processbuilder调用wkhtmltopdf吗?

编辑

所以在ceejayoz的评论之后我搜索了一些并找到了一些有趣的东西。

因此,为了编译Heroku上的二进制文件我使用了这个:

heroku run /bin/bash

然后我像这样卷曲了wkhtmltopdf:

curl -O http://download.gna.org/wkhtmltopdf/0.12/0.12.0/wkhtmltox-linux-amd64_0.12.0-03c001d.tar.xz 

然后我尝试在服务器上提取它但没有成功:

 $ tar -xjvf wkhtmltox-linux-amd64_0.12.0-03c001d.tar.xz
tar (child): wkhtmltox-linux-amd64_0.12.0-03c001d.tar.xz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2

tar: Error is not recoverable: exiting now

EDIT2

我还在github上找到了这个https://github.com/dscout/wkhtmltopdf-buildpack

所以我做了以下事情:

 heroku buildpacks:set 'https://github.com/heroku/heroku-buildpack-multi.git'
 echo 'https://github.com/dscout/wkhtmltopdf-buildpack.git' >> .buildpacks

这创建了一个名为.buildpacks的文件,但是如何从那里继续?

我也发现了这篇文章但是vulcan已被弃用并使用了ruby Using Wkhtmltopdf with Nodejs on Heroku

有人可以向我提供很好的信息,因为我完全坚持这个吗?

2 个答案:

答案 0 :(得分:0)

你实际上有两个问题需要解决 -

  • 如何安装/调用可执行文件
  • 如何处理生成的.pdf

假设你有Heroku部署的基础知识(推送到Heroku git远程),对于#1,@ emejayoz是对的 - 检查二进制文件到你的git存储库。例如,在./bin目录下。项目的根目录(Procfile所在的位置)将是您的工作目录,您应该能够使用相对路径使用ProcessBuilder调用该程序。

警告 - 因为看起来你在Windows上开发,你需要注意确保两个特定于平台的二进制文件都可用,并添加一些逻辑来知道要调用哪一个(例如,通过设置/检查一个特定环境变量)。

我建议不要尝试使用自定义构建包进行构建 - 您将花费大量精力,几乎没有任何好处。除了平台问题,您不需要在代码更改时重建第三方工具...

第二个问题是您无法保留生成的PDF。当dyno重新启动时它会消失(参见https://devcenter.heroku.com/articles/dynos#ephemeral-filesystem)。因此,在流程完成时您应该做的第一件事就是将生成的文件移动到外部存储服务(Amazon S3是一个很好的起点)。

希望这有帮助。

答案 1 :(得分:0)

您可能想要使用wkhtmltopdf-binary。使用该解决方案,您无需将wkhtmltopdf可执行文件放入VCS中。例如,您可以将它用于Maven或Gradle。