【问题标题】:Django HTML to PDF with links and dynamic data带有链接和动态数据的 Django HTML 到 PDF
【发布时间】:2014-11-10 18:42:58
【问题描述】:

我有 Django 1.7.1 和 Python 2.7.8

我想从渲染的 html 模板中获取 PDF,我尝试过 PISA (xhtml2pdf) 但首先,我在使用 Bootstrap css 时遇到了很多问题,然后,在删除了一些行之后,出现了以下消息:

'CSSTerminalFunction' object has no attribute 'lower'

'lower' 似乎是 python 3 的一部分,在 2.7 中不可用(如果我错了,请告诉我)

现在我正在尝试使用 wkhtmltopdf,但 the documentation 太基础了。它仅描述了一个使用静态 HTML 的简单示例

有人可以解释我如何使用我的实际模板获取 PDF 吗?

  • 在模板中,我有 2 个指向 css 文件的链接和一个图片(徽标)
  • 我有一些引导 css 样式,如果可能的话我想使用它
  • 我在模板中放置了一个“查询集”(实际上是一个元组)以在表格中呈现
  • 我还在我的 html 中放置了一些要在不同位置呈现的字符串参数。

这是模板的一部分

{% extends 'reporteBase.html' %}
{% block titulo %}Reporte - Inventario por Ubicación{% endblock %}

{% block content %}

{% if productos %}
<h2>Inventario de la ubicación "{{ ubi }}"</h2>
<div class="row" style="margin-top: 2em">
    <table class="table table-condensed" data-resizable-columns-id="demo-table">
        <thead>
            <tr>
                <th data-resizable-column-id="mod">Modelo/Item</th>
                <th data-resizable-column-id="desc">Descripcion</th>
                <th data-resizable-column-id="cant" data-noresize>Cantidad</th>
                <th data-resizable-column-id="unidad" data-noresize>Unidad</th>
                <th data-resizable-column-id="ubi" data-noresize>Ubicacion</th>
            </tr>
        </thead>
        <tbody>
        {% for p in productos %}
            <tr>
              <td>{{ p.producto__item}}</td>
              <td>{{ p.producto__descripcion }}</td>
              <td>{{ p.sum_cantidad }}</td>
              <td>{{ p.producto__unidad }}</td>
              <td>{{ p.ubicacion__nombre }}</td>
            </tr>
        {% empty %}
        <tr><td colspan=4>No hay Productos</td></tr>
        {% endfor %}
        </tbody>
    </table>
</div>
{% endif %}
{% endblock %}

谢谢!

【问题讨论】:

标签: python django wkhtmltopdf


【解决方案1】:

视图需要将模板呈现为 PDF。这就是 django-wkhtmltopdf Simple Example 中的代码所做的。

首先尝试将页面呈现为 HTML 以确保模板正常工作。您可以使用如下视图执行此操作:

url(r'^html_preview/$', 
    TemplateView.as_view(template_name='pdf_template.html'))

解决模板的任何问题后,请使用PDFTemplateView 尝试。

【讨论】:

  • 我的模板工作得很好,我的所有 CSS 和图像的 HTML 都完全按照我想要的方式渲染,现在,我不知道如何将渲染的模板放在 PDF 中,实际上,我不知道如何使用 PDFTemplate,据我所知,我只需要放置 .html 模板名称和其他 PDFTemplate 参数,但是,如何将我的参数(如查询集)放入模板中? PD感谢您的编辑:)
  • 您需要渲染屏幕上显示的实际网页,而不是 django 模板
猜你喜欢
  • 1970-01-01
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-07
  • 2010-09-11
  • 2017-02-14
  • 2021-11-15
相关资源
最近更新 更多