该公司想专门使用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
。
任何建议将不胜感激。
答案 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();
}
}
}
}