我使用iTextSharp来阅读pdf文件。我可以阅读英文文本,但对于中文我会收到问号,如何使用iTextSharp阅读中文字符。
coverNoteFilePath = @"D:\Temp\cc8a12e6-399a-4146-81ac-e49eb67e7e1b\CoverNote.pdf";
try
{
PdfReader reader = new PdfReader(coverNoteFilePath);
for (int page = 1; page <= reader.NumberOfPages; page++)
{
ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy();
String s = PdfTextExtractor.GetTextFromPage(reader, page, its);
s = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(s)));
coverNoteContent = coverNoteContent + s;
}
reader.Close();
Response.Write(coverNoteContent);
}
答案 0 :(得分:0)
尝试将ASCIIEncoding
替换为其他编码类之一(例如UTF8Encoding
)。我想PDF文档知道它们使用哪种编码,因此您可以在PdfReader
对象中找到正确的编码。值得一试。
来自MSDN:
ASCIIEncoding对应于Windows代码页20127.由于ASCII是7位编码,因此ASCII字符限制为最低128个Unicode字符,从U + 0000到U + 007F。如果使用Encoding.ASCII属性或ASCIIEncoding构造函数返回的默认编码器,则在执行编码操作之前,该范围之外的字符将替换为问号(?)。由于ASCIIEncoding类仅支持有限的字符集,因此UTF8Encoding,UnicodeEncoding和UTF32Encoding类更适合全球化的应用程序。