Is there a way to generate pdf containing non-ascii symbols with pisa from django template?

This does work for me:

pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")), result, encoding='UTF-8')

Try replacing

pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")), result)

with

pdf = pisa.pisaDocument(StringIO.StringIO(html), result, encoding='UTF-8')

Or checkout this answer to html to pdf for a Django site?


You need to modify your django template. Add a new font face in the stylesheet that will link to a font file with characters used in your document. And that font file must be accessible from your server (under Ubuntu you can find files with fonts in /usr/share/fonts/truetype/ directory). For example:

@font-face {
  font-family: DejaMono; 
  src: url(font/DejaVuSansMono.ttf);
}

Then if you have next HTML code:

<div>Some non-latin characters</div>

you can display that text in DejaMono font with this CSS rule:

div { font-family: DejaMono; }

This works for me when I generate PDF documents with cyrillic characters.