コードによるテキストマークアップ注釈の追加

このサンプルでは、特定の文字列を検索し、該当した文字列にハイライト注釈を追加する方法を紹介しています。

// サンプル:検索した文字列をハイライト注釈で強調表示する window.onload = function () { const viewer = new DsPdfViewer("#viewer", { workerSrc: "/diodocs/pdfviewer/demos/product-bundles/build/dspdfviewer.worker.js", supportApi: getSupportApiSettings(), restoreViewStateOnLoad: false, language: "ja" }); viewer.addDefaultPanels(); viewer.addAnnotationEditorPanel(); viewer.addFormEditorPanel(); var pdf = "/diodocs/pdfviewer/demos/product-bundles/assets/pdf/wetlands.pdf"; loadPdf(viewer, pdf, "wetlands"); // PDFを読み込み、文字列"wetlands"を検索します } // PDFを読み込み、特定の文字列で検索後、その文字列をハイライト表示する処理 async function loadPdf(viewer, pdf, searchText) { // ドキュメントを開きます await viewer.open(pdf); // 必要に応じて検索条件を設定します var findOptions = { Text: searchText, MatchCase: true, // 大文字・小文字を区別する WholeWord: true, // 単語単位で検索 StartsWith: false, // 単語の先頭に限らない EndsWith: false, // 単語の末尾に限らない Wildcards: false, // ワイルドカードは使用しない Proximity: false, // 近接検索を行わない SearchBackward: false, // ドキュメントの最初から正順で検索する HighlightAll: false // 検索結果をハイライト表示しない }; // 検索を開始します var searchIterator = await viewer.searcher.search(findOptions); // 検索結果を配列に格納します var searchResult = await searchIterator.next(); // 最初の検索結果を取得 var searchResults = []; while (!searchResult.done) { searchResults.push(searchResult); // 検索結果を配列に格納 searchResult = await searchIterator.next(); // 次の検索結果を取得 } // それぞれの検索結果文字列にハイライト注釈を設定します createHighlights(viewer, searchResults); } // 検索結果に対してハイライト注釈を設定する処理 async function createHighlights(viewer, searchResults) { for (let i = 0; i < searchResults.length; i++) { const searchResultValue = searchResults[i].value; await viewer.addAnnotation(searchResultValue.PageIndex, { annotationType: 9, subtype: "Highlight", color: [255, 63, 127], // 注釈色 (RGB) rect: searchResultValue.coordinates.outerRect // テキストの矩形座標 }); } viewer.repaint(); // 注釈を表示するため、ビューワを再描画 }
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>コードによるテキストマークアップ注釈の追加</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="./src/styles.css"> <script src="/diodocs/pdfviewer/demos/product-bundles/build/dspdfviewer.js"></script> <script src="/diodocs/pdfviewer/demos/product-bundles/build/wasmSupportApi.js"></script> <script src="/diodocs/pdfviewer/demos/resource/js/init.js"></script> <script src="src/app.js"></script> </head> <body> <div id="viewer"></div> </body> </html>
#viewer { height: 100%; } body { overflow: hidden; }