【问题标题】:Django render nested templates to pdfDjango 将嵌套模板渲染为 pdf
【发布时间】:2014-03-15 09:04:39
【问题描述】:

我正在尝试使用 Django 在我的网站上将 html 转换为 pdf。 我尝试使用 wkhtmltopdf 和 pisa(以及一些使用它们的 django 模块),但我总是遇到 css 和静态文件同样的问题。

我的基本布局如下所示:

{% load staticfiles %}
{% load bootstrap3 %}
<!DOCTYPE html>
<html lang="fr">
    <head>
        <!-- ... -->
        {% block css %}
            {% bootstrap_css %}
            <link rel="stylesheet" type="text/css" href="{% static 'website/css/style.css' %}" />
        {% endblock css %}
    </head>
    <body>
        <!-- ... -->
        <div class="container" id="main-container">
            <div id="page-content">{% block content %}{% endblock content %}</div>
        </div>
    </body>
</html>

另一个扩展基本布局并包含我的简历的布局:

{% extends "website/base.html" %}
<!-- ... -->
{% block content %}
    <!-- ... -->
    {% include "website/cv.html" %}
{% endblock content %}

还有我的简历:

{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static 'website/css/cv.css'  %}" />
<div id="cv">
    <!-- ... -->
    <img src="{% static 'website/img/me.jpg' %}" class="img-rounded">
    <!-- ... -->
</div>

我想将我的简历渲染成 pdf,问题是它使用 bootstrap_css 和静态文件(一个 css 文件和一张图片)并且它们没有被渲染。

我检查了一些类似的主题,但他们把所有的 css 都放在了 html 中,这在我的情况下并不是很好。即使我通过将所有 css 都放在我的简历中来尝试这个解决方案,{% bootstrap_css %} 块也不起作用。

有什么方法可以让它工作吗?我可以使用任何适用于 django 或 linux 的库/模块。

谢谢

【问题讨论】:

  • 这是一个有趣的问题,不知道现在有没有人有更好的答案...

标签: python html css django pdf


【解决方案1】:

如果您能找到HTMLPDF 之间的 100% 映射,我会感到惊讶!尤其是像引导程序这样花哨的“新”东西。 (文字处理器格式之间的转换已经够难了!)

但是,如果您有一个仅用于 PDF 渲染的特殊内联 CSS 脚本怎么办?你可以使用mediatype 属性来控制它吗?我想知道...

免责声明:我从未说服 Django 做我想做的事。 YMMV。

【讨论】:

  • 谢谢。我尝试将所有 css(引导程序和我自己的 css)直接放在 标记中,并将其直接传递给 wkhtmltopdf 二进制文件。它工作得很好,除了引导网格系统。我想我可以使用打印媒体类型(wkhtmltopdf 可以处理它)为我的目的做一些看起来像引导网格的事情,但是因为我不能使用 Django 模板标签,所以我必须复制我的所有 css 以进行 pdf 渲染,我不不太喜欢这个主意。
  • Django 并不真正适合完美主义者——“它适合有期限的完美主义者”:-) 至少,这是我在 2011 年的印象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-27
  • 2017-09-19
  • 1970-01-01
  • 2018-01-17
  • 2022-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多