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