每行阅读PDF
本文关键字:PDF | 更新日期: 2023-09-27 18:17:32
如何使用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;
}
试试这个,用LocationTextExtractionStrategy
代替SimpleTextExtractionStrategy
,它会在返回的文本中添加新的行字符。然后,您可以使用strText.Split(''n')将文本拆分为string[]
并按每行使用。
您可以在这里找到BSD开源软件许可的PDF2Text Pilot
尽管它是用c++写的,但它可以作为一个鼓舞人心的好的开始来解决你的问题。
我不精通c#,但我认为在互操作性方面可能会有一些希望。
我在一家电子书阅读公司和pdf工作,我们花了很多时间和精力试图获得文本的阅读顺序,因为读者可以读给你听…弹跳点……pdf文件不需要逐行排列。书中也有很多不是的阅读顺序,包括页码、参考文献、标题、示例、多栏等。这是个难题。PDF本质上是一种打印格式。
如果你为PDF制作电子书阅读器,要么只是显示PDF是什么,就像其他PDF准备一样。或者把文本读出来,自己重新格式化。
我更喜欢第二种方法,文本格式随你喜欢因为如果我使用电子书阅读器,我只关心内容而不关心它应该是什么样子