在pdf中获取è,Ä,É,Ó,Nº,ú,Ö字符的?(问号)字符

Getting ?(Question mark) character for è, Ä, É, Ó, Nº, ú, Ö charactrers in pdf

我正在从 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)。

在 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);