其实我的要求是使用pdf内容搜索pdf文件。
我有一个包含大量PDF文件的文件夹。 我想开发一个ASP.net应用程序,使用户能够 使用文本框中提供的内容搜索pdf。
如何执行此任务? 提前谢谢你。
答案 0 :(得分:1)
您的任务可能会分为以下子任务:
要构建索引,您可以使用Apache Lucene或Lucene.Net之类的集成解决方案,或者将每个PDF转换为文本并根据文本构建索引。
您可以尝试Docotic.Pdf library作为索引器部分(免责声明:我为Bit Miracle工作)。
该库可用于extract text (with or without formatting)。提取的文本可用于创建索引。
图书馆还可以从PDF中检索words with their bounding rectangles的集合。如果您需要知道文件中文本的确切位置,这可能很有用。
如果您不想构建索引,那么您仍然可以使用Docotic.Pdf使用如下代码执行搜索:
PdfDocument doc = new PdfDocument("file.pdf");
string textToSearch = "some text";
for (int i = 0; i < doc.Pages.Count; i++)
{
string pageText = doc.Pages[i].GetText();
int count = 0;
int lastStartIndex = pageText.IndexOf(textToSearch, 0, StringComparison.CurrentCultureIgnoreCase);
while (lastStartIndex != -1)
{
count++;
lastStartIndex = pageText.IndexOf(textToSearch, lastStartIndex + 1, StringComparison.CurrentCultureIgnoreCase);
}
if (count != 0)
Console.WriteLine("Page {0}: '{1}' found {2} times", i, textToSearch, count);
}
答案 1 :(得分:0)
您可以使用任何库,尝试iTextSharp免费的。
您可以像this这样的文字阅读pdf:
public string ReadPdfFile(string fileName)
{
StringBuilder text = new StringBuilder();
if (File.Exists(fileName))
{
PdfReader pdfReader = new PdfReader(fileName);
for (int page = 1; page <= pdfReader.NumberOfPages; page++)
{
ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);
currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
text.Append(currentText);
}
pdfReader.Close();
}
return text.ToString();
}
答案 2 :(得分:0)
尝试Zoom Search它有一个用于提取pdf文档文本的插件(您可以搜索它),并且它很容易自定义您的搜索。您将需要非免费的标准版(约49美元).Zoom搜索是开箱即用的搜索,你不需要做任何复杂的事情,例如,如果你喜欢从pdf中提取文本,然后一些如何在数据库中索引搜索或尝试使用Lucene搜索引擎将要求你做工具/和定制(一点工作)。 Zoom适用于ASP.NET,您只需使用GUI来自定义搜索(不需要大量编码)。