PDFをフルテキストインデックス化するために、PDFファイルのテキスト部分全体を抽出できるツールがいくつかあります。プログラムでPDFファイルのテキストを検索し、ページ番号を教えてください。
私が必要とするのは、特定の文字列を検索する方法であり、そのファイルがPDFファイルで見つかった場合は、ページ番号を返しますか?
PDFをフルテキストインデックス化するために、PDFファイルのテキスト部分全体を抽出できるツールがいくつかあります。プログラムでPDFファイルのテキストを検索し、ページ番号を教えてください。
私が必要とするのは、特定の文字列を検索する方法であり、そのファイルがPDFファイルで見つかった場合は、ページ番号を返しますか?
この例では、Adobe Readerで付属のライブラリを使用しており、http://www.dotnetspider.com/resources/5040-Get-PDF-Page-Number.aspxから来ている:あなたは、PDFファイル内のテキストを検索するためにDocotic.Pdf libraryを使用することができます
using Acrobat;
using AFORMAUTLib;
private void pdfRandD(string fPath)
{
AcroPDDocClass objPages = new AcroPDDocClass();
objPages.Open(fPath);
long TotalPDFPages = objPages.GetNumPages();
objPages.Close();
AcroAVDocClass avDoc = new AcroAVDocClass();
avDoc.Open(fPath, "Title");
IAFormApp formApp = new AFormAppClass();
IFields myFields = (IFields)formApp.Fields;
string searchWord = "Search String";
string k = "";
StreamWriter sw = new
StreamWriter(@"D:\KCG_FileChecker_Inputs\MAC\pdf\0230_525490_23_cha17.txt", false);
for (int p = 0; p < TotalPDFPages; p++)
{
int numWords = int.Parse(myFields.ExecuteThisJavascript("event.value=this.getPageNumWords(" + p + ");"));
k = "";
for (int i = 0; i < numWords; i++)
{
string chkWord = myFields.ExecuteThisJavascript("event.value=this.getPageNthWord(" + p + "," + i + ", true);");
k = k + " " + chkWord;
}
if(k.Trim().Contains(searchWord))
{
int pNum = int.Parse(myFields.ExecuteThisJavascript("event.value=this.getPageLabel(" + p + ",true);"));
sw.WriteLine("The Word " + searchWord + " is exists in " + pNum);
}
}
sw.Close();
MessageBox.Show("Process completed");
}
。サンプル後
は、PDFファイルとそれに対応するページ番号で指定された文字列を検索する方法を示しています。
static void searchForTextStrings()
{
string path = "";
string[] stringsToFind = new string[] { };
using (PdfDocument pdf = new PdfDocument(path))
{
for (int i = 0; i < pdf.Pages.Count; i++)
{
string pageText = pdf.Pages[i].GetText();
foreach (string s in stringsToFind)
{
int index = pageText.IndexOf(s, 0, StringComparison.CurrentCultureIgnoreCase);
if (index != -1)
Console.WriteLine("'{0}' found on page {1}", s, i);
}
}
}
}
あなたはIndexOfメソッドの第三引数を削除する場合は、大文字と小文字を区別した検索を行うことができます。
免責事項:私はBit Miracle、ライブラリのベンダーのために働いています。
ありがとうコードです!このサンプルでは、Adobe Professionalのインストールが必要です。ライセンスロイヤルティの理由から、私はむしろこれを行うためのコンポーネントを持っているのが好きです。 – splattne