私は運がなくてもこれをたくさん探してきました。だから私はおそらく問題は、いくつかの概念が欠けているか、本当に必要なものを理解していないためだと思ったので、ここに問題があります:
私はpisaを使用してpdfを作成していますが、これは私が使用するコードです:
def write_to_pdf(template_data, context_dict, filename):
template = Template(template_data)
context = Context(context_dict)
html = template.render(context)
result = StringIO.StringIO()
pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")), result, link_callback=fetch_resources)
if not pdf.err:
response = http.HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'attachment; filename=%s.pdf' % filename
response.write(result.getvalue())
return response
return http.HttpResponse('Problem creating PDF: %s' % cgi.escape(html))
したがって、この文字列を pdf にしようとすると、次のようになります。
template_data = 'テスト'
これは次のようになります (#
文字ではなく黒い点であると考えてください)。
t##sting á
cgi.escape
黒いスポットがまだそこにあり、htmlタグを印刷してしまうので、運が悪いので使用しようとしました。それはpython 2.7なのでhtml.escape
、すべての問題を使用して解決することはできません。
したがって、既存の html タグに影響を与えることなく、通常のテキストを html エンティティに変換できるものが必要です。手がかりはありますか?
ああ、その行を変更すると:
pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")), result, link_callback=fetch_resources)
に
pdf = pisa.pisaDocument(html, result, link_callback=fetch_resources)
それは機能しますが、そこに配置される文字の種類が正確にわからず、ピサでサポートされない可能性があるため、必要な html エンティティを作成しません。