0

我使用 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);
    }
4

1 回答 1

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 类更适合全球化应用程序。

于 2012-01-16T13:55:25.037 回答