每行阅读PDF

时间:2011-12-09 08:35:34

标签: c# pdf itext

如何使用iText5 for .NET读取PDF文件line by line? 我通过互联网搜索,但我只发现每页内容阅读PDF文件。

请参阅以下代码。

public string ReadPdfFile(object Filename)
{

    string strText = string.Empty;
    try
    {
        PdfReader reader = new PdfReader((string)Filename);

        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)));
            strText = strText + s;

        }
        reader.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    return strText;
}

4 个答案:

答案 0 :(得分:5)

试试这个,使用LocationTextExtractionStrategy而不是SimpleTextExtractionStrategy,它会在返回的文本中添加换行符。然后,您可以使用strText.Split('\ n')将文本拆分为string[]并按行进行消费。

答案 1 :(得分:3)

您可以在BSD Open-Sourse软件下找到{strong> PDF2Text Pilot here

尽管它是用c ++编写的,但它可以作为解决问题的良好开端。

我不熟练使用C#,但我认为互操作性方面可能会有一些希望?

答案 2 :(得分:3)

我曾在一家电子书阅读公司和PDF工作过,我们花费了大量的时间和精力来尝试获取文本的阅读顺序,因为读者可以读给你听...弹跳点。 .. PDF不必逐行排列。书籍在阅读顺序中也有许多的元素,包括页码,参考文献,标题,例子,多栏等。这是一个难题。 PDF基本上是一种打印格式。

答案 3 :(得分:2)

如果您为PDF制作电子书阅读器,或者只显示PDF格式,与其他pdf ready一样。或者阅读文本并重新格式化。

我更喜欢第二种方法,只是格式化文本,因为如果我使用电子书阅读器,我只关心内容而不关心它应该是什么样的