2017-03-06 985 views
1

我正在使用wkhtmltopdf打印在反應html頁面內生成的報告。對於所有的文本時,CSS有設置字體爲'Open Sans', sans-serif我的HTML裏面我的頭,我有以下加載開放Sans字體:使用wkhtmltopdf時顯示爲PDF的錯誤字體

<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet"> 

這一切似乎當我在我的開發運行wkhtmltopdf做工精細機器,我得到的輸出看起來像這樣:

enter image description here

然而,我的服務器上(在Azure上運行的Azure的Web應用程序)我得到以下的輸出:

enter image description here

正如您所看到的,所有文本看起來都非常像素化,但由於某種原因,標題粗體除外。如果你看到粗體和普通文字,你也可以看到Open Sans字體沒有被使用(最容易看到的是g)。

所以現在的問題是雙重的:

  1. 爲什麼不打開Sans字體被在Azure上使用?
  2. 爲什麼文本像素化?如果我將'Open Sans', sans-serif更改爲sans-serif,它在瀏覽器中仍然可以使用默認的sans-serif字體。

感謝所有幫助!

編輯

一些額外的信息。本地PDF爲23Kb,服務器PDF爲207Kb。在服務器PDF上,只有粗體文本是可選的,而不是其他文本,所以看起來非粗體文本被視爲圖像,而不是實際文本。

此外,對於本地PDF是說在字體OpenSansRegular (Embedded Subset), Type: TrueType (CID), Encoding:Identity-H這似乎是合理的。但是,在服務器/ Azure PDF下,它顯示在字體ArialBold (Embedded Subset), Type: TrueType (CID), Encoding:Identity-H下。

因此,出於某種原因錯誤的字體被嵌入,而非粗體文本被視爲圖像。

+0

似乎'字體沒有安裝,或者沙盒限制在Azure WebApp中並將默認值加載到Aria'。我也發現[smilar問題](https://social.msdn.microsoft.com/Forums/zh-CN/092760f0-8691-4207-b10a-fdc27f49c4f5/issue-generating-pdf-with-correct-font-on -azure-web應用程序?論壇= windowsazurewebsitespreview)。我們也可以將我們的[反饋](https://feedback.azure.com/forums/169385-web-apps)提供給Azure團隊。 –

+0

關於此主題有任何更新嗎? –

回答

0

根據document我們可以知道,當前Azure WebApp不支持wkhtmltopdf。 Azure團隊正在研究它。以下是文檔的片段。從HTML

PDF生成

有使用HTML轉換爲PDF多庫。許多Windows/.NET特定版本利用IE API,因此廣泛使用User32/GDI32。這些API在沙箱中大部分被阻塞(不管計劃如何),因此這些框架在沙箱中不起作用。

有一些我們在基本+使這些我們啓用SQL報告以同樣的方式工作框架,不利用USER32/GDI32廣泛(wkhtmltopdf,例如)和