Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用xhtml2pdf Django从HTML页面获取PDF_Python_Html_Django_Pdf - Fatal编程技术网

Python 使用xhtml2pdf Django从HTML页面获取PDF

Python 使用xhtml2pdf Django从HTML页面获取PDF,python,html,django,pdf,Python,Html,Django,Pdf,我的函数允许从我的HTML视图中获取PDF文件,这有点问题 我的剧本来自: 从表格中,我生成了一份可以导出为PDF文件的简历 我的函数看起来像: def BirthCertificate_PDF(request, id) : birthcertificate = get_object_or_404(BirthCertificate, pk=id) data = {} template = get_template('BC_raw.html') html =

我的函数允许从我的
HTML视图中获取
PDF文件
,这有点问题

我的剧本来自:

从表格中,我生成了一份可以导出为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 %}
我的模板看起来像:

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 %}

新生行动
{%block content%}
出生法令{{出生证.id}
有关儿童的信息:
  • 孩子的名字:{{birthcertificate.lastname}
  • 儿童姓名:{{出生证.名字}
  • Est né(e)á:{{出生证.出生城市}
  • 乐:{{birthcertificate.birthday}}{{birthcertificate.birthdhour}}
  • 性别:{{birthcertificate.sex}

  • 关于le père的信息:
  • 姓名填写文件:{{birthcertificate.fk_parent1.lastname}{{birthcertificate.fk_parent1.firstname}
  • Néle:{{出生证.父母生日}
  • 答:{{出生证.fk_parent1.出生地}
  • 国籍:{{出生证.fk_父母1.国籍}
  • 住所:{{出生证.父母地址}
  • 答:{{birthcertificate.fk_parent1.city}({{{birthcertificate.fk_parent1.zip}){{{birthcertificate.fk_parent1.country}
  • 职业操练:{{出生证.fk_parent1.job}

  • 有关la mère的信息:
  • 姓名填写文件:{{出生证.fk_父母2.lastname}{{出生证.fk_父母2.firstname}
  • Née le:{{出生证.父母生日}
  • 答:{{出生证.fk_parent2.出生地}
  • 国籍:{{出生证.fk_父母2.国籍}
  • 户籍:{{出生证.父母地址}
  • 答:{{birthcertificate.fk_parent2.city}({{birthcertificate.fk_parent2.zip}){{{birthcertificate.fk_parent2.country}
  • 职业操练:{{出生证.fk_parent2.job}


  • 律师事务所的民事证书 民事官员 签名棉条 {%endblock%}
    但是,即使我得到一个好的PDF文件,所有Python变量都会从这个文件中丢失

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

    我的PDF看起来像:


    您需要在数据字典中传递birthcertificate对象。您现在发送的方式是空的

    更改行:

    data = {}
    


    我不知道,因为我真的被Django困住了!现在,我学到了一些东西,所以谢谢你!没问题。数据通过
    html=template.render(Context(data))
    命令传递。实际上,上下文得到的是一个空字典(数据)。