2015-12-14 24 views
0

我用iText XMLWorkerHelper將HTML轉換爲PDF時遇到麻煩。文件生成良好,但最終沒有一些中歐字符(克羅地亞字母,如č,ć,đ,ž)。iText帶CE字符的XMLWorkerHelper字體

當我寫的文本,而不XMLWorkerHelper和databese書寫正確定義的字體相同的文本:

Dim fntArial As BaseFont = BaseFont.CreateFont("Helvetica", BaseFont.CP1250, BaseFont.NOT_EMBEDDED) 
Dim fontText10 As Font = New Font(fntArial, 10) 

但是當我使用XMLWorkerHelper CE字符都將丟失。

Dim pdfDokument As New Document() 
Dim docContent As String = "<style>" & _ 
          "@font-face {font-family: 'Arial'; src: url('fonts/arial.ttf') format('truetype');}" & _ 
          "body, td, div, span{font-family: 'Arial'; color: #253f60; font-size: 12px;}" & _ 
          ... 
          "</style>" & _ 
          "HTML content from database" 
Dim wrtPDF As PdfWriter = PdfWriter.GetInstance(pdfDokument, New FileStream(Request.PhysicalApplicationPath & docName, FileMode.Create)) 
pdfDokument.Open() 
Dim worker As XMLWorkerHelper = XMLWorkerHelper.GetInstance 
worker.ParseXHtml(wrtPDF, pdfDokument, New StringReader(docContent)) 

如何將CE字體嵌入到PDF文檔中並將其設置爲XMLWorkerHelper的默認字體?

+1

見編輯爲[此篇](http://stackoverflow.com/a/34204194/231316),其顯示了可以傳遞默認的字體提供作​​爲_fifth_參數'ParseXHtml()' 。只要你以前用你的字體調用過'FontFactory.Register()',你應該沒問題。 –

回答

1

我終於想出瞭如何提供我想要使用的字體。 首先,我指定了完整的字體路徑,包括字體本身(如c:/windows/fonts/arial.ttf),沒有任何改變,然後我嘗試了不同的編碼,並且通過字體文件夾解決了我的問題讀取XMLWorkerFontProvider類定義)。

Chris thx您指出我正確的道路。

Dim worker = XMLWorkerHelper.GetInstance() 
Dim htmlContent = new MemoryStream(Encoding.UTF8.GetBytes(docContent)) 
Dim css As memoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes("")) 
worker.ParseXHtml(wrtPDF, pdfDokument, htmlContent, css, System.Text.Encoding.UTF8, new XMLWorkerFontProvider("c:/windows/fonts/"))