我一直试图转换希伯来语html文件但没有成功;不管我试过什么编码,希伯来字符在输出PDF中显示为黑色矩形。
我尝试了比萨发行版中包含的一些unicode测试文件:pisa-3.0.33\test\test-unicode-all.html
和\test-bidirectional-text.html
。我使用和不使用--encoding utf-8
从命令行运行xhtml2pdf。同样的结果:没有一个非拉丁字符通过。
这是字体问题*吗?如果unicode测试文件适合你,你有什么设置它吗?
* FWIW,至少其中一些语言,包括希伯来语,应与Arial合作。
编辑:或者,如果有人设置了比萨并且可以尝试转换上面的unicode测试文件,我将非常感激。
答案 0 :(得分:5)
将以下代码插入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”中你应该在你的os中放置字体的绝对路径
答案 1 :(得分:3)
如果将来有人像我一样试图找出如何正确使用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