我创建了一个使用PDFKIT生成PDF的网站,并且我知道如何在Window上安装和设置环境变量路径。我设法在Heroku上部署了我的第一个网站,但是现在我收到错误消息“找不到wkhtmltopdf可执行文件:“ b”“。 我不知道如何在Heroku上安装和设置WKHTMLTOPDF,因为这是我第一次使用Linux。 在问这个问题之前,我确实尝试了所有方法,但即使这样做也没有用。 Python 3 flask install wkhtmltopdf on heroku
如果可能,请逐步指导我如何安装和设置它。
我跟踪了所有资源和所有内容,但是无法正常工作。每次我遇到相同的错误。 我正在使用Django版本2。Python版本3.7。
这是我做heroku堆栈后得到的结果
可用堆栈 雪松14 容器 heroku-16 * heroku-18
错误,生成PDF时出现错误。 找不到wkhtmltopdf可执行文件:“ b” 如果该文件存在,请检查此过程可以读取它。否则,请安装wkhtmltopdf-https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf
我的网站在localhost上运行良好,没有任何问题,据我所知,我确定在安装wkhtmltopdf时做错了事。
谢谢
答案 0 :(得分:1)
这很简单。如果您想避免以下所有麻烦,可以使用api2pdf我的服务: https://github.com/api2pdf/api2pdf.python 。否则,如果您想尝试解决它,请参见下文。
1)将此添加到您的requirements.txt中,以为heroku和pdfkit安装特殊的wkhtmltopdf包。
for (int i = 0; i < arr.length(); i++) {
JSONObject jsonPart = arr.getJSONObject(i);
partite.add(new Partita(jsonPart.getString("HomeTeam"),
jsonPart.getString("AwayTeam"),jsonPart.getString("Date"),
jsonPart.getInt("FTHG"), jsonPart.getInt("FTAG"),
jsonPart.getString("FTR")));
partitemap.put(i, partite.get(i));
Log.i("partita", partite.get(i).HT + " " + partite.get(i).HG + ":" + partite.get(i).AG + " " + partite.get(i).AT);
}
2)我在烧瓶应用程序中创建了一个pdf_manager.py。在pdf_manager.py中,我有一个方法:
git+git://github.com/johnfraney/wkhtmltopdf-pack.git
pdfkit==0.6.1
我之所以有平台声明,是因为我是在Windows机器上开发的,并且我的PC上有本地的wkhtmltopdf二进制文件。但是,当我部署到Heroku时,它运行在他们的linux容器中,因此在运行二进制文件之前,我需要先检测我们在哪个平台上。
3)然后,我创建了另外两种方法-一种将url转换为pdf,另一种将原始html转换为pdf。
def _get_pdfkit_config():
"""wkhtmltopdf lives and functions differently depending on Windows or Linux. We
need to support both since we develop on windows but deploy on Heroku.
Returns:
A pdfkit configuration
"""
if platform.system() == 'Windows':
return pdfkit.configuration(wkhtmltopdf=os.environ.get('WKHTMLTOPDF_BINARY', 'C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe'))
else:
WKHTMLTOPDF_CMD = subprocess.Popen(['which', os.environ.get('WKHTMLTOPDF_BINARY', 'wkhtmltopdf')], stdout=subprocess.PIPE).communicate()[0].strip()
return pdfkit.configuration(wkhtmltopdf=WKHTMLTOPDF_CMD)
我使用这些方法将其转换为PDF。
答案 1 :(得分:0)
只需按照以下步骤在Heroku上部署Django应用(pdfkit):
步骤1: :将以下软件包添加到requirements.txt文件中
wkhtmltopdf-pack==0.12.3.0
pdfkit==0.6.0
步骤2: 在views.py中添加以下几行以添加二进制文件的路径
import os, sys, subprocess, platform
if platform.system() == "Windows":
pdfkit_config = pdfkit.configuration(wkhtmltopdf=os.environ.get('WKHTMLTOPDF_BINARY', 'C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe'))
else:
os.environ['PATH'] += os.pathsep + os.path.dirname(sys.executable)
WKHTMLTOPDF_CMD = subprocess.Popen(['which', os.environ.get('WKHTMLTOPDF_BINARY', 'wkhtmltopdf')],
stdout=subprocess.PIPE).communicate()[0].strip()
pdfkit_config = pdfkit.configuration(wkhtmltopdf=WKHTMLTOPDF_CMD)
第3步: 然后将pdfkit_config作为参数传递如下
pdf = pdfkit.from_string(html,False,options, configuration=pdfkit_config)