【问题标题】:Getting ?(Question mark) character for è, Ä, É, Ó, Nº, ú, Ö charactrers in pdf在pdf中获取è,Ä,É,Ó,Nº,ú,Ö字符的?(问号)字符
【发布时间】:2019-02-25 17:57:45
【问题描述】:

我正在从 html 文本生成 pdf 模板。我在生成的 pdf 中获得了 è、Ä、É、Ó、Nº、ú、Ö 等少数字符的“?”(问号)字符。

string font = @"\SEGOEUI.TTF";
FontProvider fp = new DefaultFontProvider(false, false, false);
FontProgram defaultFont = FontProgramFactory.CreateFont(font);
fp.AddFont(defaultFont);

ConverterProperties properties = new ConverterProperties(); 
properties.SetFontProvider(fp);

谁能帮我解决这个问题?

注意: 这些字符在输入文本(html)中正确显示。

【问题讨论】:

  • 将编码改为unicode
  • vasily 写了什么,+ 仔细检查您想要的字体是否定义了这些字符

标签: c# fonts pdf-generation itext7


【解决方案1】:

在 PDF 中,您需要为正在使用的字体指定编码。 FontProvider 中的默认编码取决于字体类型 - 对于 Type1 字体,它是 PdfEncodings.WINANSI,在其他情况下是 PdfEncodings.IDENTITY_H

当你的html被转换时,不清楚PDF中使用的是哪种字体,但无论如何如果你使用带有变音符号的字符和来自不同Unicode范围的其他字符,你应该使用addFont(FontProgram fontProgram, String encoding)重载来指定显式编码并使用PdfEncodings.IDENTITY_H 编码。

所以在你的情况下应该是

fp.AddFont(defaultFont, PdfEncodings.IDENTITY_H);

【讨论】:

    猜你喜欢
    • 2020-11-10
    • 1970-01-01
    • 2013-04-16
    • 2014-11-30
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多