Flask Pdfkit从模板创建pdf并保存

时间:2017-07-07 13:39:02

标签: python flask pdfkit

我使用pdfkit创建发票pdf。目前我只想保存它。稍后我会将发票文件名保存在数据库中并存储在AWS3上。

但是现在我在尝试保存文件时遇到IO错误,可能是因为我以错误的方式请求它:

pdfkit.from_file(render_template('invoice_template.html', invoice_id=1, invioce_date_start=str(date.today()),
                                     invioce_date_end=str(date.today()), invioce_company_name=form.zahlung_firma.data, invioce_user_vorename=form.vorname.data,
                                     invioce_user_surname=form.nachname.data, invioce_user_email=current_user.email), str(current_user.id) + '-invoice.pdf')

错误:

    Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\flask\app.py", line 1988, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Python27\lib\site-packages\flask\app.py", line 1641, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Python27\lib\site-packages\flask\app.py", line 1544, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Python27\lib\site-packages\flask\app.py", line 1639, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Python27\lib\site-packages\flask\app.py", line 1625, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\Python27\lib\site-packages\flask_login.py", line 758, in decorated_view
    return func(*args, **kwargs)
  File "C:\Users\User\Eclipse-Workspace\Monteurzimmer\main.py", line 114, in decorated_function
    return func(*args, **kwargs)
  File "C:\Users\User\Eclipse-Workspace\Monteurzimmer\main.py", line 1252, in logged_in
    invioce_user_surname=form.nachname.data, invioce_user_email=current_user.email), str(current_user.id) + '-invoice.pdf')
  File "C:\Python27\lib\site-packages\pdfkit\api.py", line 47, in from_file
    configuration=configuration, cover_first=cover_first)
  File "C:\Python27\lib\site-packages\pdfkit\pdfkit.py", line 41, in __init__
    self.source = Source(url_or_file, type_)
  File "C:\Python27\lib\site-packages\pdfkit\source.py", line 12, in __init__
    self.checkFiles()
  File "C:\Python27\lib\site-packages\pdfkit\source.py", line 32, in checkFiles
    raise IOError('No such file: %s' % self.source)
IOError: No such file: <!doctype html>

可以找到模板本身here,我刚刚编辑了jinja变量:

1 个答案:

答案 0 :(得分:2)

pdfkit.from_file()期望文件对象作为输入,但render_template()返回一个字符串。请改为pdfkit.from_string()

更多信息:pypi - pdfkit