首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有CE字符的iText XMLWorkerHelper字体

带有CE字符的iText XMLWorkerHelper字体
EN

Stack Overflow用户
提问于 2015-12-14 22:46:39
回答 1查看 3K关注 0票数 0

我在用iText XMLWorkerHelper将HTML转换成PDF时遇到了麻烦。文档生成得很好,但最后却没有一些中欧字符(克罗地亚字母如č,ć,đ,ž)。

当我在不使用XMLWorkerHelper的情况下编写文本并定义字体时,数据库中相同的文本将被正确地写入:

代码语言:javascript
复制
Dim fntArial As BaseFont = BaseFont.CreateFont("Helvetica", BaseFont.CP1250, BaseFont.NOT_EMBEDDED)
Dim fontText10 As Font = New Font(fntArial, 10)

但是当我使用XMLWorkerHelper时,CE字符就会丢失。

代码语言:javascript
复制
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的默认字体?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-03 07:50:14

我终于想出了如何提供我想要使用的字体。首先,我指定了包含字体本身的完整字体路径(比如c:/windows/ fonts /arial.ttf),但是没有什么改变,然后我尝试使用不同的编码方式,并将路径传递到字体文件夹,这解决了我的问题(在我阅读了XMLWorkerFontProvider类定义之后)。

克里斯·塞克斯你给我指明了正确的道路。

代码语言:javascript
复制
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/"))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34278025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档