我一直在尝试转换希伯来语 html 文件但没有成功;无论我尝试何种编码,希伯来语字符在输出 PDF 中都会显示为黑色矩形。
我尝试了 pisa 发行版中包含的一些 unicode 测试文件:
pisa-3.0.33\test\test-unicode-all.html
和 \test-bidirectional-text.html
。我从命令行运行了 xhtml2pdf,无论有没有 --encoding utf-8
。结果相同:没有一个非拉丁字符能够通过。
这是字体问题*吗?如果 unicode 测试文件适合您,您是否做了任何设置?
*FWIW,至少其中一些语言(包括希伯来语)应该与 Arial 兼容。
编辑:或者,如果有人设置了 pisa 并且可以尝试转换上面的 unicode 测试文件,我将非常感激。
将以下代码插入 html 帮助了我
<style>
@page {
size: a4;
margin: 0.5cm;
}
@font-face {
font-family: "Verdana";
src: url("verdana.ttf");
}
html {
font-family: Verdana;
font-size: 11pt;
}
</style>
在 url 而不是“verdana.ttf”中,您应该在操作系统中输入字体的绝对路径
如果将来有人像我一样尝试找出如何正确使用 xhtml2pdf 创建包含希伯来语的 PDF 文件,这对我有用:
第一件事:在我的 HTML 中包含 @eviltrue 此处描述的字体设置。这可以是任何字体,只要它支持希伯来语字符即可,否则输入 HTML 中的任何希伯来语字符在 PDF 中都会简单地显示为黑色矩形。
在撰写此答案时,虽然可以在 xhtml2pdf 中将希伯来语字符输出到 PDF,但希伯来语字符以相反的顺序输出,即
שלום כיתה א
א התיכ םולש
。此时我被困住了,但后来我偶然发现了这个SO答案: 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
bidi 算法的好处是,您可以在同一行中混合使用 RTL 和 LTR 语言(如上面的 HTML 示例),并且仍然获得格式正确的结果。
编辑: 现在最好的方法肯定是使用 wkhtmltopdf
现已支持 xhtml2pdf 参见文档,只需将其添加到您的 html 中:
<pdf:language name="hebrew"/>