如果将来有人像我一样尝试弄清楚如何使用xhtml2pdf 正确创建包含希伯来语的 PDF 文件,这对我有用:
第一件事:包括@eviltrue 在我的 HTML 中描述的字体设置。这可以是任何字体,只要它支持希伯来语字符,否则输入 HTML 中的任何希伯来语字符将在 PDF 中简单地显示为黑色矩形。
在撰写此答案时,虽然可以在 xhtml2pdf 中将希伯来字符输出为 PDF,但希伯来字符以相反的顺序输出,שלום כיתה א
即א התיכ םולש
.
此时我被卡住了,但后来我偶然发现了这个 SO asnwer:
https ://stackoverflow.com/a/15449145/1918837
安装python-bidi
包后,这里是一个完整解决方案的示例(用于 python 应用程序):
from bidi import algorithm as bidialg
from xhtml2pdf import pisa
HTMLINPUT = """
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<style>
@page {
size: a4;
margin: 1cm;
}
@font-face {
font-family: DejaVu;
src: url(my_fonts_dir/DejaVuSans.ttf);
}
html {
font-family: DejaVu;
font-size: 11pt;
}
</style>
</head>
<body>
<div>Something in English - משהו בעברית</div>
</body>
</html>
"""
pdf = pisa.CreatePDF(bidialg.get_display(HTMLINPUT, base_dir="L"), outpufile)
# I'm using base_dir="L" so that "< >" signs in HTML tags wouldn't be
flipped by the bidi algorithm
双向算法的好处是您可以在同一行中混合使用 RTL 和 LTR 语言(如上面的 HTML 示例中),并且仍然具有正确格式的结果。
编辑:现在最好的方法肯定是使用wkhtmltopdf