ITextSharp 4.1.6将PDF内容提取为文本

时间:2019-03-28 06:37:38

标签: c# .net-core itext

该公司想专门使用Itextsharp 4.1.6版本,并且不想购买许可证(版本5/7)。 因此,我们已经使用itextsharp 5版本从pdf实现了TextExtract。当我们降级时,此方法在4.16 LGPL版本中不支持。

因此,我研究了许多StackOverflow和其他站点来寻找答案。似乎没有找到自定义实现,只是AGPL版本中存在以下代码。

PdfTextExtractor.GetTextFromPage(reader, i, new SimpleTextExtractionStrategy())

byte[] pageContent = reader.GetPageContent(i);给出字节内容,当转换为字符串时,它不会给出确切的文件文本。

因此,我们不希望购买AGPL版本,而需要实现pdf textextractor,任何其他支持该工具的想法/任何人都可以实现textextractor

任何建议将不胜感激。

编辑:@jgoday答案的引用: enter image description here

1 个答案:

答案 0 :(得分:0)

使用iText 4.1,您可以使用PdfContentParser(https://github.com/schourode/iTextSharp-LGPL/blob/f75cdad88236d502af42458a420d48be2a47008f/src/core/iTextSharp/text/pdf/PdfContentParser.cs)来解析每个页面的内容。

using System;
using System.Text;
using iTextSharp.text.pdf;

namespace PdfExtractor
{
    class Program
    {
        static void Main(string[] args)
        {
            var reader = new PdfReader(@"D:\Tmp\sample.pdf");

            try
            {
                var parser = new PdfContentParser(new PRTokeniser(reader.GetPageContent(2)));

                var sb = new StringBuilder();

                while (parser.Tokeniser.NextToken())
                {
                    if (parser.Tokeniser.TokenType == PRTokeniser.TK_STRING)
                    {
                        string str = parser.Tokeniser.StringValue;
                        sb.Append(str);
                    }
                }

                Console.WriteLine(sb.ToString());
            }
            finally {
                reader.Close();
            }
        }
    }
}