GcPdfSearcher クラス

PDFドキュメントのサーチャー。 非同期検索結果を生成します(search メソッドを参照します)。GcPdfSearcher APIは、検索パネルUIで内部的に使用されるように設計されます。

階層

  • GcPdfSearcher

実装

  • IPdfSearcher

メソッド

  • 指定されたクエリと一致オプションに基づいて、指定されたページ コンテンツ内のフレーズ一致を計算します。

    戻り値

    一致とその長さを含むオブジェクト。

    戻り値

    matches - 一致が見つかったページ上の文字インデックス (文字インデックス) の配列。

    戻り値

    matchesLength - 一致したテキストごとに長さの配列。

    パラメータ

    • query: string

      検索するクエリ文字列。

    • pageContentsEndings: { [x: number]: boolean }

      ページの行末を表すオブジェクト。キーは文字インデックス、値は行末を示します。

      • [x: number]: boolean
    • pageContent: string

      ページの内容。

    • entireWord: boolean

      単語全体のみを一致させるかどうか。

    • startsWith: boolean

      クエリがクエリ文字列で始まるフレーズと一致するかどうか。

    • endsWith: boolean

      クエリがクエリ文字列で終わるフレーズと一致するかどうか。

    • wildcards: boolean

      クエリが一致のためにワイルドカードを許可するかどうか。

    戻り値 { matches: number[]; matchesLength: number[] }

    • matches: number[]
    • matchesLength: number[]
  • PDF ドキュメントからすべてのテキストを一度に抽出します。

    戻り値 void

  • 最初/最後の文字タイプを前/後の文字タイプと比較して、検索クエリが「単語全体」を構成しているかどうかを判断します。

    パラメータ

    • content: any
    • lineEndings: { [x: number]: boolean }
      • [x: number]: boolean
    • startIdx: any
    • length: any

    戻り値 boolean

  • matchesWithLength 配列を埋め、1 つの検索用語に別の検索用語が含まれるケース (たとえば、「tamed tame」や「this is」) を処理する、複数用語検索のヘルパー。「matches」内で交差する用語を検索し、一致の長さが長い要素を保持します。

    パラメータ

    • matchesWithLength: any
    • matches: any
    • matchesLength: any

    戻り値 void

  • 現在の検索結果のハイライトをレンダリングします。

    戻り値 void

  • 検索タスクをキャンセルします。

    サンプル

    // ドキュメントを開き、「wildlife」というテキストを見つけて、最初の結果を強調表示します。
    async function loadPdfViewer(selector) {
    var viewer = new GcPdfViewer(selector, { restoreViewStateOnLoad: false });
    viewer.addDefaultPanels();
    var afterOpenPromise = new Promise((resolve)=>{ viewer.onAfterOpen.register(()=>{ resolve(); }); });
    await viewer.open('wetlands.pdf');
    await afterOpenPromise;
    var findOptions = { Text: 'wildlife' };
    var searchIterator = await viewer.searcher.search(findOptions);
    var searchResult = await searchIterator.next();
    viewer.searcher.cancel();
    viewer.searcher.highlight(searchResult.value);
    }
    loadPdfViewer('#root');

    戻り値 void

  • 特定のページ上のテキストの指定された部分を強調表示します。

    戻り値

    テキストが正常に強調表示された場合は true に解決され、それ以外の場合は false に解決される Promise。

    サンプル

    // 最初のページの 10 文字目から 20 文字目までのテキストをカスタムのハイライト カラーでハイライトします。
    viewer.highlightTextSegment(0, 10, 20, {
    color: 'rgba(173, 216, 230, 0.5)', // semi-transparent light blue
    borderColor: 'blue', // 境界線の色の名前
    borderWidth: 4, // カスタム境界線の幅
    clearPrevious: true
    });

    パラメータ

    • pageIndex: number

      テキストが配置されているページのインデックス (0 から始まる)。

    • startCharIndex: number

      強調表示するテキスト セグメントの開始文字インデックス (0 から始まる)。

    • endCharIndex: number

      強調表示するテキスト セグメントの終了文字インデックス (0 から始まる)。このインデックスの文字は強調表示から除外されます。

    • オプション args: { borderColor?: string; borderWidth?: number; color?: string; paintHandler?: any }

      色、境界線の色、幅など、ハイライトをカスタマイズするためのオプション パラメーター。

      • オプション borderColor?: string
      • オプション borderWidth?: number

        ハイライト境界線の幅(ピクセル単位)(デフォルトは 2 ピクセル)。

      • オプション color?: string
      • オプション paintHandler?: any

        ハイライトのペイントを処理するためのカスタム関数 (オプション)。

    戻り値 Promise<null | ICustomHighlight>

  • 特定のページのコンテンツを取得します。

    戻り値

    指定されたページの内容。

    パラメータ

    • pageIndex: number

      ページのインデックス。

    戻り値 Promise<string>

  • 特定のページのコンテンツの行末を取得します。

    戻り値

    指定されたページのコンテンツの行末。

    パラメータ

    • pageIndex: number

      ページのインデックス。

    戻り値 Promise<{ [x: number]: boolean }>

  • 特定のページのテキストの四角形とスタイルを取得します。

    戻り値

    指定されたページのテキストの四角形とスタイル。

    パラメータ

    • pageIndex: number

      ページのインデックス。

    戻り値 Promise<{ items: IGcTextRect[]; styles: any[] }>

  • pageContent から startIndendInd の間の部分文字列を抽出し、オプションで pageContentsEndings マッピングに基づいて行末をスペースで埋めます。

    戻り値

    改行時にオプションでスペースが挿入される部分文字列。

    パラメータ

    • startInd: number

      pageContent 内の部分文字列の開始インデックス。

    • endInd: number

      pageContent 内の部分文字列の終了インデックス。

    • pageContent: string

      部分文字列が抽出されるページの完全なコンテンツ。

    • pageContentsEndings: { [x: number]: boolean }

      行末が発生する場所を示すマッピング。

      • [x: number]: boolean
    • オプション fillLineEndingsWithSpaces: boolean = true

      行末にスペースがない場合にスペースで埋めるかどうか。

    戻り値 string

  • 指定された検索結果に対して一意のハッシュ ID を生成します。

    戻り値

    検索結果のプロパティに基づく一意のハッシュ ID。

    パラメータ

    • searchResult: SearchResult

      ハッシュ ID を生成する検索結果オブジェクト。

    戻り値 string

  • 結果を含むページに移動し、見つかったテキストをハイライト表示します。

    サンプル

    // ドキュメントを開き、「wildlife」というテキストを見つけて、最初の結果を強調表示します。
    async function loadPdfViewer(selector) {
    var viewer = new GcPdfViewer(selector, { restoreViewStateOnLoad: false });
    viewer.addDefaultPanels();
    var afterOpenPromise = new Promise((resolve)=>{ viewer.onAfterOpen.register(()=>{ resolve(); }); });
    await viewer.open('wetlands.pdf');
    await afterOpenPromise;
    var findOptions = { Text: 'wildlife' };
    var searchIterator = await viewer.searcher.search(findOptions);
    var searchResult = await searchIterator.next();
    viewer.searcher.cancel();
    viewer.searcher.highlight(searchResult.value);
    }
    loadPdfViewer('#root');

    パラメータ

    • searchResult: null | SearchResult
    • オプション pageIndex: number

    戻り値 Promise<void>

  • 特定の検索結果が現在選択されているかどうかを確認します。

    戻り値

    提供された検索結果が現在選択されているかどうかを示すブール値。

    パラメータ

    • result: SearchResult

      選択のためにチェックする検索結果。

    戻り値 boolean

  • 主に PDF Searcher によって内部的に使用される次の検索結果を発行します。

    戻り値

    処理された検索結果で解決される Promise。

    パラメータ

    • result: SearchResult

      処理する検索結果。

    • cancellation: any

      キャンセルの可能性を処理するためのキャンセル トークン。

    戻り値 Promise<SearchResult>

  • 検索結果をクリアします。このメソッドは、SearchPanel が閉じられているときに呼び出す必要があります。

    戻り値 void

  • 提供された検索オプションに基づいて、検索結果を非同期に生成します。

    サンプル

    // SearchPanel を開かずにすべての検索結果を強調表示します。
    const searchIterator = viewer.searcher.search({ Text: "test", MatchCase: true, HighlightAll: true });
    searchIterator.next();
    searcher.applyHighlight();

    サンプル

    // べての検索結果を繰り返す。
    const searcher = viewer.searcher;
    var searchResults = [];
    const searchIterator = searcher.search({ Text: textToSearch, MatchCase: true });
    var searchResult = await searchIterator.next();
    if (searchResult.value)
    searcher.highlight(searchResult.value)
    while (searchResult.value && !searchResult.done) {
    const searchResultValue = searchResult.value;
    searchResults.push(`index: ${searchResultValue.ItemIndex}, text: ${searchResultValue.DisplayText}, pageIndex: ${searchResultValue.PageIndex}`);
    searchResult = await searchIterator.next();
    }
    console.log("Search results: " + (searchResults.length ? searchResults.join("; ") : "No search results"));

    サンプル

    // ドキュメントを開き、「wildlife」というテキストを見つけて、最初の結果を強調表示します。
    async function loadPdfViewer(selector) {
    var viewer = new DsPdfViewer(selector, { restoreViewStateOnLoad: false });
    viewer.addDefaultPanels();
    var afterOpenPromise = new Promise((resolve)=>{ viewer.onAfterOpen.register(()=>{ resolve(); }); });
    await viewer.open('wetlands.pdf');
    await afterOpenPromise;
    var findOptions = { Text: 'wildlife' };
    var searchIterator = await viewer.searcher.search(findOptions);
    var searchResult = await searchIterator.next();
    viewer.searcher.cancel();
    viewer.searcher.highlight(searchResult.value);
    }
    loadPdfViewer('#root');

    サンプル

    // ドキュメントを開き、「wildlife」というテキストを見つけて、検索結果をコンソールに出力します。

    async function loadPdfViewer(selector) {
    var viewer = new DsPdfViewer(selector);
    viewer.addDefaultPanels();
    await viewer.open('wetlands.pdf');
    await (new Promise((resolve)=>{
    viewer.onAfterOpen.register(()=>{
    resolve();
    });
    }));
    var findOptions = {
    Text: 'wildlife',
    MatchCase: true,
    WholeWord: true,
    StartsWith: false,
    EndsWith: false,
    Wildcards: false,
    Proximity: false,
    SearchBackward: false,
    HighlightAll: true
    };
    var searcher = viewer.searcher;
    var searchIterator = await searcher.search(findOptions);
    var resultsCount = 0;
    var searchResult;
    do {
    searchResult = await searchIterator.next();
    if (searchResult.value) {
    // これは結果または進行状況メッセージのいずれかです (ItemIndex < 0)
    if(searchResult.value.ItemIndex >= 0) {
    console.log('next search result:');
    console.log(searchResult.value);
    resultsCount++;
    } else {
    const pageCount = _doc.pageCount.totalPageCount || _doc.pageCount.renderedSoFar;
    console.log('search progress, page index is ' + searchResult.value.PageIndex);
    }
    }
    else {
    console.log("Search completed");
    break;
    }
    }
    while(!searchResult.done);
    console.log('Total results count is ' + resultsCount);
    }

    戻り値

    検索結果を生成する非同期反復可能イテレータ。

    パラメータ

    • options: FindOptions

      検索をカスタマイズするための検索オプション。

    戻り値 AsyncIterableIterator<SearchResult>

  • 検索 UI の表示を切り替えます。

    パラメータ

    • オプション forceExpand: boolean = true

      検索 UI を強制的に展開するかどうかを示します。デフォルトは true です。

    • オプション replaceMode: boolean = false

      検索 UI で置換モードを有効にします。デフォルトは false です。

    戻り値 void

  • 表示されているページのハイライトを再描画します。

    戻り値 void

アクセサー

  • get _query(): string
  • 戻り値

    (現在の) 正規化された検索クエリ。

    戻り値 string

  • get highlightAll(): boolean
  • highlightAll オプションを取得します。

    戻り値 boolean

  • set highlightAll(checked: boolean): void
  • highlightAll オプションを設定します。

    パラメータ

    • checked: boolean

    戻り値 void

  • get selectedSearchResult(): undefined | SearchResult
  • 選択した検索結果を取得します。

    戻り値 undefined | SearchResult

  • get selectedSearchResultIndex(): number
  • 選択された検索結果のインデックスを取得します。何も選択されていない場合は -1 を返します。

    戻り値 number

  • get state(): PdfSearcherOptions
  • 空でない検索オプションを取得します。

    戻り値

    PDF 検索オプションの現在の状態。有効なオブジェクトであることを確認します。

    戻り値 PdfSearcherOptions

  • get totalResultsCount(): number
  • 検索結果の合計数を取得します。

    戻り値 number

  • get totalResultsCountPromise(): null | Promise<number>
  • 検索結果Promiseの合計数を取得します。

    戻り値 null | Promise<number>