2015-04-08 31 views
2

我試圖在由exe程序(phantomjs)生成的PDF中打印中文字符。但是這些字符最終爲「?」。該進程是在C#中的一個工作者角色中創建的。不使用字體的過程

當在同一個虛擬機的cmd窗口中手動創建相同的進程時,一切正常。

但是,中文語言包已安裝,但可以使用可以手動成功創建PDF的相同管理員帳戶。

爲了確保所有用戶都看到語言包中相同的字體,我將設置添加到機器上的所有系統用戶as described here

的理線從C#開始這樣

Process.Start(new ProcessStartInfo 
{ 
    UseShellExecute = true, 
    FileName = "phantomjs.exe", 
    Arguments = "pdf.js" 
}); 

那麼怎麼會這樣,我的手動CMD窗口過程使用中國的字體正確,但不是由C#啓動的進程?

+0

很難說不知道'phantomjs'在做什麼。但是一般來說,不能設計成在非交互式環境下運行的程序是不能這樣做的。如果將其配置爲以真實用戶帳戶運行,特別是至少交互式登錄一次的用戶帳戶,可能需要檢查它是否可行。 –

+0

@HarryJohnston Phantomjs是一款無頭瀏覽器。我使用它的方式是呈現靜態html頁面,在javascript中添加內容,然後打印到pdf或甚至PNG截圖。與使用常規瀏覽器相同,但不是交互式。不尋常的是,字體在服務器端而不是客戶端使用。 –

+0

讓我改述一下:難以說沒有看到失敗的'phantomjs'內的特定代碼。 –

回答

1

原來錯誤的字符編碼導致問號。 從內容輸入到HTML文檔和輸出設置的所有內容都必須使用正確的編碼(例如UTF-8),然後才能正常工作。

相關問題