将PDFTK安装在heroku Cedar Stack上以便在我的应用程序中使用

时间:2014-06-21 22:55:39

标签: heroku pdftk buildpack

所以我有建筑管理应用程序,它在本地使用pdftk生成pdf表格(预先填写租户/费用数据)。在我的本地机器上像魔术一样工作。 但是,在Heroku上我收到错误:

未找到pdftk可执行文件/ usr / local / bin / pdftk

我尝试生成pdf文件时在日志中

。我意识到我需要使用buildpack在我的heroku应用程序上安装pdftk。我尝试过使用Vulcan的一些教程,但是vulcan已被弃用,他们说使用heroku运行,但是我找不到很多关于如何使用heroku run安装pdftk-source:https://github.com/millie/pdftk-source的文档。

我要尝试https://github.com/millie/heroku-buildpack-ruby-pdftk,但是如果有一个更容易/更少杂乱的方式让我知道,谢谢!

编辑: 试过上面的方法,现在我的heroku日志说: RuntimeError(未找到pdftk可执行文件/ app / vendor / pdftk / bin) 所以我认为buildpack没有包含pdftk,这没有意义。 我一定做错了,但我完全按照说明操作,唯一不同的是我使用dropbox而不是S3来存储tar.gz文件(pdftk源代码)

编辑: 好的,我想出了如何在heroku buildpack中包含pdftk可执行文件并成功上传它作为应用程序环境的一部分。但是,出于一些非常奇怪的原因,在heroku bash控制台中,当我进入pdftk目录并尝试运行可执行文件时,heroku bash说没有找到pdftk可执行文件。

它适用于我的本地机器,当cd进入pdftk目录并运行pdftk时,它运行可执行文件,所以它不是可执行文件..那么为什么它不在heroku bash目录下工作?

解: 缺少在heroku上的配置变量中设置LD_LIBRARY_PATH,因为pdftk依赖于库文件。另外,记得将tar.gz tar到根目录并将PATH设置为/ bin / pdftk。只需在IRC上查看#heroku,这就是我得到答案的地方。

3 个答案:

答案 0 :(得分:2)

在heroku上的配置变量中缺少设置LD_LIBRARY_PATH,因为pdftk依赖于库文件。另外,请记住将tar.gz tar到根目录并将PATH设置为/bin/pdftk。只需在IRC上查看#heroku,我就得到了答案。

答案 1 :(得分:1)

这就是我在heroku的nodejs app中设置pdftk的方法

  1. 创建heroku app

    heroku create
    
  2. 为pdftk设置buildpack

    BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-apt
    
  3. 为nodejs设置buildpack

    heroku buildpacks:add --index 1 heroku/nodejs
    
  4. 将libgcj.so。*添加到您的搜索路径:

    heroku config:set LD_LIBRARY_PATH=/app/bin
    
  5. 打开至少一个dyno

    heroku ps:scale web=1
    
  6. 在项目的根目录中创建一个Procfile并定义以下内容:

    web: node server.js
    
  7. 推送heroku中的更改

    git push heroku master
    

答案 2 :(得分:0)

添加截至2019年7月有效的答案

注意:感谢shake-apps创建了Buildpack https://elements.heroku.com/buildpacks/shake-apps/heroku-buildpack-pdftk

如果您需要在Heroku上为Node JS应用程序安装PDFtk,请按照以下说明进行操作:

Heroku安装

您需要设置基本的nodejs构建包,并通过pdftk设置shake-apps构建包。

通过运行以下命令进行设置:

heroku buildpacks:set heroku/nodejs;
heroku buildpacks:add --index 1 https://github.com/shake-apps/heroku-buildpack-pdftk.git;

设置构建包后,可以使用

正常部署服务器
git push heroku master

如果您对部署有任何问题,则可以使用以前的buildpack。您可以清除它以重新开始:

heroku buildpacks:clear