编程语言
首页 > 编程语言> > pdfkit无法加载CSS和JavaScript

pdfkit无法加载CSS和JavaScript

作者:互联网

我目前正在使用Flask构建一个Web应用程序.我的主管要求,一项功能应该是将当前页面另存为PDF(用于打印).为此,我正在使用pdfkit.在有人提议改用weasyprint之前:我尝试将其安装2个小时都无济于事,所以我放弃了这一点.我正在使用Bootstrap css及其JavaScript使该应用程序看起来更令人愉快.

我正在使用以下文件结构(由Flask的教程建议)

+-- name_of_app
|   +-- static
|       +-- css
|           +-- css files
|       +-- js
|           +-- javascript files
|   +-- templates
|       +-- .html templates
|   +-- __init__.py
|   +-- config.py
|   +-- forms.py
|   +-- views.py
+-- run.py

为了尝试使用pdfkit,每次生成页面(即在views.py中路由的所有函数中)时都会生成PDF.所有页面均基于以下模板

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <link href="static\css\bootstrap.css" rel="stylesheet" media="screen">
        <link href="static\css\bootstrap-theme.css" rel="stylesheet">
        <script src="http://code.jquery.com/jquery-latest.js"></script>
        <script src="static\js\bootstrap.js"></script>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        {% if title %}
        <title>{{ title }} - Timeseries Project</title>
        {% else %}
        <title>Welcome to the Timeseries Project</title>
        {% endif %}
    </head>
    <body>
        <div class="navbar navbar-default">
            <div class="navbar-inner">
                <a class="navbar-brand active" href="/">Home</a>
                <a class="navbar-brand" href="/">Save as PDF</a>
            </div>
        </div>
        {% block content %}{% endblock %}
    </body>
</html>

使用提供的css和JS文件可以很好地加载网页.但是,pdfkit输出以下警告

Warning: Failed to load file:///C:/Users/my_user/AppData/Local/Temp/static/css/bootstrap.css (ignore)
Warning: Failed to load file:///C:/Users/my_user/AppData/Local/Temp/static/css/bootstrap-theme.css (ignore)
Warning: Failed to load file:///C:/Users/my_user/AppData/Local/Temp/static/js/bootstrap.js (ignore)

因此,我要解决的问题是:如何获取pdfkit在执行其方法之一的文件夹(即views.py)中而不是AppData中查找静态文件?

解决方法:

要为静态文件生成URL,请使用特殊的“静态”端点名称:http://flask.pocoo.org/docs/0.10/quickstart/#static-files

<link href="{{ url_for('static', filename='css/bootstrap.css') }}" rel="stylesheet" >
<link href="{{ url_for('static', filename='css/bootstrap-theme.css') }}" rel="stylesheet">

标签:flask,pdfkit,css,javascript,python
来源: https://codeday.me/bug/20191119/2036603.html