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

标签 spring heroku wkhtmltopdf

我设法在 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

然后我做了一个像这样的 wkhtmltopdf curl :
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

编辑2

我也发现了这个 https://github.com/dscout/wkhtmltopdf-buildpack在github上。

所以我做了以下:
 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

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

最佳答案

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

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

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

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

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

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

    希望这可以帮助。

    关于spring - 使用 java 应用程序在 heroku 上安装 wkhtmltopdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33895393/

    相关文章:

    java - 在并行流中获取安全上下文时主体为空

    java - 对于 Camel 路由输入端点的 JBoss 嵌入式 MQ 进行 jndi 查找时出现问题

    hibernate - Spring 配置错误

    php - wkhtmltopdf 问题

    java - 添加(自定义)解码器到 WebMVC 端点

    node.js - 如何设置 Gruntfile 以在 heroku 上使用 compass/sass?

    heroku - 在 Heroku 上与 Resque 并发(每个节点运行多个工作程序)

    html - 如何将静态 HTML 和 CSS 文件连接到 Node.js 应用程序?

    asp.net-mvc-4 - NReco.PdfGenerator 服务器上的管道已结束错误

    css - 使用 WKHTMLTOPDF 显示为正方形的汉字