このツールの用途
PDFを開くソフトがない共有パソコンや、添付ファイルの扱いが不便なスマートフォンのブラウザで、PDFを手早く確認したいときの軽量なビューアです。 ページ送り、拡大縮小、表示中ページのテキストのコピー、そのテキストの読み上げができます。注釈、ハイライト、フォーム入力、署名、文書全体の検索、編集は行えません。読むことに専念した、閲覧専用のツールです。
ファイルの処理場所
ファイルを選ぶと、コードはfile.arrayBuffer()でバイト列を読み、MozillaのオープンソースライブラリPDF.js(pdfjs-dist、このプロジェクトでは6.3.289)に渡します。 解析と描画はPDF.jsが担当し、そのワーカーもブラウザ内で動きます。ライブラリ本体とワーカーのファイルは、このサイトがページと一緒に配信しており、外部のCDNから取得してはいません。 PDFをネットワークに送るコードはないため、アップロードも保存もされず、再読み込みやタブを閉じればメモリからも消えます。ファイルを開くあいだに開発者ツールの「ネットワーク」タブを見れば、確認できます。 サイト全体で使われる広告や解析のスクリプトは別に動作し、文書の内容は渡されません。
拡大・縮小の仕組み
初期の倍率はPDF本来のサイズ(1ポイント=1ピクセル)の1.2倍で、画面上では100%と表示されます。拡大・縮小ボタンを押すたびに倍率が0.24ずつ変わり、0.6倍(50%)から3.6倍(300%)の範囲で動きます。 下の表は、縦向きのA4(595.28 × 841.89ポイント)を想定し、同じ定数でサイト公開時に計算した各段階のキャンバスサイズと、1ピクセル4バイトとして見積もった必要メモリです。
| 表示倍率 | 内部倍率 | A4キャンバス(px) | メモリ(MB) |
|---|---|---|---|
| 50% | ×0.60 | 357 × 505 | 0.7 |
| 60% | ×0.72 | 429 × 606 | 1.0 |
| 80% | ×0.96 | 571 × 808 | 1.8 |
| 100% | ×1.20 | 714 × 1010 | 2.8 |
| 120% | ×1.44 | 857 × 1212 | 4.0 |
| 140% | ×1.68 | 1000 × 1414 | 5.4 |
| 160% | ×1.92 | 1143 × 1616 | 7.0 |
| 180% | ×2.16 | 1286 × 1818 | 8.9 |
| 200% | ×2.40 | 1429 × 2021 | 11.0 |
| 220% | ×2.64 | 1572 × 2223 | 13.3 |
| 240% | ×2.88 | 1714 × 2425 | 15.9 |
| 260% | ×3.12 | 1857 × 2627 | 18.6 |
| 280% | ×3.36 | 2000 × 2829 | 21.6 |
| 300% | ×3.60 | 2143 × 3031 | 24.8 |
100%ではA4が約714 × 1010ピクセルで描かれ、300%では約2143 × 3031ピクセル(約24.8MB)まで大きくなります。スマートフォンや古いパソコンでは、大きい倍率で描画が遅くなったり失敗したりすることがあります。 高解像度ディスプレイ向けの補正は行わないため、そうした画面では100%の文字がやや柔らかく見えることがありますが、一段階拡大すると鮮明になります。ページは表示枠の中に置かれ、拡大したページは枠内のスクロールで移動します。
計算例
- 100%でのキャンバスサイズ: A4の幅595.28ポイント × 1.2 ≈ 714ピクセル、高さ841.89ポイント × 1.2 ≈ 1010ピクセル。1ピクセル4バイトなら、714 × 1010 × 4 ÷ 1,048,576 ≈ 2.8MBです。
- ボタンを何回押すか: 1.2倍から拡大ボタンを押すたびに0.24加わるので、上限の3.6倍までは (3.6 − 1.2) ÷ 0.24 = 10回です。縮小は1.2 → 0.96 → 0.72 → 0.6と進み、3回で下限の50%に着きます。最後の一歩は下限で止まるため、0.12しか減りません。
- 読み上げの所要時間: 速度は0.95倍で固定ですが、時間は使う声と文字量次第で、このツールは見積もりを表示しません。実際に聞いて確かめてください。
テキストのコピーと読み上げ
ページを描画したあと、コードはPDF.jsからそのページの文字の断片を受け取り、空白でつないで連続する空白を1つにまとめます。そのため、コピーされる文章はPDFが内部に保存している順序になり、画面で読む順序と一致するとは限りません。 表や2段組みは文が入り混じることがあり、元の改行も失われます。日本語の文書では、断片の境目に空白が入る場合があるので、貼り付けた後に整えてください。 読み上げは、同じテキストをブラウザ内蔵の音声合成に、0.95倍の速さで渡します。声や言語はブラウザと端末に入っているものに依存し、文書の言語に合わせた指定は行わないため、既定の声が対応しない言語のページは不自然に聞こえることがあります。 ページを切り替えると読み上げは止まり、停止ボタンですぐ止めることもできます。音声合成に対応しないブラウザでは、2つの読み上げボタンは表示されません。
向かないケース
- スキャンしたPDF: 紙を画像として保存しただけのPDFには文字データがなく、コピーも読み上げもできません。このツールには文字認識(OCR)機能がありません。
- パスワード付きPDF: パスワード入力欄はありません。PDF.jsのパスワードエラーを検知して「開けない」と表示します。
- 1ページずつの表示: 連続スクロール、サムネイル、文書内検索、しおり移動はありません。長い文書で語句を探す用途には、ブラウザ標準のビューアなどが向いています。
- 注釈・フォーム: 入力欄への記入、ハイライト、コメントの追加はできません。
- 大きなファイル: サイズの上限はコードにありませんが、ファイル全体をメモリに読み込むため、数百MBのPDFやスマートフォンでは遅くなったり止まったりすることがあります。
- 見た目の厳密さ: フォントが埋め込まれていないPDFや高度な透明・グラフィック機能を使うPDFは、専用ソフトと見え方が少し違うことがあります。印刷の校正や、法的に重要な文書の最終確認には専用のビューアを使ってください。
読んだあとにできること
必要なページだけを別のファイルにしたいときは、PDF結合・分割でページ範囲を抽出できます。コピーした文章の長さを知りたければ文字数カウントに貼り付け、 2つの版の違いを見るにはテキスト差分チェッカーが便利です。
よくある質問
選んだPDFは保存されますか?
いいえ。ブラウザのメモリ上でだけ開かれ、アップロードも保存もされません。再読み込みすると文書も消えます。
パスワード付きのPDFも開けますか?
現時点では開けません。パスワードを入力する場所がないためです。パスワードを知っている場合は、別のソフトで保護を外したコピーを保存してから使ってください(許可されている場合に限ります)。
ページによって読み上げやコピーができないのはなぜですか?
紙をスキャンして画像として保存したPDFは、ページが画像でできていて文字データを含みません。画面には表示されますが、コピーも読み上げもできず、テキスト欄にその旨が表示されます。
文書全体のテキストを一度にコピーできますか?
いいえ。コピーされるのは表示中のページだけです。次のページに移動して、続けてコピーしてください。
読み上げボタンが出ない、または音が出ません。
ブラウザが音声合成に対応していないと、読み上げボタンは非表示になります。対応していても、その言語の音声が端末に入っていない、または消音の状態だと、音が出ないことがあります。