0

iText XMLWorkerHelper を使用して HTML を PDF に変換する際に問題があります。ドキュメントは問題なく生成されますが、一部の中央ヨーロッパ文字 (č、ć、đ、ž などのクロアチア語の文字) がなくなります。

XMLWorkerHelper を使用せずにテキストを記述し、フォントを定義すると、データベースから同じテキストが正しく記述されます。

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 のデフォルト フォントとして設定するにはどうすればよいですか?

4

1 に答える 1

3

使用したいフォントを提供する方法をようやく見つけました。最初に、フォント自体を含む完全なフォント パス (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/"))
于 2016-02-03T07:50:14.190 に答える