我想将HTML转换为具有特殊字符的PDF,但输出不显示特殊字符。
from io import BytesIO
from django.http import HttpResponse
from django.template.loader import get_template
from xhtml2pdf import pisa
def html2pdf(template_source,context_dict={}):
template=get_template(template_source)
html=template.render(context_dict)
result=BytesIO()
pdf=pisa.CreatePDF(BytesIO(html.encode('utf-8')),result)
if not pdf.err:
return HttpResponse(result.getvalue(),content_type="application/pdf")
return None
是我的pdf.py
,我有一个pdf.html
的HTML文件
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<head>
<style>
body {font-family: 'Josefin Slab';
font-size: large;
background-color: beige;}
</style>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h2 class="utf">This is myŐ, Ű, ő or ű✅✅ pdf file with special char</h2>
</body>
</html>
当我将其转换为PDF时,它显示
这是我的■,■,■或■■ ■ ■ ■ ■ ■ ■■■ pdf文件,带有特殊的......
现在怎么办?
1条答案
按热度按时间w46czmvw1#
正如评论中所指出的,你使用的字符在字体中不存在,所以使用不同的字体!不过,也请参见下面的注解
在这里我们可以看到,字符的PDF格式时,正确嵌入将仍然工作在浏览器的pdf视图,但没有处理好在传统的pdf查看器。
不是所有的字符都可用,即使在一个完整的通用字体,特别是彩色的html对象,如emoji或你的,因为这些是由浏览器字体生成,因此需要转换为图像与底层文本。这种组合二为一是有问题的PDF中使用。它取决于PDF作者,如果它将可能与给定的字体,所以更安全的fudge是使用平方根符号。
旁注在某些斯堪的纳维亚国家/地区,勾号可能表示错误而非正确https://en.wikipedia.org/wiki/Check_mark