PDF を分割してページを抽出する方法
分割とは、選んだページを新しい PDF ファイルにコピーすることです。元のファイルは変更されません。このガイドでは、LeedyBox のツールにある2つのモード、ページ範囲の書き方、分割したファイルの合計が元のファイルより大きくなることがある理由、そしてファイルを送る前に確認すべきことを説明します。
分割が役立つ場面
- 必要な部分だけを送る: たとえば、48ページの契約書のうち署名が必要な2ページだけを送る場合。
- アップロードフォームでファイルサイズやページ数に制限がある場合。
- まとめてスキャンした書類を分ける: 30枚のレシートをスキャナーで一度に読み込むと、1つのファイルになります。レシート1枚が1ページに収まっていれば、「全ページを抽出」でレシートごとに1つのファイルにできます。
- 別のツールで使うページを準備する: 「PDF を JPG に変換」ツールは、すべてのページを変換して1つの ZIP にまとめるか、1ページずつクリックして保存する仕組みです。80ページのレポートから先に5〜12ページを抽出しておけば、80枚ではなく8枚の画像が入った ZIP が得られます(PDF のページを JPG・PNG に変換する方法を参照)。
ページの順番を直したい場合や、数ページを削除したいだけの場合は、PDF のページを並べ替え・回転・削除する方法をご覧ください。
2つのモードと3種類の結果
ダウンロードされるファイルは、選んだタブと選択したページ数によって決まります。report.pdf の場合は次のとおりです。
| モード | 結果 | ファイル名 |
|---|---|---|
| 「指定範囲を抽出」で1ページを選択 | 1ページの PDF | report_page_7.pdf |
| 「指定範囲を抽出」で複数ページを選択 | 選択したすべてのページを元の順番で収めた1つの PDF | report_extracted.pdf |
| 「全ページを抽出」 | 1ページごとの PDF をまとめた ZIP アーカイブ | report_all_pages.zip(中身は report_page_1.pdf、report_page_2.pdf …) |
つまり、1-3, 5, 8-10 と指定すると、3つのファイルではなく7ページの1つのファイルになります。部分ごとに別々のファイルにしたい場合は、1つずつ順番に抽出します。ダウンロードした後も文書は読み込まれたままなので、1-3 と入力してダウンロードし、続けて 5 と入力してもう一度ダウンロードすれば済みます。複数ページの抽出結果はどれも report_extracted.pdf という名前になり、同じ名前のファイルが続くとブラウザは通常、名前に番号を付け足します。ダウンロードのたびにファイル名を変更しておきましょう。
手順
- PDF 分割を開き、PDFファイルを選択またはここにドラッグ&ドロップ で PDF を1つ選びます。複数のファイルをドロップした場合は、最初の1つだけが使われます。
- すべてのページのサムネイルが描画されるまで待ちます。描画が終わると、タブの上にファイル名、サイズ、ページ数が表示されます。最初はすべてのページが選択された状態です。
- 指定範囲を抽出 タブで、ページ範囲(例:1-3、5、8-10) の欄に入力するか、サムネイルをクリックします。入力欄には最初から
1-40のように全範囲が入っているので、先に消去するか、すべて選択解除 をクリックしてください。すべて選択 を押すとすべてのページが選択し直され、選択数は「7 / 40ページを選択中」のように表示されます。 - または 全ページを抽出 に切り替えます。このモードでは、ページの選択は無視されます。
- PDFを分割してダウンロード をクリックします。ファイルを変更 を押すと最初からやり直せます。
サムネイルをクリックすると、入力欄の範囲が簡潔な形に書き直されます。たとえば2、3、4、9ページを選ぶと 2-4, 9 になります。サムネイルは低い解像度で描画されるため、内容はダウンロードしたファイルで確認しましょう。
ページ範囲の書き方
番号はファイル内でのページの位置を表し、1から始まります。サムネイルの下にあるバッジ(「1ページ」など)と同じ番号です。
- 項目は半角のカンマ(,)で区切り、範囲は半角のハイフン(-)で指定します。前後のスペースは結果に影響しません。
- 順番や重複は関係ありません。
8-10, 1-3, 2と入力すると、1、2、3、8、9、10ページが元の順番で選択されます。 10-8は8〜10ページとして扱われ、40ページのファイルで38-45と指定すると40ページまでが選択されます。最終ページを超える単独の番号や 0 は無視されます。5-や-3のように始まりか終わりを省いた範囲は無視されます。5-40のように両端を書きましょう。- 認識されるのは半角のハイフンとカンマだけです。ワープロから貼り付けたダッシュ(
1–3)や全角ハイフン(1-3)では1ページ目だけが選択され、1 3や1;3も同じ結果になります。読点や全角カンマも区切りとして扱われないため、1、3では1ページ目だけ、1-3、5では1〜3ページだけが選ばれます。全角数字は無視されます。入力欄のラベルの例は読点で区切られていますが、実際には半角のカンマで入力してください。
ページに印刷された番号は、ファイル内の位置と一致しないことがよくあります。表紙と前付け4ページ(i〜iv)の後に1ページ目が始まるレポートなら、印刷上の12ページはファイルの17ページ目(1 + 4 + 12)にあたります。ダウンロードする前に、選択されて強調表示されたサムネイルを確認しましょう。
分割後のファイルの合計が元より大きくなることがある理由
埋め込みフォントやヘッダーのロゴのように多くのページで使われるフォントや画像は、元のファイルでは通常1回だけ保存され、すべてのページで共有されています。一方、新しいファイルには、そのページが参照するリソースのコピーをファイルごとに持たせる必要があります。pdf-lib はこうしたリソースをそのままコピーします。コピーしたページで使われている文字だけにフォントを絞り込むことも、ページのリソース一覧に載っているだけで実際には使われていない項目を取り除くこともしません。そのため、1ページだけのファイルでも文書全体のために作られたフォントのサブセットを抱えることがあり、すべてのページが1つのリソース一覧を共有しているファイルでは、その一覧にあるフォントと画像をすべて抱えることになります。
私たちのテストでは、Python の ReportLab で A4 サイズ・40ページのテキスト主体のレポート(2種類の DejaVu フォントをサブセットとして埋め込み、全ページに 900 × 240 ピクセルの JPEG ロゴを配置)を作成しました。これを、LeedyBox のツールが読み込むのと同じバージョンの pdf-lib 1.17.1 を使い、Node.js 上で同じ処理を呼び出して分割した結果が次のとおりです。
| 出力 | サイズ |
|---|---|
| 元のファイル(40ページ) | 約 151 KB |
| 1ページの PDF(1ファイルあたり) | 約 86 KB |
| 40ページすべてを個別のファイルにしたもの(ZIP) | 約 3.4 MB(元のファイルのおよそ23倍) |
1-3, 5, 8-10 を1つの7ページの PDF にしたもの |
約 94 KB |
スキャンに近いファイルでは結果が異なりました。Pillow で 1,240 × 1,754 ピクセルのグレースケール JPEG(150 dpi)から作った A4・10ページのファイルは約 2.6 MB で、1ページずつに分けた10ファイルの合計も約 2.6 MB でした。ページ間で共有されているものがないためです。実際の数値はファイルによって異なりますが、要点は次のとおりです。
- スキャンした文書は、ページ数を減らすとほぼそれに比例して小さくなります(このスキャンから7ページを抽出したファイルは約 1.8 MB でした)。テキスト主体の文書では、フォントや共有画像の分だけ一定のサイズが残ります。
- 複数のページを1つのファイルにまとめたほうが、同じページを別々のファイルにするより、通常は合計サイズが小さくなります。
- このツールは PDF を圧縮せずに ZIP に格納するため、ZIP のサイズは中のファイルの合計とほぼ同じになります。
それでもファイルが大きすぎる場合は、PDF を圧縮する方法をご覧ください。
新しいファイルに残るもの・失われるもの
ページは再描画されずにコピーされます。テキストは選択できるままで、画像は再圧縮されず、ページサイズと回転も保たれます。コピーしたページ上のウェブリンクも残ります。一方、文書全体に属する情報はコピーされず、ページの機能の中にはそうした情報に依存しているものもあります。
- しおりとページラベル(i、ii、iii のような独自の番号付け)。
- タイトル、作成者などの文書のプロパティ。新しいファイルには、PDF 作成ソフト(Producer)として pdf-lib が、作成日として分割した日時が記録されます。
- アクセシビリティタグ(スクリーンリーダーが見出しや読み上げ順序を把握するために使う構造情報)。元のファイルがタグ付きでも、新しいファイルにはタグがありません。
- 目次の項目などの文書内リンクは、リンク先のページを抽出しなかった場合や、リンクが文書レベルで保存される「名前付き移動先」(named destination)を使っている場合に、どこにも移動しなくなることがあります。フォームフィールドも、所属するフォームが文書レベルで定義されているため、入力できなくなることがあります。
- デジタル署名は有効なままにはなりません。署名は元のファイルの正確なバイト列を対象にしているため、コピーしたページに署名が表示されていても、新しいファイルについては何も証明しません。署名済みの元のファイルは保管しておきましょう。
分割は機密ページを取り除く安全な方法ではありません
pdf-lib 1.17.1 を使ったテストで、1ページ目に5ページ目へのリンクがある6ページの PDF から、1ページ目を抽出しました。新しいファイルには1ページだけが表示され、テキスト抽出ツールでも1ページ目のテキストしか見つかりませんでした。ところが、5ページ目の内容は使われないデータとしてファイル内に保存されており、ファイルの内部構造を調べれば誰でも読み取れる状態でした。目次や相互参照があると、このようにほかのページが取り込まれることがあります。また、コピーしたページ上に隠れている内容(黒い四角の下にあるテキストや、表示領域の外にあるテキストなど)もそのままコピーされます。機密性の高い資料には、PDF エディターの墨消し(リダクション)機能やサニタイズ機能を使うか、PDF を JPG に変換で作成したページ画像を送りましょう。画像に含まれるのはページに描画された見た目だけで、テキストレイヤーや隠れたオブジェクトは含まれません。ただし、その代わりにテキストの選択や検索はできなくなります。
よくある問題と対処法
- 「…はブラウザで読み込めないか、破損したPDFファイルです。」と表示される。ファイルが破損しているか、開くのにパスワードが必要な可能性があります。このツールにはパスワードの入力欄がありません。許可されている場合は、パスワードを入力できるアプリケーションで、保護を解除したコピーを保存してください。
- サムネイルは表示されるのに、分割すると「PDF分割中にエラーが発生しました」と表示され、暗号化(encrypted)に関する英語のメッセージが続く。その PDF はパスワードなしで開けるものの、暗号化されています。編集や印刷の制限といった権限設定は、暗号化を使って保存されているためです。プレビューは PDF.js で描画されますが、分割は pdf-lib が行います。このツールの呼び出し方では、pdf-lib は暗号化されたファイルの読み込みを拒否します。このツールがこの保護を解除したり回避したりすることはありません。
- 「抽出するページを1つ以上選択してください。」と表示される。有効なページが1つも選択されていません。たとえば すべて選択解除 を押した後や、始まりか終わりを省いた範囲を入力した場合です。
- 違うページが抽出された。ダッシュや全角文字が混じっていないか、カンマが抜けていないか、印刷されたページ番号で指定していないかを確認しましょう。
- ページ数の多いファイルで処理が遅い。操作ボタンが表示される前にすべてのサムネイルが描画され、それが終わるまで進行状況バーは2割ほどのところから進まないため、ページ数の多いファイルでは止まっているように見えることがあります。また「全ページを抽出」では、すべてのファイルと ZIP をメモリ上で作成します。このツール自体はファイルサイズの上限を設けていませんが、パソコンでは処理できる非常に大きなファイルでも、スマートフォンでは失敗することがあります。
ファイルを送る前に
各ファイルのページ数、最初と最後のページ、サイズを確認し、contract_signature_pages.pdf のように内容がわかる名前を付けましょう。元のファイルは保管しておきます。分けた部分をもう一度まとめるには PDF 結合を使います。元のファイルにページ番号が印刷されておらず、抽出した部分をたとえば31ページから始めたい場合は、PDF にページ番号を追加する方法をご覧ください。このページは PDF.js、pdf-lib、JSZip を leedybox.com から直接読み込みますが、ファイルはブラウザ内で読み込まれて分割され、LeedyBox のサーバーには送信されません。
よくある質問
PDF を30ページごとに自動で分割できますか?
自動で分割するオプションはありません。「指定範囲を抽出」で部分ごとに抽出してください。120ページのファイルなら 1-30、31-60、61-90、91-120 と、4回ダウンロードすることになります。
1〜3ページと7ページを、2つの別々のファイルとして一度に取り出せますか?
一度にはできません。「指定範囲を抽出」では1回のダウンロードにつき1つのファイルが作成されるため、1-3 を抽出してから 7 を抽出します。すべてのページを個別のファイルにするなら「全ページを抽出」を使います。
抽出するときにページの順番を変えられますか?
いいえ。ページは元の順番のままです。抽出したファイルのページは PDFページ整理で並べ替えられます。
分割すると品質は下がりますか?
いいえ。ページは再描画されずに pdf-lib でコピーされるため、テキストと画像は元のままです。失われる可能性があるのは、しおりやページラベルなどの文書全体に属する要素です。また、上で説明したように、リンクやフォームフィールドが機能しなくなることもあります。
23と印刷されたページが、PDF ビューアーでは1ページと表示されるのはなぜですか?
ビューアーは新しいファイル内での位置を数えており、新しいファイルにはページラベルがないためです。印刷された番号はページの内容の一部なので変わりません。PDFにページ番号を追加を使えば、指定した開始番号から新しい番号を入れられます。ただし、番号はページの上に重ねて追加されるだけで、印刷済みの番号は消えないため、まだ番号のないページに向いています。