0

我想在 django web-framework 中将一个 html 页面转换为 pdf,除了 image 之外一切都很好。

这是我要转换为 pdf 的 HTML 页面的小片段

<div class="certi-description"> <img src="/media/certificate/icons/2.jpg" style="width: 12%;height: 25%;position: absolute; left: {{tag_logo_offset.0|add:'-355'}}px; top: {{tag_logo_offset.1|add:'-170'}}px;"><br>
            <div style="position: absolute; left: {{tag_name_offset.0|add:'-355'}}px; top: {{tag_name_offset.1|add:'-170'}}px;"><div id="tag" ><center><font size="3" color="red">{{  tag_name}}</font><center></div></div><br><br>
            <div style="position: absolute; left: {{comm_offset.0|add:'-355'}}px; top: {{comm_offset.1|add:'-170'}}px;"><span><font size="5" color="black">is hereby Rewarded to</font></span></div><br>

这是views.py中的代码片段

            template = certi.generic_certificate.template_name
            template_new = get_template(template)
            context_dict = Context(context)
            html  = template_new.render(context_dict)
            print html
            result = StringIO.StringIO()
            links = lambda uri, rel: os.path.join(base.MEDIA_ROOT, uri.replace(base.MEDIA_ROOT, ''))
            print  base.MEDIA_ROOT
            pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")),dest=result, link_callback=links)
            if not pdf.err:
                converted_pdf= HttpResponse(result.getvalue(), content_type='application/pdf')
                converted_pdf['Content-Disposition'] = 'attachment; filename="certificate%s.pdf"'%certi_id
                p = canvas.Canvas(converted_pdf)
                p.showPage()
                p.save()
                pdf = result.getvalue()
                result.close()
                myfile = ContentFile(pdf)
                Certificate.objects.filter(pk=certi_id).update(pdf_template = p)
                converted_pdf.write(pdf) 
                return converted_pdf

base.py 作为我的设置文件:

MEDIA_ROOT = normpath(join(DJANGO_ROOT, 'media'))
MEDIA_URL = '/media/'
########## END MEDIA CONFIGURATION
AUTHENTICATION_BACKENDS = ('custom.backends.EmailOrUsernameModelBackend',)

########## STATIC FILE CONFIGURATION
STATIC_ROOT = normpath(join(DJANGO_ROOT, 'final_static'))

STATIC_URL = '/static/'

我在 /media/certificate/icons 文件夹中有几张图片,比如我在 html 中使用的 2.jpg

除图像外,一切都在转换为 pdf。我检查了所有可能的路径,但仍然无法正常工作。

请帮助解决这个问题。

4

0 回答 0