django - 如何在 django 中使用 xhtml2pdf 生成的 PDF 中显示表情符号字符?
问题描述
我正在尝试使用 xhtml2pdf 将 HTML 转换为 PDF,但无法正确呈现 HTML 中的表情符号字符,它们显示为黑框。我尝试过使用不同的字体,但仍然是同样的问题。
# -*- coding: utf-8 -*-
import time
import os
from io import BytesIO
from xhtml2pdf import pisa
source = """<html>
<head>
<title>Doc title</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
</head>
<style>
@media print {
@font-face {
font-family: Helvetica;
src: url("/absolute/path/to/Helvetica.ttf");
}
}
</style>
<body>
<p></p>
</body>
</html>"""
def convert_html_to_pdf(source):
pdf = BytesIO()
pisaStatus = pisa.CreatePDF(BytesIO(source), pdf, encoding='utf-8')
return pdf
if __name__ == "__main__":
pdf = convertHtmlToPdf(source)
fd = open(os.path.join('/home/userX/', 'test-%s.pdf' % time.time()), "w+b")
fd.write(pdf.getvalue())
fd.close()
解决方案
因此,我能够使用 Symbola 字体在 PDF 上获取表情符号,如下所示:
# -*- coding: utf-8 -*-
import time
import os
from io import BytesIO
from xhtml2pdf import pisa
source = """<html>
<head>
<title>Doc title</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
</head>
<style>
@media print {
@font-face {
font-family: Symbola;
src: url("/absolute/path/to/Symbola.ttf");
}
}
body {font-family: Symbola, sans-serif !important}
</style>
<body>
<p></p>
</body>
</html>"""
def convert_html_to_pdf(source):
pdf = BytesIO()
pisaStatus = pisa.CreatePDF(BytesIO(source), pdf, encoding='utf-8')
return pdf
if __name__ == "__main__":
pdf = convertHtmlToPdf(source)
fd = open(os.path.join('/home/userX/', 'test-%s.pdf' % time.time()), "w+b")
fd.write(pdf.getvalue())
fd.close()
推荐阅读
- bash - 如何使用 python 包装器在 bash 中执行管道?
- jquery - 尝试遍历 DataTable 行时未定义 tr 和 row
- terraform - 使用 terraform 在 paloalto 上创建聚合以太网接口?
- angular - 模态可滚动内容不滚动并且页脚被隐藏
- python - 如何在 Python 中实现流水线?
- python - 是否有一个功能可以打印不带 sys.stdout.write 或 print("",end="") 的换行符?
- javascript - 围绕一个点创建一个三角形,垂直于法线
- powershell - 从不同的运行空间会话监控运行空间池的状态
- python - Python - 遍历关键字列表,搜索字符串中的匹配数,计算最终总数
- amazon-web-services - 查找具有特定实例的所有 aws 负载均衡器