使用XHTML2PDF添加保存路径并下载链接



我正在使用XHTML2PDF,以将我的表单转换为PDF文件。默认情况下,它将此PDF保存到我的ply.py文件的同一位置。

我问如何修改保存路径,以便在桌面上发送PDF(使用MacOSX)

这是我的功能:

def BirthCertificate_PDF(request, id) :
    birthcertificate = get_object_or_404(BirthCertificate, pk=id)
    data = {"birthcertificate" : birthcertificate}
    template = get_template('BC_raw.html')
    html  = template.render(Context(data))
    #filename = 'acte_de_naissance_' + str(BirthCertificate.lastname)
    filename = 'Acte_Naissance_' + str(BirthCertificate.objects.get(pk=id).lastname) + '_' + str(BirthCertificate.objects.get(pk=id).firstname) + '_' + str(BirthCertificate.objects.get(pk=id).birthday) + '.pdf'
    file = open(filename, "w+b")
    pisaStatus = pisa.CreatePDF(html.encode('utf-8'), dest=file, encoding='utf-8')
    file.seek(0)
    pdf = file.read()
    if pdf :
        context = {"birthcertificate":birthcertificate}
        return render(request, 'BC_resume.html', context)
    file.close()
    return HttpResponse(pdf, 'application/pdf')

我读了此文档:XHTML2PDF DOC,但我没有任何解决方案。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

然后我还有一个问题(也许我应该创建一个新问题?)。我放了一个HTML按钮,该按钮可以保存PDF。但是我想拥有以下功能:

我单击按钮 ->我得到一个窗口,让打开PDF或保存它

这是我的HTML模板,它可以保存PDF:

<h2 align="center"> Votre formulaire a été validé </align> </h2>
{% block content %} 
L'enfant a été enregistré sous le numéro : {{ birthcertificate.id }} 
<h3> Récapitulatif des données enregistrées : </h3>
<li> Nom : {{birthcertificate.lastname}}</li>
<li> Prénom : {{birthcertificate.firstname}}</li>
<li> Sexe : {{birthcertificate.sex}}</li>
<li> Date de Naissance : {{birthcertificate.birthday}}</li>
<li> Ville de Naissance : {{birthcertificate.birthhour}}</li>
<li> Pays de Naissance : {{birthcertificate.birthcity}}</li>
<li> Nationalité : {{birthcertificate.birthcountry}}</li>
<li> Père : {{birthcertificate.fk_parent1}}</li>
<li> Mère : {{birthcertificate.fk_parent2}}</li>
{% endblock %} 
<br></br>
<form method='POST' action="{% url "BChome" %}"> {% csrf_token %}
<input type ="submit" value="Retour gestion des actes de naissances" />
</form>
<form method='POST' action="{% url "PDF" birthcertificate.id %}"> {% csrf_token %}
<input type ="submit" value="Générer PDF acte de naissance" />
</form>

<form method='POST' action='/Identity/accueil'> {% csrf_token %}
<input type ="submit" value="Retour gestion des fiches identités" />
</form>

感谢您是否有两个问题的建议:)

在此行中,您定义要保存文件的位置:

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

只需将文件名更改为要保存的目的地,供桌面:"/Users/userName/Desktop/" + filename

因此您的代码看起来像:

destination = "/Users/userName/Desktop/"
file = open(destination + filename, "w+b")
pisaStatus = pisa.CreatePDF(html.encode('utf-8'), dest=file, encoding='utf-8')

您可以使目的地成为您功能的参数。

最新更新