2015-12-14 2 views
0

У меня проблемы с преобразованием HTML в PDF с помощью iText XMLWorkerHelper. Документ создан отлично, но в конечном итоге без некоторых центрально-европейских символов (хорватские буквы, такие как č, ć, đ, ž).iText XMLWorkerHelper шрифт с символами CE

Когда я пишу текст без 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/")) 
Смежные вопросы