2011-09-22 58 views
5

我正在使用ABCpdf.net組件將HTML轉換爲PDF。某些HTML使用符號字體來顯示某些字符。不幸的是,我們正在使用來自第三方的HTML,並且無法更改。ABCpdf上的符號字體

我的開發環境顯示正確的字體,但我的生產環境不會。它的行爲好像字體沒有安裝,儘管它是。如果我在生產環境中的Internet Explorer中呈現相同的HTML,則它顯示得很好。

我試圖將字體嵌入爲.eot並在標題中提供@ font-face樣式。我曾嘗試使用TheDoc.AddFont('Symbol')。有什麼建議麼?

產品:ABCpdf .NET 7 64

生產操作系統:Windows Server 2003 x64上,IE8

開發OS:Win7的X64,IE8

回答

2

雖然我說Doc.HtmlOptions是答案,但事實證明它完全是另一回事。由於字體重量不正常(即,它是黑體),符號沒有出現。沒有包含這些字符的大膽子集。 IE很聰明,可以忽略大膽的部分,但PDF相當挑剔。它找不到角色,所以它什麼都不顯示。

真正的解決方案是梳理HTML並確保所有符號都被spanfont-weight: normal !important包圍。這也許是一個不那麼優雅的解決方案,但它是有效的。仍然隨機拒絕出現的唯一符號是角度符號(∠)。爲此,我用圖像替換了它。我仍然無法弄清楚爲什麼它不會出現。

2

嘗試重新啓動服務器。

我在ABCPdf上遇到過類似的字體問題。儘管字體清晰地安裝,出於某種原因,ABDPdf在機器重新啓動之前不會將其選中。

可能有一些非重啓的方式來實現同樣的事情,但這將需要了解問題是什麼!如果很簡單,只需重新啓動即可。

+0

是的,文檔說,字體實際上被緩存,並且不會重新加載,直到重新啓動進程。這不是我的問題,但不幸的是,謝謝! =] – samiz

6

WebSuperGoo支持團隊回覆了修復:設置與字體相關的HtmlOptions。我設置了這些選項,並解決了問題。好極了!

If you want to embed the fonts used in a web page/HTML you need to use: 
    Doc.HtmlOptions.FontEmbed = True 
You may also need to set 
    Doc.HtmlOptions.FontSubstitute = False 
and possibly: 
    Doc.HtmlOptions.FontProtection = False 
before you use the Doc.AddImageUrl or Doc.AddImageHtml methods. 

編輯:正如我在下面的評論中提到的那樣,做了這個技巧的選項是FontProtection = false。

+1

你是否單獨嘗試它們以查看哪行代碼或行的組合對你有用?我過去嘗試過的第一行沒有成功 - 但我可能在錯誤的地方使用了它。 –

+1

我確實。只需將FontProtection設置爲false即可解決問題。 – samiz

+0

我在使用HTML生成的PDF文件時出現問題,並在我的iPad應用中顯示。問題是子彈點出現錯誤。我改變了字體類型並設置了「Doc.HtmlOptions.FontEmbed = True」,這解決了我的問題。 –