提问人:Niranjan 提问时间:6/5/2023 最后编辑:Niranjan 更新时间:6/14/2023 访问量:78
如何在 c# 中阅读带有行号的 PDF?
How to read PDF with line numbers in c#?
问:
嗨,我正在尝试阅读pdf文档以及行号。
在上图中,我显示了 PDF。在pdf文件中,每行都有行号。我想保存在数据库中,比如
Line Number Content
1 It is agreed on the date shown in Box 2 between the party named in Box 3 as
当我阅读文档时,所有内容都以文本形式出现,但是如何分别识别行号和内容?因为在内容中也可能出现数字,所以数字逻辑无助于识别行号。有没有识别行号?任何帮助将不胜感激。谢谢
答:
0赞
Chen
6/14/2023
#1
您使用哪个库从 PDF 中读取数据?我用iTextSharp做了一个例子,你可以参考它。
在逐行读取数据的过程中,使用正则表达式获取字符串的最后一行号,并使用以下方法将其删除:TrimEnd()
public IActionResult Index()
{
PdfReader reader = new PdfReader(@"C:\Users\Administrator\Desktop\Test.pdf");
int intPageNum = reader.NumberOfPages;
string[] words;
string line;
string text;
PdfModel pdfModel = new PdfModel();
for (int i = 1; i <= intPageNum; i++)
{
text = PdfTextExtractor.GetTextFromPage(reader, i, new LocationTextExtractionStrategy());
words = text.Split('\n');
for (int j = 0, len = words.Length; j < len; j++)
{
line = Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(words[j]));
var x = Regex.Match(line, @"([0-9]+)[^0-9]*$");
if (x.Success && x.Groups.Count > 0)
{
var foundNumber = x.Groups[1].Captures[0].Value;
line = line.Trim().TrimEnd(foundNumber.ToCharArray());
pdfModel.Line = int.Parse(foundNumber);
pdfModel.Content = line;
_context.PdfModel.Add(pdfModel);
_context.SaveChanges();
}
}
}
return View();
}
测试结果:
我的PDF:
评论