2015-04-05 59 views
0

以前已經提過這個問題,但我找不出什麼問題。我正在使用phantomjs .render()來打印pdf。顯示爲問號的漢字

呈現的頁面基本上是一個局部靜態網站與這些屬性:

  • <meta charset="UTF-8">
  • font: normal 17px helvetica,arial,verdana,sans-serif
  • 運行和在Windows本地和Azure的工作者角色
  • 中國語言包安裝並正常工作測試當從Chrome打印相同的頁面時(安裝的字體,例如Arial Unicode MS,SimSun ...)

拉丁字符都很好,只是中文顯示爲「?」

例如

我也嘗試了整個頁面只有宋體或宋體,但沒有什麼區別。

任何想法如何讓這個工作在Windows上?

謝謝!

+1

是新的HTML5,它是由你的phantomjs支持嗎?顯示中文字符爲問號的原因是錯字符集,而不是字體。如果我們使用不支持字符的錯誤字體,Windows會將該字符顯示爲空白框。 – 2015-04-09 01:48:02

+0

你把我放在正確的軌道上。當一切都是UTF-8時,漢字顯示也很好,也有標準字體。 – 2015-04-09 04:01:43

回答

2

你需要一箇中文字體。他們沒有一個是中國字體家族。

字體:正常知識+黑體,宋體,宋體,無襯線

下面是一些字體有中國炭。

宋體:SimSun;黑體:SimHei;新宋體:NSimSun;微軟雅黑:Microsoft YaHei;新細明體:PMingLiU

這不僅僅是一個指南。 Chinese Standard Web Fonts: A Guide to CSS Font Family Declarations for Web Design in Simplified Chinese

這是繁體中文字體。 Chinese web fonts

Google的字體。對不起,沒有鏈接,對我來說是有限制的。

諾託的SAN漢斯

Adob​​e的typekit

源漢SANS

測試HTML文件:

<!DOCTYPE html> 
<html> 

<head> 
    <meta charset="utf-8" /> 
    <title>你好中文!</title> 
    <style type="text/css"> 
     p.serif{font-family:"Times New Roman",Georgia,Serif} 
     p.sansserif{font-family:SimSun} 
     p.s1{font-family: 黑體} 
     p.s2{font-family: KaiTi} 
     p.s3{font-family: Microsoft YaHei} 
    </style> 
</head> 

<body> 
    <div> 
    <p class="serif">你好中文!111</p> 
    <p class="sansserif">宋體</p> 
    </div> 
    <div> 
     <p class="s1">黑體</p> 
     <p class="s2">楷體</p> 
     <p class="s3">微軟雅黑</p> 
    </div> 
</body> 
</html> 

結果

enter image description here

最新的做,試圖改變自己的位置,以中國。我不希望這樣做,因爲我在win10 ENG預覽版中嘗試了phantomjs,效果很好。控制面板>區域>管理>非Unicode程序語言

enter image description here

+0

謝謝!我試圖只使用SimSun,gb2312,而且中文字符仍然是「?」。即使Arial或Arial Unicode MS也應該顯示一些中文而不做任何更改。我想中文裏只有大量的帖子都是關於同樣的問題。你有這個工作嗎? – 2015-04-06 15:37:04

+0

@BenjaminE。我的中國環境沒有錯。我測試了樣本「rasterize.js」。沒有什麼不對。但PDF文件無法被Reader識別(Windows現代應用程序,WIn8.1中的默認PDF閱讀器),MS Word,Photoshop,Foxit Reader可以正常工作。 – Jaon 2015-04-08 06:20:57

+0

你說得對。它確實有效。它不起作用的原因與Azure和虛擬機上的語言包有關。 – 2015-04-08 11:42:14