加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用Python格式PDF / X-1a将HTML转换为PDF

发布时间:2020-12-20 13:42:45 所属栏目:Python 来源:网络整理
导读:我有一个网站,使用Django中名为“X HTML2PDF”的库将 HTML转换为PDF. 问题是我需要使用PDF / X-1a格式转换此PDF.我不知道是否可以改变XHTML2PDF中的格式,有人知道另一种选择吗? 视图: def book(request): # Prepare context data = {} data['today'] = dat
我有一个网站,使用Django中名为“X HTML2PDF”的库将 HTML转换为PDF.

问题是我需要使用PDF / X-1a格式转换此PDF.我不知道是否可以改变XHTML2PDF中的格式,有人知道另一种选择吗?

视图:

def book(request):
        # Prepare context
        data = {}
        data['today'] = datetime.date.today()
        data['farmer'] = 'Old MacDonald'
        data['animals'] = [('Cow','Moo'),('Goat','Baa'),('Pig','Oink')]

        # Render html content through html template with context
        template = get_template('book_number_one.html')
        html  = template.render(Context(data))

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

        # Return PDF document through a Django HTTP response
        file.seek(0)
        pdf = file.read()
        file.close()            # Don't forget to close the file handle
        return HttpResponse(pdf,mimetype='application/pdf')

模板:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Background</title>
        <style>
            @page p1 {
                background-image: url("nu/COVER-FRONT-ES.png");
                size: 210mm 210mm;
                @frame text {
                    top: 6cm;
                    left: 4cm;
                    right: 4cm;
                    bottom: 4cm;
                }
            }
            @page p2 {
                background-image: url("nu/001.png");
                size: 210mm 210mm;
                @frame text {
                    top: 6cm;
                    left: 4cm;
                    right: 4cm;
                    bottom: 4cm;
                    border:0;
                }
            }
            @font-face {
                font-family: 'Gilles';
                src: url(/gilles/gilles.ttf);
                font-weight: normal;
                font-style: normal;
            }
        </style>
    </head>
    <body>
        <pdf:nextpage name="p1" />

        <pdf:nextpage name="p2" />

        <p class="page-2">
            Lorem ipsum dolor sit amet,consectetur adipisicing elit. <br />
            Vitae,natus,possimus,placeat consequuntur iste at sapiente perferendis <br />
            delectus suscipit dolorem dignissimos quaerat quia ex fuga officia dolore <br />
            asperiores sint mollitia.<br />
            <br />
        </p>
    </body>
</html>

解决方法

我建议一个名为’django-easy-pdf’的库

https://pypi.python.org/pypi/django-easy-pdf

演示:here

{% extends "easy_pdf/base.html" %}

{% block content %}
    <div id="content">
        <h1>Hi there!</h1>
    </div>
{% endblock %}


from easy_pdf.views import PDFTemplateView

class HelloPDFView(PDFTemplateView):
    template_name = "hello.html"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读