c# - 如何使用 iTextSharp 4.1.6 提取文本?

标签 c# itextsharp text-extraction

iTextSharp 4.1.6 是根据 LGPL 许可的最新版本,可免费用于商业目的,无需支付许可费。

对于某些人和我来说,如何使用此版本提取文本可能很有趣。

有没有人有想法?

最佳答案

因为我和你在同一条船上,所以我不得不手动将它们组合在一起。希望这对您有所帮助。它可能并不完美,但我能够通过这种方式从文档中获取我需要的文本。 fileName 是 PDF 文件的字符串变量/参数。

var reader = new PdfReader(fileName);

StringBuilder sb = new StringBuilder();

try
{
    for (int page = 1; page <= reader.NumberOfPages; page++)
    {
        var cpage = reader.GetPageN(page);
        var content = cpage.Get(PdfName.CONTENTS);

        var ir = (PRIndirectReference)content;

        var value = reader.GetPdfObject(ir.Number);

        if (value.IsStream())
        {
            PRStream stream = (PRStream)value;

            var streamBytes = PdfReader.GetStreamBytes(stream);

            var tokenizer = new PRTokeniser(new RandomAccessFileOrArray(streamBytes));

            try
            {
                while (tokenizer.NextToken())
                {
                    if (tokenizer.TokenType == PRTokeniser.TK_STRING)
                    {
                        string str = tokenizer.StringValue;
                        sb.Append(str);
                    }
                }
            }
            finally
            {
                tokenizer.Close();
            }
        }
    }
}
finally
{
    reader.Close();
}

return sb.ToString();

关于c# - 如何使用 iTextSharp 4.1.6 提取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10143098/

相关文章:

c# - iTextSharp 5.5.6.0 错误?复选框刻度线更改

c# - 编辑 iTextSharp PdfSmartCopy 类的 DirectContent

c# - 在哪里下载itextsharp的例子?

Python Regex - 在文本文件中的(多个)表达式之间提取文本

c# - System.ObjectDisposedException : The ObjectContext instance has been disposed and can no longer be used for operations that require a connection

c# - EntityCollection 已经初始化

c# - 使用 'Import' 时无法访问 ProjectReference 中的对象

c# - 如何知道用户是否正在滚动 datagridview

从已解析的网页中提取 Python 文本

python - 如何从嵌入 div 的 div 中获取第一个字符串 beautifulsoup4