docker 容器中 wkhtmltopdf 的问题

问题描述

我正在用 Flask 构建一个网络应用程序,我正在尝试将 html 导出为 pdf 文件

config = pdfkit.configuration(wkhtmltopdf=my_path_to_wkhtmltopdf_exe)
options = {
    "disable-local-file-access": "","enable-local-file-access": None
}

html = render_template(<my_html_flie>)

pdf = pdfkit.from_string(html,False,configuration=config,options=options)
response = make_response(pdf)

我遇到的问题是代码在本地开发中运行得非常好。我已经在 docker 镜像上安装了 wkhtmltopdf、pdfkit 和 xvfb。所以我怀疑这与任何依赖问题有关。当我将它部署到 docker 容器时,它不再起作用,并且会在下面抛出一些错误

raise IOError("wkhtmltopdf exited with non-zero code {0}.error:\n{1}".format(exit_code,stderr))
OSError:wkhtmltopdf 以非零代码 1 退出错误

Traceback (most recent call last)
File "/usr/local/lib/python3.8/site-packages/flask/app.py",line 2464,in __call__
return self.wsgi_app(environ,start_response)
File "/usr/local/lib/python3.8/site-packages/flask/app.py",line 2450,in wsgi_app
response = self.handle_exception(e)
File "/usr/local/lib/python3.8/site-packages/flask/app.py",line 1867,in handle_exception
reraise(exc_type,exc_value,tb)
File "/usr/local/lib/python3.8/site-packages/flask/_compat.py",line 39,in reraise
raise value
File "/usr/local/lib/python3.8/site-packages/flask/app.py",line 2447,in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python3.8/site-packages/flask/app.py",line 1952,in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python3.8/site-packages/flask/app.py",line 1821,in handle_user_exception
reraise(exc_type,line 1950,in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.8/site-packages/flask/app.py",line 1936,in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python3.8/site-packages/flask_login/utils.py",line 272,in decorated_view
return func(*args,**kwargs)
File "/application/nog/men/routes.py",line 65,in view_b
pdf = pdfkit.from_string(html,options=options)
File "/usr/local/lib/python3.8/site-packages/pdfkit/api.py",line 72,in from_string
return r.to_pdf(output_path)
File "/usr/local/lib/python3.8/site-packages/pdfkit/pdfkit.py",line 159,in to_pdf
raise IOError("wkhtmltopdf exited with non-zero code {0}. error:\n{1}".format(exit_code,stderr))
OSError: wkhtmltopdf exited with non-zero code 1. error:

线

pdf = pdfkit.from_string(html,options=options)

突出显示,我怀疑错误来自这一行,有人可以就可能出现的问题给我建议吗?

这是我的 Dockfile

FROM python:3.8-alpine

workdir /application
copY . .

RUN apk update \
  && apk add gcc libc-dev g++ \
  && apk add unixodbc-dev \
  && apk add gfortran \
  && apk add unixodbc

RUN apk add linux-headers
RUN apk add libffi-dev
RUN apk add openssl-dev
RUN apk add MysqL-dev
RUN apk add openssl-dev

RUN apk add xvfb
RUN apk add --no-cache wkhtmltopdf

RUN apk add freetds freetds-dev
RUN pip install pymssql

RUN python3 -m pip install pyodbc
#RUN pip install apache-airflow[pymssql]


RUN apk add --no-cache jpeg-dev zlib-dev
RUN apk add --no-cache --virtual .build-deps build-base linux-headers \
    && pip install Pillow

RUN export disPLAY=:1


RUN pip install -r requirments.txt

ENTRYPOINT ["python"]
CMD ["run.py"]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)