【问题标题】:Get PDF from HTML page with xhtml2pdf Django使用 xhtml2pdf Django 从 HTML 页面获取 PDF
【发布时间】:2017-05-07 05:33:57
【问题描述】:

我的函数让我从HTML view 获取PDF file 时遇到了一点问题。

我的脚本来自:Convert a HTML page to PDF using Django

从表格中,我生成了一份可以导出为 PDF 文件的简历。

我的函数看起来像:

def BirthCertificate_PDF(request, id) :

    birthcertificate = get_object_or_404(BirthCertificate, pk=id)

    data = {}

    template = get_template('BC_raw.html')
    html  = template.render(Context(data))

    file = open('test.pdf', "w+b")
    pisaStatus = pisa.CreatePDF(html.encode('utf-8'), dest=file,
            encoding='utf-8')

    file.seek(0)
    pdf = file.read()
    file.close()

    return HttpResponse(pdf, 'application/pdf')

我的模板看起来像:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<h2 align="center"> ACTE DE NAISSANCE </align> </h2>

{% block content %} 

<h3 align = "right"> Acte de Naissance n° {{birthcertificate.id}} </align> </h3>

<h3> Informations concernant l'enfant : </h3>
<li> Nom de l'enfant : {{birthcertificate.lastname}}</li>
<li>Prénom(s) de l'enfant : {{birthcertificate.firstname}}</li>
<li>Est né(e) à : {{birthcertificate.birthcity}}</li>
<li>Le : {{birthcertificate.birthday}} à {{birthcertificate.birthhour}}</li>
<li>De sexe : {{birthcertificate.sex}}</li>

<hr width = "50%"></hr>

<h3> Informations concernant le père : </h3>
<li>Fils ou fille du nommé : {{birthcertificate.fk_parent1.lastname}} {{birthcertificate.fk_parent1.firstname}}</li> <!-- Get only firstname and lastname element -->
<li>Né le : {{birthcertificate.fk_parent1.birthday}}</li> <!-- Get only birthday element -->
<li>A : {{birthcertificate.fk_parent1.birthcity}}</li> <!-- Get only birthcity element -->
<li>De nationalité : {{birthcertificate.fk_parent1.nationality}}</li> <!-- Get only nationality element -->
<li>Domicilié au : {{birthcertificate.fk_parent1.adress}}</li> 
<li>A : {{birthcertificate.fk_parent1.city}} ({{birthcertificate.fk_parent1.zip}}) - {{birthcertificate.fk_parent1.country}}</li> <!-- Get only adress, zip, city, country element -->
<li>Exerçant la profession de : {{birthcertificate.fk_parent1.job}}</li> <!-- Get only job element -->

<hr width = "50%"></hr>

<h3> Informations concernant la mère : </h3>
<li>Fils ou fille de la nommée : {{birthcertificate.fk_parent2.lastname}} {{birthcertificate.fk_parent2.firstname}}</li> <!-- Get only firstname and lastname element -->
<li>Née le : {{birthcertificate.fk_parent2.birthday}}</li> <!-- Get only birthday element -->
<li>A : {{birthcertificate.fk_parent2.birthcity}}</li> <!-- Get only birthcity element -->
<li>De nationalité : {{birthcertificate.fk_parent2.nationality}}</li> <!-- Get only nationality element -->
<li>Domiciliée au : {{birthcertificate.fk_parent2.adress}}</li> 
<li>A : {{birthcertificate.fk_parent2.city}} ({{birthcertificate.fk_parent2.zip}}) - {{birthcertificate.fk_parent2.country}}</li> 
<li>Exerçant la profession de : {{birthcertificate.fk_parent2.job}}</li> <!-- Get only job element -->

<br></br>

<h3> Par la présente, l'Officier d'Etat Civil certifie la sincérité de la présente déclaration </h3>

<h3 align = "right"> L'Officier d'Etat Civil </align> </h3>
<h3 align = "right"> Signature et tampon </align> </h3>

{% endblock %}

但是,即使我得到了一个好的 PDF 文件,这个文件中的所有 Python 变量都会丢失。

所以我的问题是:如何在我的 PDF 上显示我的 HTML 背景和变量?

我的 PDF 看起来像:

【问题讨论】:

    标签: python html django pdf


    【解决方案1】:

    您需要在数据字典中传递出生证明对象。你现在发送它的方式是空的。

    换行:

    data = {}
    

    data = {'birthcertificate': birthcertificate, }
    

    【讨论】:

    • 我不知道,因为我真的被 Django 困住了!现在,我学到了一些东西,所以谢谢!
    • 没问题。数据通过您的html = template.render(Context(data)) 命令传递。事实上,上下文得到了一个空字典(数据)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    相关资源
    最近更新 更多