Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 使用java应用程序在heroku上安装wkhtmltopdf_Spring_Heroku_Wkhtmltopdf - Fatal编程技术网

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

Spring 使用java应用程序在heroku上安装wkhtmltopdf,spring,heroku,wkhtmltopdf,Spring,Heroku,Wkhtmltopdf,我设法在Heroku上建立了我的spring boot网站。但我也使用wkhtmltopdf创建pdf。这在本地有效,但现在我有一些问题 离线时,其工作原理如下: ProcessBuilder pb = new ProcessBuilder ("cmd.exe", "/c", " cd C:\\Program Files\\wkhtmltopdf\\bi

我设法在Heroku上建立了我的spring boot网站。但我也使用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
然后我做了一个像这样的卷曲:

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上找到了这个

所以我做了以下几点:

 heroku buildpacks:set 'https://github.com/heroku/heroku-buildpack-multi.git'
 echo 'https://github.com/dscout/wkhtmltopdf-buildpack.git' >> .buildpacks
这创建了一个名为.buildpacks的文件,但如何从那里开始呢

我也发现了这篇文章,但是vulcan不推荐使用ruby


有人能给我提供好的信息吗,因为我完全被困在这个问题上了?

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

  • 如何安装/调用可执行文件
  • 如何处理生成的.pdf文件
假设您已经掌握了Heroku部署的基本知识(推送到Heroku git remote),对于#1,@ceejayoz是正确的-将二进制文件检查到您的git存储库中。例如,在./bin目录下。项目的根目录(Procfile所在的位置)将是您的工作目录,您应该能够使用相对路径通过
ProcessBuilder
调用该程序

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

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

第二个问题是,您不能将生成的PDF保留在原位。当dyno重新启动时,它将消失(请参阅)。因此,当流程完成时,您应该做的第一件事是将生成的文件移动到外部存储服务(AmazonS3是一个很好的起点)


希望这有帮助。

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

通过谷歌搜索“wkhtmltopdf heroku”显示一些选项。您也可以只获取一个Linux版本的二进制文件并将其提交到您的存储库中。@ceejayoz我如何将二进制文件提交到存储库中并从那里使用它?对不起,我对这个很陌生。就像其他文件一样。@ceejayoz我不明白我该做什么。所以我从wkhtmltopdf下载了二进制文件。但是我需要做什么呢?我应该把文件放在哪里?一旦我提交了这个文件,我怎么能在线使用这个二进制文件呢?我不需要知道C:\\Program Files\\wkhtmltopdf\\bin&&wkhtmltopdf.exe这样的路径吗?我也无法在heroku上使用java获得关于wkhtmltopdf的更多信息。