我的HTML包含一些Unicode字符,并以“UTF-8”保存到磁盘。我可以用less来显示它,所有字符显示得很好:
<h1>什么是Action?</h1>
<p>Play程序接收到的大部分请求,都是由<code>Action</code>来处理的。
但是当我使用“wkhtmltopdf”将其转换为PDF时,它会显示破碎的字符:
我的命令是:
wkhtmltopdf --encoding utf-8 book.html book.pdf
如何解决这个问题?
答案 0 :(得分:10)
最后我找到了原因:我的ubuntu服务器中没有unicode字体。
我从本地ubuntu上传一些truetype字体到服务器,一切正常。
freewind@freewind:/usr/share/fonts$ cd truetype/
freewind@freewind:/usr/share/fonts/truetype$ ls
arphic ttf-dejavu ttf-lao
freefont ttf-devanagari-fonts ttf-liberation
kochi ttf-gujarati-fonts ttf-malayalam-fonts
msttcorefonts ttf-indic-fonts-core ttf-oriya-fonts
openoffice ttf-japanese-gothic.ttf ttf-punjabi-fonts
sazanami ttf-japanese-mincho.ttf ttf-tamil-fonts
takao ttf-kacst-one ttf-telugu-fonts
thai ttf-kannada-fonts unfonts
ttf-bengali-fonts ttf-khmeros-core wqy
我只是将它们全部上传,它解决了这个问题,虽然我不知道哪个字体是关键。
答案 1 :(得分:1)
我也有这个问题。原来,HTML文件具有meta
标签,该标签设置了错误的charset
。
例如,HTML文件具有
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<style>
,当我将其切换为字符集的utf-8
时,该问题已解决,例如:
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<style>
答案 2 :(得分:0)
尝试 wkhtmltopdf-i386 book.html book.pdf
答案 3 :(得分:0)
如果您使用的是MS Windows机器(以上答案适用于X Windows字体服务器),以下内容对我有用:
您可以将YaHei或SimSun与wkhtmltoimage一起使用。
使用中文字母将内容明确地设置为您的样式中的新字体:
.smsnotification_chinese {
font-size: 30px;
font-family: "Microsoft Yahei", SimSun;
}
这适用于美国Windows机器库存。此处针对其他人描述的字体回退有更强大的描述:Chinese Standard Web Fonts: A Guide to CSS Font Family Declarations for Web Design in Simplified Chinese。
注意:由于GDI +沙箱限制,wkhtmltoimage二进制文件无法在Azure工作计算机上运行。您可以通过编写自己的Web服务包装器或使用此免费包装器来解决此问题:Convert HTML to PDF in .Net on Azure