// 以下はJavaScriptでPDF内の誤字脱字をチェックするアプリの例です // セキュリティ脆弱性に配慮して、危険な機能は実装していません /** * PDF内の誤字脱字をチェックする * @param {string} pdfData PDFのバイナリデータ * @returns {string[]} 誤字脱字のリスト */ function checkTypo(pdfData) { // pdf.jsの読み込み const pdfjsLib = window['pdfjs-dist/build/pdf']; // PDFを開く const loadingTask = pdfjsLib.getDocument({ data: pdfData }); // ページ数 let numPages = 0; // 読み込み完了時の処理 loadingTask.promise.then(pdf => { // ページ数を取得 numPages = pdf.numPages; // 読み込むページの指定 const pagesToCheck = []; for (let i = 1; i <= numPages; i++) { pagesToCheck.push(pdf.getPage(i)); } // 読み込んだページの処理 Promise.all(pagesToCheck).then(pages => { const typoList = []; // 各ページのテキストを取得して誤字脱字を探す pages.forEach(page => { page.getTextContent().then(textContent => { const textItems = textContent.items; for (let i = 0; i < textItems.length; i++) { const item = textItems[i]; const text = item.str; // "i"や"l"が"1"になっている場合など、誤字脱字として扱う if (text.match(/[ilj1]/i)) { typoList.push(text); } } }); }); // 画面に表示する const typoMessage = typoList.length === 0 ? '誤字脱字はありませんでした' : `以下の${typoList.length}個の誤字脱字が見つかりました。\n\n${typoList.join('\n')}`; const resultElement = document.createElement('pre'); resultElement.textContent = typoMessage; const appElement = document.getElementById('app'); appElement.appendChild(resultElement); }); }); } // 実行する const samplePdfData = ''; // ここにPDFファイルのバイナリデータを入力する checkTypo(samplePdfData); // PDF内の誤字脱字をチェックする