如何在 Heroku 上使用 poppler buildpack

How to use poppler buildpack on Heroku

我想在 Heroku 上使用 python 包的 pdf2image,它需要 poppler,所以我必须添加 poppler buildpack。

我添加了 https://github.com/survantjames/heroku-buildpack-poppler.git with referance to 但我的应用程序显示错误并崩溃了。

所以我在 Heroku 上检查了 bash,添加了 poppler 的 bin direcroty 的路径环境变量但是 poppler utils 失败并且不起作用。

pdfinfo(poppler utils之一)的错误信息是:

pdfinfo: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory

针对此问题,我添加了来自 https://elements.heroku.com/buildpacks/freddix/libpng12 的 libpng12 buildpack,但没有改善。 如何在 Heroku 上使用 poppler buildpack?

构建包:

1. https://github.com/survantjames/heroku-buildpack-poppler.git
2. heroku/python

应用代码(python3):

from flask import Flask, Response
import pdf2image
import io

app = Flask(__name__)


@app.route('/')
def index():
    return 'Hello, World!'

@app.route('/img/')
def img():
    img = pdf2image.convert_from_path(f'{app.root_path}/static/pdf/miku.pdf')[0]
    buffer = io.BytesIO()
    img.save(buffer, 'PNG')
    return Response(buffer.getvalue(), mimetype='image/png')


if __name__ == '__main__':
    app.run()

对我有用的解决方案:

  1. 删除设置中的 poppler buildback
  2. 在设置中添加 buildpack:https://github.com/ONode/heroku-buildpack-xpdf
  3. 在根项目文件夹中手动添加 .xpdfrc 文件
  4. 重新启动并部署您的测功机

(最初在这里找到解决方案:https://www.npmjs.com/package/pdf-util?activeTab=readme

对我进行了一些编辑(Python 3):

  1. 将构建包添加到 Heroku:

    heroku buildpacks:set heroku/python

    heroku buildpacks:add --index 1 heroku-community/apt

  2. 在你的项目文件夹中创建一个名为Aptfile的文件,并在里面写上build-essential libpoppler-cpp-dev pkg-config python3-dev