PDF の一部のページだけを送る:ページの抽出、ページの削除、そして残るもの
PDF の一部のページだけを送るには、残すページを「ページの抽出」に、外すページを「ページの削除」に入力する。ページの本文は消えるが、しおりの見出しと文書タイトルはファイルに残ることがある。
ページの抽出は、12 ページの PDF から 1,3,5-8 のように指定したページだけを集めた新しい PDF を作る。ページの削除はその逆で、外すページを指定する。どちらも元のページをコピーするだけで描き直さないので、テキストは選択できるままで、画質も落ちない。外したページが機密だった場合に注意すべき制限が 1 つある。ページの内容は消えるが、しおりの見出しと文書タイトルは新しいファイルに残ることがある。
分かっている側でツールを選ぶ
残すページが分かっているなら「ページの抽出」、外すページが分かっているなら「ページの削除」を使う。違いは結果の並び順に出る。
- ページの抽出は、入力した順にページを書き出す。
5,1,3と入力すると 5 ページ目、1 ページ目、3 ページ目の順になる。同じページを 2 回入力しても 1 回しか現れない。 - ページの削除は、残ったページを元の順序のまま保つ。
ページ番号はビューアに表示される番号で、1 から始まる。どちらのツールでも同じ指定方法が使える。単一ページ(4)、範囲(5-8)、カンマ区切り(1,3,5-8)、all、そして 2n+1 のような式だ。式では n を 1 から数えるので、2n+1 は 3、5、7 ページ目と続く。1 ページ目は含まれないため、含めたいときは 1,2n+1 と入力する。
実例:賃貸契約書の一部を大家に送る
入力は 12 ページ、レターサイズの賃貸契約書だ。各ページに「Lease agreement - page 3 of 12」のように自分のページ番号がテキストで入っているので、結果を確認しやすい。大家に必要なのは 1、3、5〜8 ページで、付録は不要とする。ブラウザではファイルをアップロードし、1,3,5-8 と入力して結果をダウンロードする。スクリプトからは同じ操作を次のように行う。
curl -s -o pages.pdf \
-F [email protected] \
-F pageNumbers="1,3,5-8" \
https://pdf123.xyz/api/v1/general/rearrange-pages
Web サイトのツールはこのエンドポイントに指定を送り、customMode は未設定のままにする。これは「私の指定を、私の順序で使う」という意味になる。以下は 2026-10-04 にローカルサーバーに対して 1 回実行した結果で、生成したテストファイルを使っている。数値はページ数と、出力から抽出したページ表記だ。
| ツールへの入力 | ツール | 結果のページ |
|---|---|---|
1,3,5-8 |
ページの抽出 | 6 ページ:1、3、5、6、7、8 |
5,1,3,1 |
ページの抽出 | 3 ページ:5、1、3 |
2n+1 |
ページの抽出 | 5 ページ:3、5、7、9、11 |
10-15 |
ページの抽出 | 3 ページ:10、11、12 |
2-4,9 |
ページの削除 | 8 ページ:1、5、6、7、8、10、11、12 |
| 空(API のみ。Web フォームは値を必須とする) | ページの削除 | 全 12 ページ、元のファイルがそのまま返る |
ダウンロードされるファイルはアップロードしたファイルの名前をそのまま引き継ぐ。送る前に名前を変えないと、ディスク上に lease.pdf が 2 つできてしまう。
失敗する 3 つの入力と、エラーの内容
存在しないページの指定は、黙って無視されずにエラーになる。12 ページのファイルで 13 ページ目を指定すると、400(page_out_of_range)で Page 13 does not exist; the document has 12 pages. が返る。0 ページ目も同じように拒否される。abc のようにページ指定でない文字列は、400 の invalid_page_selection で、1,3,5-8 や all のような値を使うよう案内するヒントが付く。この点は両ツールとも同じ挙動なので、入力ミスがもっともらしいのに間違ったファイルを生むことはない。
分かりにくい例外が 2 つある。範囲の開始が文書内にあって終端が文書の外に出る場合は切り詰められる。12 ページのファイルで 10-15 を指定すると 10〜12 ページになった。また、ページの削除はすべてのページを削除することを拒否する。1-12 は 400(would remove every page, which leaves nothing to return)を返す。ページのない PDF は存在できないからだ。
パスワードで保護されたファイルは、Web ページ上でパスワードを入力する必要がある。API を直接呼ぶ場合は、先にパスワード解除を実行する。
残るもの:ページを削除しても墨消しにはならない
抽出では、ページオブジェクトが落とされ、指定しなかったページのテキストと画像も一緒に消える。テストでは、抽出したファイルに外したページのテキストは含まれていなかった。ただし、外したページに関係するものがすべて消えるわけではない。このテストファイルでは、残したページのバイト列にも外したテキストの痕跡はなかった。
この確認のため、賃貸契約書には文書タイトル(「Lease - Unit 4B, J. Rivera」)と 2 つのしおりを付けた。1 ページ目の「Signature page」と 12 ページ目の「Tenant SSN appendix」だ。ページの抽出で 1〜2 ページ目を残すと、ファイルは 2 ページになったが、ビューアのしおりパネルには両方の見出しが残り、2 つ目はどこも指さなくなっていた。タイトルと作成者も文書のプロパティに残っていた。12 ページ目をページの削除で外した場合も、同じ 2 つのしおりが残った。
メタデータのオプションをオンにしたPDFのクリーニングは、文書情報と XMP メタデータを消し、実行後の文書プロパティは空になった。Web フォームではこのオプションが初期状態でオンになっているが、API 呼び出しでは removeMetadata=true を自分で送る必要がある。クリーニングはしおりには手を付けない。両方の見出しがそのまま残った。しおりを編集する Web ツールはない。API の general/edit-table-of-contents は JSON のリストでしおりを置き換えられるが、少なくとも 1 件の項目が必要なので、リストを空にすることはできない。テストでは、古いタイトルの文字列が、参照されないオブジェクトとしてファイルの中に残った。ビューアでは見えないが、生のバイト列では読める。しおりの見出しを隠す手段としては当てにしないこと。
したがって、外したページが機密だった場合は、結果を開いてしおりパネルと文書のプロパティを見て、内容を推測できるものが何もないことを確認してから送る。しおりの見出しそのものが秘密なら、この方法では消せない。残したページの見えている語を消す必要があるなら、それは墨消しの仕事で、共有する前に:Sanitize と Redact が実際にすることで扱っている。
コストと制限
- どちらのツールも、1 つの PDF を処理して 1 つの PDF を出力する。ファイルを複数のパートに切り分けるのはPDFの分割の仕事だ。
- 結果は新しいファイルで、元のファイルには手を加えない。元は取っておくこと。新しいファイルから外したページを取り戻すことはできない。
- そもそも開けないファイルは、先にPDFの修復が必要だ。ファイルが開かない:まず情報取得、次に修復、そして推測をやめるを参照。