html模板到带有图像的pdf
Posted
技术标签:
【中文标题】html模板到带有图像的pdf【英文标题】:html template to pdf with images 【发布时间】:2019-06-13 03:03:54 【问题描述】:我正在使用 django 并尝试渲染发票 pdf,pdf 生成成功,但图像不在 pdf 中。
其实我是想加条码图片,所以动态生成了一个.svg
文件,但是不知道怎么放到pdf里面。
这就是我正在做的事情..
from io import BytesIO
from django.http import HttpResponse
from django.template.loader import get_template
from xhtml2pdf import pisa
def render_to_pdf(template_src, context_dict=):
template = get_template(template_src)
html = template.render(context_dict)
result = BytesIO()
pdf = pisa.pisaDocument(BytesIO(html.encode("ISO-8859-1")), result)
if not pdf.err:
return HttpResponse(result.getvalue(), content_type='application/pdf')
return None
html -
<body>
<div class="container-fluid">
<div class="row">
<div class="col-6">
<div class="row">
<div class="col-12">
<span>
package_no_barcode
<br>
package.package_no
....
查看 -
class GenerateInvoicePdf(View):
def get(self, request, *args, **kwargs):
package = Package.objects.get(package_no=request.GET.get('package'))
address = package.purchase.order_product.delivery_location
CODE128 = barcode.get_barcode_class('code128')
package_no_barcode = CODE128(u'pkg_no'.format(pkg_no=package.package_no))
if request.user.display_username == seller.display_username:
data =
'package':package,
'address':address,
'package_no_barcode':package_no_barcode,
pdf = render_to_pdf('pdf/invoice.html', data)
if pdf:
response = HttpResponse(pdf, content_type='application/pdf')
filename = "Invoice_%s.pdf" %(package)
content = "inline; filename='%s'" %(filename)
download = request.GET.get("download")
if download:
content = "attachment; filename='%s'" %(filename)
response['Content-Disposition'] = content
return response
return HttpResponse("Not found")
我也试过 cid - <img src="cid: package_no_barcode " alt=" package.package_no ">
生成的 svg 示例
CODE128 = barcode.get_barcode_class('code128')
package_no_barcode = CODE128(u'PLAI73664PJHS')
package_no_barcode.save('PSKK')
生成 svg -
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" >
<!--Autogenerated with python-barcode 0.9.0-->
<g id="barcode_group">
<rect style="fill:white" />
<rect style="fill:black;" x="2.540mm" y="1.000mm"/>
<rect style="fill:white;" x="2.940mm" y="1.000mm"/>
<rect style="fill:black;" x="3.140mm" y="1.000mm"/>
<rect style="fill:white;" x="3.340mm" y="1.000mm"/>
<rect style="fill:black;" x="3.740mm" y="1.000mm"/>
<rect style="fill:white;" x="3.940mm" y="1.000mm"/>
<rect style="fill:black;" x="4.740mm" y="1.000mm"/>
<rect style="fill:white;" x="5.340mm" y="1.000mm"/>
<rect style="fill:black;" x="5.540mm" y="1.000mm"/>
<rect style="fill:white;" x="6.140mm" y="1.000mm"/>
<rect style="fill:black;" x="6.340mm" y="1.000mm"/>
<rect style="fill:white;" x="6.740mm" y="1.000mm"/>
<rect style="fill:black;" x="6.940mm" y="1.000mm"/>
<rect style="fill:white;" x="7.140mm" y="1.000mm"/>
<rect style="fill:black;" x="7.740mm" y="1.000mm"/>
<rect style="fill:white;" x="8.140mm" y="1.000mm"/>
<rect style="fill:black;" x="8.340mm" y="1.000mm"/>
<rect style="fill:white;" x="8.940mm" y="1.000mm"/>
<rect style="fill:black;" x="9.140mm" y="1.000mm"/>
<rect style="fill:white;" x="9.340mm" y="1.000mm"/>
<rect style="fill:black;" x="9.540mm" y="1.000mm"/>
<rect style="fill:white;" x="9.740mm" y="1.000mm"/>
<rect style="fill:black;" x="10.340mm" y="1.000mm"/>
<rect style="fill:white;" x="10.740mm" y="1.000mm"/>
<rect style="fill:black;" x="11.340mm" y="1.000mm"/>
<rect style="fill:white;" x="11.740mm" y="1.000mm"/>
<rect style="fill:black;" x="12.340mm" y="1.000mm"/>
<rect style="fill:white;" x="12.540mm" y="1.000mm"/>
<rect style="fill:black;" x="13.140mm" y="1.000mm"/>
<rect style="fill:white;" x="13.340mm" y="1.000mm"/>
<rect style="fill:black;" x="13.540mm" y="1.000mm"/>
<rect style="fill:white;" x="13.740mm" y="1.000mm"/>
<rect style="fill:black;" x="13.940mm" y="1.000mm"/>
<rect style="fill:white;" x="14.540mm" y="1.000mm"/>
<rect style="fill:black;" x="14.740mm" y="1.000mm"/>
<rect style="fill:white;" x="15.540mm" y="1.000mm"/>
<rect style="fill:black;" x="15.740mm" y="1.000mm"/>
<rect style="fill:white;" x="15.940mm" y="1.000mm"/>
<rect style="fill:black;" x="16.740mm" y="1.000mm"/>
<rect style="fill:white;" x="17.140mm" y="1.000mm"/>
<rect style="fill:black;" x="17.340mm" y="1.000mm"/>
<rect style="fill:white;" x="17.540mm" y="1.000mm"/>
<rect style="fill:black;" x="17.940mm" y="1.000mm"/>
<rect style="fill:white;" x="18.140mm" y="1.000mm"/>
<rect style="fill:black;" x="18.540mm" y="1.000mm"/>
<rect style="fill:white;" x="18.740mm" y="1.000mm"/>
<rect style="fill:black;" x="19.540mm" y="1.000mm"/>
<rect style="fill:white;" x="19.940mm" y="1.000mm"/>
<rect style="fill:black;" x="20.140mm" y="1.000mm"/>
<rect style="fill:white;" x="20.340mm" y="1.000mm"/>
<rect style="fill:black;" x="20.540mm" y="1.000mm"/>
<rect style="fill:white;" x="21.340mm" y="1.000mm"/>
<rect style="fill:black;" x="21.540mm" y="1.000mm"/>
<rect style="fill:white;" x="22.140mm" y="1.000mm"/>
<rect style="fill:black;" x="22.340mm" y="1.000mm"/>
<rect style="fill:white;" x="22.740mm" y="1.000mm"/>
<rect style="fill:black;" x="23.140mm" y="1.000mm"/>
<rect style="fill:white;" x="23.340mm" y="1.000mm"/>
<rect style="fill:black;" x="23.740mm" y="1.000mm"/>
<rect style="fill:white;" x="24.340mm" y="1.000mm"/>
<rect style="fill:black;" x="24.540mm" y="1.000mm"/>
<rect style="fill:white;" x="25.140mm" y="1.000mm"/>
<rect style="fill:black;" x="25.340mm" y="1.000mm"/>
<rect style="fill:white;" x="25.940mm" y="1.000mm"/>
<rect style="fill:black;" x="26.140mm" y="1.000mm"/>
<rect style="fill:white;" x="26.540mm" y="1.000mm"/>
<rect style="fill:black;" x="26.740mm" y="1.000mm"/>
<rect style="fill:white;" x="26.940mm" y="1.000mm"/>
<rect style="fill:black;" x="27.140mm" y="1.000mm"/>
<rect style="fill:white;" x="27.540mm" y="1.000mm"/>
<rect style="fill:black;" x="27.740mm" y="1.000mm"/>
<rect style="fill:white;" x="28.340mm" y="1.000mm"/>
<rect style="fill:black;" x="28.940mm" y="1.000mm"/>
<rect style="fill:white;" x="29.340mm" y="1.000mm"/>
<rect style="fill:black;" x="29.940mm" y="1.000mm"/>
<rect style="fill:white;" x="30.140mm" y="1.000mm"/>
<rect style="fill:black;" x="30.340mm" y="1.000mm"/>
<rect style="fill:white;" x="30.540mm" y="1.000mm"/>
<rect style="fill:black;" x="31.140mm" y="1.000mm"/>
<rect style="fill:white;" x="31.540mm" y="1.000mm"/>
<rect style="fill:black;" x="31.740mm" y="1.000mm"/>
<rect style="fill:white;" x="32.340mm" y="1.000mm"/>
<rect style="fill:black;" x="32.540mm" y="1.000mm"/>
<rect style="fill:white;" x="32.740mm" y="1.000mm"/>
<rect style="fill:black;" x="33.340mm" y="1.000mm"/>
<rect style="fill:white;" x="33.740mm" y="1.000mm"/>
<rect style="fill:black;" x="34.140mm" y="1.000mm"/>
<rect style="fill:white;" x="34.340mm" y="1.000mm"/>
<rect style="fill:black;" x="34.540mm" y="1.000mm"/>
<rect style="fill:white;" x="35.140mm" y="1.000mm"/>
<rect style="fill:black;" x="35.540mm" y="1.000mm"/>
<rect style="fill:white;" x="35.940mm" y="1.000mm"/>
<rect style="fill:black;" x="36.540mm" y="1.000mm"/>
<rect style="fill:white;" x="37.140mm" y="1.000mm"/>
<rect style="fill:black;" x="37.340mm" y="1.000mm"/>
<rect style="fill:white;" x="37.540mm" y="1.000mm"/>
<rect style="fill:black;" x="37.740mm" y="1.000mm"/>
<text style="fill:black;font-size:10pt;text-anchor:middle;" x="20.340mm" y="21.000mm">PLAI73664PJHS</text>
</g>
</svg>
更新 - 使用.render
, - 'package_no_barcode':package_no_barcode.render
,我可以获得svg代码但不能用于html -
b'<?xml version="1.0" encoding="UTF-8"?>\r\n<!DOCTYPE svg\r\n PUBLIC \'-//W3C//DTD SVG 1.1//EN\'\r\n
\'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\'>\r\n<svg version="1.1" xmlns="http://www.w3.org/2000/svg">\r\n
<!--Autogenerated with python-barcode 0.9.0-->\r\n <g id="barcode_group">\r\n <rect style="fill:white" />\r\n <rect
style="fill:black;" x="2.540mm" y="1.000mm"/>\r\n <rect style="fill:white;"
x="2.940mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="3.140mm" y="1.000mm"/>\r\n <rect
style="fill:white;" x="3.340mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="3.740mm"
y="1.000mm"/>\r\n <rect style="fill:white;" x="3.940mm" y="1.000mm"/>\r\n <rect style="fill:black;"
x="4.740mm" y="1.000mm"/>\r\n <rect style="fill:white;" x="5.140mm" y="1.000mm"/>\r\n <rect
style="fill:black;" x="5.340mm" y="1.000mm"/>\r\n <rect style="fill:white;"
x="5.940mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="6.140mm" y="1.000mm"/>\r\n <rect
style="fill:white;" x="6.740mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="6.940mm"
y="1.000mm"/>\r\n <rect style="fill:white;" x="7.540mm" y="1.000mm"/>\r\n <rect style="fill:black;"
x="8.140mm" y="1.000mm"/>\r\n <rect style="fill:white;" x="8.340mm" y="1.000mm"/>\r\n <rect
style="fill:black;" x="8.540mm" y="1.000mm"/>\r\n <rect style="fill:white;"
x="8.940mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="9.140mm" y="1.000mm"/>\r\n <rect
style="fill:white;" x="9.740mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="10.340mm"
y="1.000mm"/>\r\n <rect style="fill:white;" x="10.540mm" y="1.000mm"/>\r\n <rect style="fill:black;"
x="10.740mm" y="1.000mm"/>\r\n <rect style="fill:white;" x="11.140mm" y="1.000mm"/>\r\n <rect
style="fill:black;" x="11.340mm" y="1.000mm"/>\r\n <rect style="fill:white;"
x="11.940mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="12.140mm" y="1.000mm"/>\r\n <rect
style="fill:white;" x="12.340mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="12.940mm"
y="1.000mm"/>\r\n <rect style="fill:white;" x="13.340mm" y="1.000mm"/>\r\n <rect style="fill:black;"
x="13.540mm" y="1.000mm"/>\r\n <rect style="fill:white;" x="13.740mm" y="1.000mm"/>\r\n <rect
style="fill:black;" x="14.340mm" y="1.000mm"/>\r\n <rect style="fill:white;"
x="14.740mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="14.940mm" y="1.000mm"/>\r\n <rect
style="fill:white;" x="15.540mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="15.740mm"
y="1.000mm"/>\r\n <rect style="fill:white;" x="16.340mm" y="1.000mm"/>\r\n <rect style="fill:black;"
x="16.740mm" y="1.000mm"/>\r\n <rect style="fill:white;" x="16.940mm" y="1.000mm"/>\r\n <rect
style="fill:black;" x="17.140mm" y="1.000mm"/>\r\n <rect style="fill:white;"
x="17.540mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="17.940mm" y="1.000mm"/>\r\n <rect
style="fill:white;" x="18.340mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="18.740mm"
y="1.000mm"/>\r\n <rect style="fill:white;" x="18.940mm" y="1.000mm"/>\r\n <rect style="fill:black;"
x="19.340mm" y="1.000mm"/>\r\n <rect style="fill:white;" x="19.940mm" y="1.000mm"/>\r\n <rect
style="fill:black;" x="20.140mm" y="1.000mm"/>\r\n <rect style="fill:white;"
x="20.540mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="21.140mm" y="1.000mm"/>\r\n <rect
style="fill:white;" x="21.340mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="21.540mm"
y="1.000mm"/>\r\n <rect style="fill:white;" x="21.740mm" y="1.000mm"/>\r\n <rect style="fill:black;"
x="22.340mm" y="1.000mm"/>\r\n <rect style="fill:white;" x="22.940mm" y="1.000mm"/>\r\n <rect
style="fill:black;" x="23.540mm" y="1.000mm"/>\r\n <rect style="fill:white;"
x="23.740mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="23.940mm" y="1.000mm"/>\r\n <rect
style="fill:white;" x="24.340mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="24.540mm"
y="1.000mm"/>\r\n <rect style="fill:white;" x="24.740mm" y="1.000mm"/>\r\n <rect style="fill:black;"
x="25.340mm" y="1.000mm"/>\r\n <rect style="fill:white;" x="25.940mm" y="1.000mm"/>\r\n <rect
style="fill:black;" x="26.140mm" y="1.000mm"/>\r\n <rect style="fill:white;"
x="26.540mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="26.740mm" y="1.000mm"/>\r\n <rect
style="fill:white;" x="26.940mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="27.340mm"
y="1.000mm"/>\r\n <rect style="fill:white;" x="27.940mm" y="1.000mm"/>\r\n <rect style="fill:black;"
x="28.140mm" y="1.000mm"/>\r\n <rect style="fill:white;" x="28.540mm" y="1.000mm"/>\r\n <rect
style="fill:black;" x="28.940mm" y="1.000mm"/>\r\n <rect style="fill:white;"
x="29.540mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="29.740mm" y="1.000mm"/>\r\n <rect
style="fill:white;" x="29.940mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="30.340mm"
y="1.000mm"/>\r\n <rect style="fill:white;" x="30.740mm" y="1.000mm"/>\r\n <rect style="fill:black;"
x="31.140mm" y="1.000mm"/>\r\n <rect style="fill:white;" x="31.540mm" y="1.000mm"/>\r\n <rect
style="fill:black;" x="32.140mm" y="1.000mm"/>\r\n <rect style="fill:white;"
x="32.340mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="32.940mm" y="1.000mm"/>\r\n <rect
style="fill:white;" x="33.140mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="33.340mm"
y="1.000mm"/>\r\n <rect style="fill:white;" x="33.740mm" y="1.000mm"/>\r\n <rect style="fill:black;"
x="34.340mm" y="1.000mm"/>\r\n <rect style="fill:white;" x="34.940mm" y="1.000mm"/>\r\n <rect
style="fill:black;" x="35.140mm" y="1.000mm"/>\r\n <rect style="fill:white;"
x="35.340mm" y="1.000mm"/>\r\n <rect style="fill:black;" x="35.540mm" y="1.000mm"/>\r\n <text
style="fill:black;font-size:10pt;text-anchor:middle;" x="19.240mm" y="21.000mm">UXXWL94HXO08</text>\r\n </g>\r\n</svg>\r\n'
如何使用此代码制作 svg 图片?
【问题讨论】:
您是否尝试过使用<svg>
标签而不是<img>
标签将svg 代码直接放入模板中? more。你能添加一个你正在生成的 svg 的例子吗?
确保您的 var package_no_barcode
是绝对网址,而不是相对网址。
实际上,当我将它放入<svg>
标签时,我得到了条形码的文本
@trinchet 我不想保存这些 svg 文件
@pazitos10 我添加了生成svg的例子
【参考方案1】:
要在 html 中呈现 svg,您必须按原样获取 svg 文本(文本输出)并将其放入模板中,而不使用 <img>
标记。
<body>
<div class="container-fluid">
<div class="row">
<div class="col-6">
<div class="row">
<div class="col-12">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" >
<!--Autogenerated with python-barcode 0.9.0-->
<g id="barcode_group">
<rect style="fill:white" />
<rect style="fill:black;" x="2.540mm" y="1.000mm"/>
<rect style="fill:white;" x="2.940mm" y="1.000mm"/>
<rect style="fill:black;" x="3.140mm" y="1.000mm"/>
<rect style="fill:white;" x="3.340mm" y="1.000mm"/>
<rect style="fill:black;" x="3.740mm" y="1.000mm"/>
<rect style="fill:white;" x="3.940mm" y="1.000mm"/>
<rect style="fill:black;" x="4.740mm" y="1.000mm"/>
<rect style="fill:white;" x="5.340mm" y="1.000mm"/>
<rect style="fill:black;" x="5.540mm" y="1.000mm"/>
<rect style="fill:white;" x="6.140mm" y="1.000mm"/>
<rect style="fill:black;" x="6.340mm" y="1.000mm"/>
<rect style="fill:white;" x="6.740mm" y="1.000mm"/>
<rect style="fill:black;" x="6.940mm" y="1.000mm"/>
<rect style="fill:white;" x="7.140mm" y="1.000mm"/>
<rect style="fill:black;" x="7.740mm" y="1.000mm"/>
<rect style="fill:white;" x="8.140mm" y="1.000mm"/>
<rect style="fill:black;" x="8.340mm" y="1.000mm"/>
<rect style="fill:white;" x="8.940mm" y="1.000mm"/>
<rect style="fill:black;" x="9.140mm" y="1.000mm"/>
<rect style="fill:white;" x="9.340mm" y="1.000mm"/>
<rect style="fill:black;" x="9.540mm" y="1.000mm"/>
<rect style="fill:white;" x="9.740mm" y="1.000mm"/>
<rect style="fill:black;" x="10.340mm" y="1.000mm"/>
<rect style="fill:white;" x="10.740mm" y="1.000mm"/>
<rect style="fill:black;" x="11.340mm" y="1.000mm"/>
<rect style="fill:white;" x="11.740mm" y="1.000mm"/>
<rect style="fill:black;" x="12.340mm" y="1.000mm"/>
<rect style="fill:white;" x="12.540mm" y="1.000mm"/>
<rect style="fill:black;" x="13.140mm" y="1.000mm"/>
<rect style="fill:white;" x="13.340mm" y="1.000mm"/>
<rect style="fill:black;" x="13.540mm" y="1.000mm"/>
<rect style="fill:white;" x="13.740mm" y="1.000mm"/>
<rect style="fill:black;" x="13.940mm" y="1.000mm"/>
<rect style="fill:white;" x="14.540mm" y="1.000mm"/>
<rect style="fill:black;" x="14.740mm" y="1.000mm"/>
<rect style="fill:white;" x="15.540mm" y="1.000mm"/>
<rect style="fill:black;" x="15.740mm" y="1.000mm"/>
<rect style="fill:white;" x="15.940mm" y="1.000mm"/>
<rect style="fill:black;" x="16.740mm" y="1.000mm"/>
<rect style="fill:white;" x="17.140mm" y="1.000mm"/>
<rect style="fill:black;" x="17.340mm" y="1.000mm"/>
<rect style="fill:white;" x="17.540mm" y="1.000mm"/>
<rect style="fill:black;" x="17.940mm" y="1.000mm"/>
<rect style="fill:white;" x="18.140mm" y="1.000mm"/>
<rect style="fill:black;" x="18.540mm" y="1.000mm"/>
<rect style="fill:white;" x="18.740mm" y="1.000mm"/>
<rect style="fill:black;" x="19.540mm" y="1.000mm"/>
<rect style="fill:white;" x="19.940mm" y="1.000mm"/>
<rect style="fill:black;" x="20.140mm" y="1.000mm"/>
<rect style="fill:white;" x="20.340mm" y="1.000mm"/>
<rect style="fill:black;" x="20.540mm" y="1.000mm"/>
<rect style="fill:white;" x="21.340mm" y="1.000mm"/>
<rect style="fill:black;" x="21.540mm" y="1.000mm"/>
<rect style="fill:white;" x="22.140mm" y="1.000mm"/>
<rect style="fill:black;" x="22.340mm" y="1.000mm"/>
<rect style="fill:white;" x="22.740mm" y="1.000mm"/>
<rect style="fill:black;" x="23.140mm" y="1.000mm"/>
<rect style="fill:white;" x="23.340mm" y="1.000mm"/>
<rect style="fill:black;" x="23.740mm" y="1.000mm"/>
<rect style="fill:white;" x="24.340mm" y="1.000mm"/>
<rect style="fill:black;" x="24.540mm" y="1.000mm"/>
<rect style="fill:white;" x="25.140mm" y="1.000mm"/>
<rect style="fill:black;" x="25.340mm" y="1.000mm"/>
<rect style="fill:white;" x="25.940mm" y="1.000mm"/>
<rect style="fill:black;" x="26.140mm" y="1.000mm"/>
<rect style="fill:white;" x="26.540mm" y="1.000mm"/>
<rect style="fill:black;" x="26.740mm" y="1.000mm"/>
<rect style="fill:white;" x="26.940mm" y="1.000mm"/>
<rect style="fill:black;" x="27.140mm" y="1.000mm"/>
<rect style="fill:white;" x="27.540mm" y="1.000mm"/>
<rect style="fill:black;" x="27.740mm" y="1.000mm"/>
<rect style="fill:white;" x="28.340mm" y="1.000mm"/>
<rect style="fill:black;" x="28.940mm" y="1.000mm"/>
<rect style="fill:white;" x="29.340mm" y="1.000mm"/>
<rect style="fill:black;" x="29.940mm" y="1.000mm"/>
<rect style="fill:white;" x="30.140mm" y="1.000mm"/>
<rect style="fill:black;" x="30.340mm" y="1.000mm"/>
<rect style="fill:white;" x="30.540mm" y="1.000mm"/>
<rect style="fill:black;" x="31.140mm" y="1.000mm"/>
<rect style="fill:white;" x="31.540mm" y="1.000mm"/>
<rect style="fill:black;" x="31.740mm" y="1.000mm"/>
<rect style="fill:white;" x="32.340mm" y="1.000mm"/>
<rect style="fill:black;" x="32.540mm" y="1.000mm"/>
<rect style="fill:white;" x="32.740mm" y="1.000mm"/>
<rect style="fill:black;" x="33.340mm" y="1.000mm"/>
<rect style="fill:white;" x="33.740mm" y="1.000mm"/>
<rect style="fill:black;" x="34.140mm" y="1.000mm"/>
<rect style="fill:white;" x="34.340mm" y="1.000mm"/>
<rect style="fill:black;" x="34.540mm" y="1.000mm"/>
<rect style="fill:white;" x="35.140mm" y="1.000mm"/>
<rect style="fill:black;" x="35.540mm" y="1.000mm"/>
<rect style="fill:white;" x="35.940mm" y="1.000mm"/>
<rect style="fill:black;" x="36.540mm" y="1.000mm"/>
<rect style="fill:white;" x="37.140mm" y="1.000mm"/>
<rect style="fill:black;" x="37.340mm" y="1.000mm"/>
<rect style="fill:white;" x="37.540mm" y="1.000mm"/>
<rect style="fill:black;" x="37.740mm" y="1.000mm"/>
<text style="fill:black;font-size:10pt;text-anchor:middle;" x="20.340mm" y="21.000mm">PLAI73664PJHS</text>
</g>
</svg>
<span></span>
</div>
</div>
</div>
</div>
</div>
</body>
在 sn-p 中,您会看到 html 已经呈现,但您需要找到获取该文本的方法并将其作为上下文变量传递给模板,就像您对 package_no_barcode
所做的那样。
编辑
我已经使用jinja2
和flask 进行了测试,但解决方案应该与django 及其模板引擎类似。
首先,确保您在服务器代码中以字符串形式获取 svg 代码。然后,将它作为我之前提到的上下文变量传递给模板。
在模板中,您需要“评估”之前传递的变量中的 html 或在本例中为 svg 代码。为此,我使用了 jinja2,使用了 safe
过滤器。
<body>
<div class="container-fluid">
<div class="row">
<div class="col-6">
<div class="row">
<div class="col-12">
barcode | safe
<span></span>
</div>
</div>
</div>
</div>
</div>
</body>
结果我得到了:
但是使用 django 的默认模板引擎我认为你需要使用 escape 内置过滤器来获得类似的东西。
类似的问题,但使用了烧瓶和 jinja2:Passing HTML to template using Flask/Jinja2
【讨论】:
请查看更新,我没有得到 html 的确切 svg 代码 @PankajSharma,我编辑了答案并添加了一个示例。 感谢您的回答,它适用于 html 但在我的 pdf 中我只能看到代码...我正在上传 pdf...请看 - datafilehost.com/d/c995c651以上是关于html模板到带有图像的pdf的主要内容,如果未能解决你的问题,请参考以下文章
在视图而不是模板中生成带有 Django 静态 url 的图像标签