PDFのページを並べ替える

ドラッグ&ドロップでページを並べ替え、削除、または複製します。すべての処理はブラウザ内で行われます, PDFがデバイスを離れることはありません。

PDFをアップロード

ここにPDFをドロップするか、クリックしてアップロード

最大ファイルサイズ: 50 MB

仕組み

  1. PDFをアップロード, PDFファイルをアップロード領域にドラッグ&ドロップするか、クリックしてデバイスを参照します。
  2. ページの並べ替え、削除、複製, サムネイルをドラッグして並べ替えます。各ページカードの削除(X)または複製ボタンを使って、ページを削除またはコピーします。
  3. 並べ替えたPDFをダウンロード, 「並べ替えたPDFをダウンロード」をクリックして、変更されたファイルをデバイスに保存します。元のPDFは変更されません。

なぜPDFのページを並べ替えるのか?

PDFがページの順序を間違えて表示することがあります, 逆さにスキャンされたドキュメント、付録が要約より先に来る結合されたレポート、タイトルページが最後にエクスポートされたスライドショー。ソースアプリケーション(しばしば利用できない)から再エクスポートする代わりに、ページの順序を直接修正できます。このツールは一般的なケースも処理します: 空白ページを削除、署名ページを複製、または要約をトップに移動。すべてはPDF-libとPDF.jsを介してブラウザで行われ、ファイルはデバイスを離れることはありません, 契約書、納税申告書、医療記録、未知のサーバーに送信したくないものに最適です。

機能

  • ドラッグ&ドロップでの並べ替え, 任意のサムネイルをつかんで新しい位置にドロップします。マウスとタッチで動作します。
  • 削除と複製, 各ページカードには、削除用のXボタンとワンクリックでの複製ボタンがあります。
  • ライブサムネイル, 各ページのレンダリングされたプレビューを表示して、何を移動しているかを正確に把握します。
  • 順序のリセット, 気が変わった場合は、ワンクリックで元のシーケンスを復元します。
  • 100%クライアントサイド, PDFは完全にブラウザ内で処理されます。アップロード、アカウント、ファイルコンテンツの追跡なし。

よくある質問

PDFファイルは安全ですか?

はい、すべての処理はブラウザ内で行われます。PDFファイルがサーバーに送信されることはありません, 永続的にデバイスに残ります。

ページを削除または複製できますか?

はい、各ページには、必要に応じてページを削除またはコピーするための削除ボタン(X)と複製ボタン(コピーアイコン)があります。

モバイルで動作しますか?

はい、このツールはタッチサポートとドラッグ&ドロップ並べ替え付きでモバイルで動作します。

スキャンされたPDFで動作しますか?

このツールは、すべての標準PDFファイルで動作します。スキャンされたドキュメント(画像のみで構成されたPDF)の場合、コンテンツが選択可能なテキストではなく画像として保存されているため、テキスト抽出機能が制限される場合があります。

ページ制限はありますか?

ページ数に固定の制限はありません。処理速度はブラウザとデバイスの能力に依存します。数百ページのドキュメントは動作しますが、より長くかかる場合があります。

「PDFページの並べ替え」とは実際どういう意味か

ユーザーレベルでは、並べ替えとは、ある順序のページを持つPDFを取り、異なる順序のページを持つPDFを生成する操作です。ドラッグアンドドロップUI、画面上のサムネイル、新しい位置にサムネイルをドロップ、結果をダウンロード。ファイルフォーマットレベルでは、操作はページツリーの操作です。すべてのPDFには、/Type /Pages/Pagesノードを指すルートカタログオブジェクトがあります。/Pagesノードには子への参照の/Kids配列があり、リーフページオブジェクト(/Type /Page)、またはツリーを形成するさらなる中間/Pagesノードのいずれかです。各ノードの/Countエントリは、その下のリーフ総数を保持しているので、リーダーはすべてのリーフを歩くことなくO(log N)時間でN番目のページを見つけることができます。

この表現では、並べ替えはルート/Pagesノードの/Kids配列を書き換えるだけ(またはツリーが深い場合は中間ノードを再構築するだけ)です。ページオブジェクト自体は動いたり変化したりしません。それらへの参照だけが変わります。これは簡単に聞こえますし、ほとんどはそうです。複雑になるのは、個々のページオブジェクトが他のページとリソース(フォント、埋め込み画像、コンテンツストリーム)を共有しているときです。ツリーを書き換える際、これらの共有リソースを孤立させてはならず、ファイルのクロスリファレンステーブルを再生成して、すべてのオブジェクトへのバイトオフセットが正しくなるようにする必要があります。xrefテーブルを書き換えずに単に/Kidsエントリを入れ替える素朴な並べ替え実装は、破損したPDFを生成します。並べ替えライブラリは、元のファイルにパッチを当てるのではなく、新しいxrefテーブルを持つ新しいファイルを端から端まで書くことでこれを処理します。

このツールの仕組み

このツールは2つのPDFライブラリを並行して使用しています:出力構築用のpdf-libとサムネイルレンダリング用のPDF.js。ワークフローの補完的な部分を処理します。PDFを選択すると、ブラウザのFile APIが生のバイトを両方のライブラリに渡します。PDF.jsはファイルの表示層を解析し、各ページにgetPage(n)を呼び出し、各ページを小さなキャンバスにレンダリングしてあなたが見るサムネイルグリッドを生成します。サムネイルはクライアントサイドのビットマップレンダリングです。それらに関する何もどこにも送信されません。

サムネイルを新しい位置にドラッグすると、メモリ内のページインデックスのJavaScript配列だけが変わります。ドラッグ中はPDF操作は発生しません。元のPDFバイトはそのままです。「並べ替えたPDFをダウンロード」をクリックすると、pdf-libはインデックス配列(たとえばページ4が前に移動した5ページの文書の場合[3, 0, 1, 2, 4])を取り、新しいPDFを構築します:ソースをPDFDocumentにロードし、新しい空のPDFDocumentを作成し、要求されたページをクローンするためにcopyPages(source, indices)を呼び出し、次に順番に各クローンされたページにaddPage()を呼び出します。結果はBlobにシリアル化され、ダウンロードURLにラップされてあなたに提供されます。

copyPagesが重労働を行います:ターゲットページが依存するすべてのオブジェクト(フォント、埋め込み画像、コンテンツストリーム、注釈、アクション辞書)を追跡して新しい文書にコピーし、その後クロスリファレンステーブルを書き直して、すべてのバイトオフセットが一貫するようにします。結果のPDFは構造的にクリーンで、レンダリング出力でページごとに元のものと同一で、ページが新しい順序になっているだけです。この間、ネットワークリクエストは発生しません。検証できます:ブラウザの開発者ツールをネットワークタブに開き、アップロード+並べ替え+ダウンロードを実行して、ファイルコンテンツのあるリクエストがあるか観察します。ブラウザがキャッシュするpdf-lib(~1.1 MB)とPDF.js(~440 KB)の1回限りのCDNロード以外は何もありません。

なぜ1つではなく2つのライブラリか

pdf-libは出力重視のライブラリです:構造レベルでPDFを読み、ページツリーを変更し、文書間でページをコピーし、新しいコンテンツを埋め込み、クリーンなPDFを書き出すことができます。それがしないのは、ページをピクセルにレンダリングすることです。それはPDF.jsの領域で、テキストレイアウト、フォントラスタライゼーション、ベクターグラフィックス、透明性、ブレンドモード、すべてキャンバスまで、PDFレンダリング仕様全体を実装しています。並べ替えツールでは両方が必要です。並べ替えは構造操作(pdf-libの領域)ですが、UXはユーザーがどのページがどれかを知るために視覚的なプレビューを表示する必要があります(PDF.jsの領域)。両方を行う単一のライブラリはより大きくなるでしょう。2つのライブラリの分割は、実用的なWeb開発者の選択です。

コストは最初の訪問時の2つのCDNダウンロード(合計約1.5 MB圧縮)です。コストはブラウザごとにキャッシュ寿命ごとに一度支払われます。その後の訪問では両方のライブラリがキャッシュから即座にロードされます。サーバーコンポーネントはなく、ファイルの一部もブラウザから出ません。

ページの並べ替えを促進する実世界のワークフロー

  • 誤った順序でスキャンされた文書。 スキャナーがページを逆さまに送ったか、ユーザーが2ページをダブルフィードし3ページ目が最後に追加されたか、シートフィーダーが逆順に取った。再スキャンは多くの場合非現実的(原本がなくなった、スキャナーが別のオフィスにある、文書が数百ページある)。並べ替えは数秒で修正します。
  • 誤った場所に付録があるマージされたレポート。 複数のソース文書が1つのPDFに結合され、順序が編集順序ではありません:付録が結論の前に着地し、カバーレターが最後に行き、目次が真ん中にあります。順序を尋ねずに連結するマージツールを使った後によくあります。
  • 別個の署名ページを持つ契約執行。 署名された署名ページが別のPDFとして戻ってきて、組み立てた契約の最後のページである必要があります(または一部の管轄区域では最初)。並べ替えは署名されたページをマスター文書内の正しい位置に挿入します。印刷して再スキャンする必要はありません。
  • 法的ディスカバリーと訴訟準備。 文書制作はベイツスタンプの順序で到着しますが、これはほとんどの場合、ブリーフに役立つ順序ではありません。聴聞会の証拠や裁判のバインダー用に並べ替えるのは訴訟支援の日常的な作業で、ブラウザで行うと特権文書をサードパーティサーバーから遠ざけることができます。
  • 医療記録のシーケンシング。 臨床PDF(受付フォーム、検査結果、治療メモ)は複数のシステムから任意の順序で到着します。ケアコーディネーターは専門医と共有する前に、時系列順または診療ごとのシーケンスに並べ替えます。機密コンテンツはブラウザに留まります。
  • 学術提出と論文組み立て。 委員会が要求する特定の順序で要旨、章、参考文献、付録を持つ論文。並べ替えにより、学生はWordから再エクスポート(これは多くの場合フォーマットをリセットし目次を壊す)せずに順序を修正できます。

よくある落とし穴とその意味

  • 並べ替え後、ハイパーリンクが間違ったページを指します。 ソースPDFには、ページインデックスを直接参照するハイパーリンクや注釈があります(たとえば名前付き宛先ではなく「ページ3」への目次リンク)。並べ替え後、これらの参照はまだ古いページインデックスを指します。修正は、並べ替えの前にソースPDFを無料オンラインPDFフラット化でフラット化するか、絶対ページ番号リンクは後で手動修復が必要であると受け入れることです。名前付き宛先リンク(現代的アプローチ)は正しく生き残ります。
  • ダウンロードしたファイルが元より大きい。 pdf-libのcopyPagesはソースPDFほど積極的に共有リソースを重複排除しません。元のページ2と5がフォントサブセットを共有していて、並べ替えで離した場合、新しいファイルはフォントの2つのコピーで終わる可能性があります。違いは通常小さい(10パーセント未満)です。サイズが重要なら結果を無料オンラインPDF圧縮に通してください。
  • ブックマークまたは目次エントリが今では間違っています。 pdf-libのページコピーはコピーされたページに付属する明示的な名前付き宛先を保持しますが、文書アウトライン(ブックマークツリー)はルートカタログレベルに存在し、ページが移動したときに自動的に書き直されません。並べ替えた出力はブックマークテキストを保持しますが、ブックマークは間違ったページを指す可能性があります。ページコピーアプローチの既知の制限です。回避策は、並べ替え後に専用のアウトラインエディタでブックマークを再追加することです(Adobe Acrobat Proがこれをネイティブに行います)。
  • 並べ替え後、フォームフィールドが機能しなくなる。 ソースPDFにAcroFormフィールドがある場合、フィールドオブジェクトはドキュメントレベル(/AcroForm /Fields内)に存在しますが、ウィジェット注釈はページに存在します。並べ替え後、ウィジェットはページとともに動きますが、フィールド-ウィジェットの関連付けは完全には保持されない可能性があります。「最終、編集不可」ワークフローの修正は、並べ替えの前にフォームをフラット化することです。「並べ替え後も入力可能」の場合はAdobe Acrobat Proを使用してください。
  • タッチスクリーンでドラッグアンドドロップが機能しません。 一部のモバイルブラウザはドラッグイベントを一貫性なく処理します。このツールはHTML5ドラッグイベント(デスクトップ)とタッチイベント(モバイル)の両方を登録しますが、特定のAndroidブラウザバージョンにはタッチアンドホールドドラッグの既知のバグがあります。タッチでドラッグが失敗する場合は、デスクトップブラウザを試してください。並べ替えの結果は、どこでドラッグしても同じです。
  • PDFにパスワード保護があります。 このツールは暗号化されたPDFのページツリーを読み取ることができません:pdf-libは構造を解析する必要があり、解析は復号によってブロックされています。最初に無料オンラインPDFロック解除でロックを解除し、次に並べ替えてから、必要に応じて無料PDFパスワード保護オンラインで再保護してください。3段階のパイプラインは、セキュアな文書を編集するための標準ワークフローです。

ブラウザのみと並べ替えクラウドの比較

すべてのクラウドPDF並べ替えサービス(Smallpdf、ILovePDF、PDF24、Adobe Acrobat Online、Sejda、Lumin、Soda)は、あなたのPDFを事業者のサーバーにアップロードし、サーバー側でサムネイルをレンダリングし、ブラウザでそれらのサーバーレンダリングされた画像に対してドラッグさせ、最終的な順序をサーバーに送り返して、サーバーが並べ替えたPDFを生成しダウンロードとして提供します。プライバシーへの影響は通常のファイルアップロードとは小さいながら興味深い方法で異なります:事業者は、あなたが並べ替えの決定をする前に、必然的にすべてのページの内容を読みます(サムネイルをレンダリングするため)。気が変わって結果をダウンロードしない場合でも、事業者はすでにコンテンツを処理しています。

このツールはPDFをアップロードしません。pdf-libとPDF.jsは両方ともブラウザのタブで実行されます。ファイルバイトはFile APIによって一度読み取られ、両方のライブラリのパーサーに供給され、ネットワークにシリアル化されて戻ることはありません。唯一のネットワークトラフィックは、最初の訪問時の2つのライブラリの1回限りのCDNフェッチです。その後の訪問はキャッシュから完全にオフライン使用可能です。トレードオフは機能の範囲です。クラウドサービスは多くの場合、二次操作をバンドルします:並べ替えの前にスキャンしたページのOCR、その場で添付ファイルをPDFに変換、並べ替え後の署名と送信。ここのブラウザ側ツールは並べ替えのみを行います。「順序を修正してダウンロードする必要がある」という焦点を絞ったワークフローでは、ブラウザの方が厳密に高速(アップロード待ちなし、アップロードサイズ制限なし)でよりプライベートです。

別のツールが正しい選択になるとき

  • メモリ制約のあるデバイス上の200 MBを超えるPDF。 2つのライブラリはファイル全体をメモリにロードします。非常に大きなファイルはタブをクラッシュさせる可能性があります。巨大なファイルにはデスクトップツール(Adobe Acrobat、qpdf CLI、PDFsam)を使用してください。
  • XFAフォームまたは証明書ベースの暗号化。 pdf-libはAdobe独自の構造を確実に処理しません。Adobe Acrobatがそれらのための標準ツールです。
  • ブックマーク/アウトライン構造を保持する必要がある並べ替え。 文書に複雑なアウトラインがあり、ブックマークがページに従って新しい位置に移動する必要がある場合、Adobe Acrobat Proの「ページ整理」機能はこれをネイティブに処理します。pdf-libはしません。
  • パイプラインの一部として自動化されたバッチ並べ替え。 サーバー側またはスクリプト化された並べ替えには、Node.jsから直接pdf-lib(同じライブラリ、ブラウザタブ不要)、Pythonのpikepdf、またはqpdf CLIの明示的なページ範囲構文を使用してください。

その他のよくある質問

なぜページのサムネイルは小さいのですか?

PDF.jsは、数百ページの文書に対してメモリ使用量を管理可能に保つために、固定サイズ(~150 px幅)でサムネイルをレンダリングします。エクスポートされたPDFは、フル解像度のソースページを使用します:サムネイルレンダリングの品質は出力品質に影響しません。サムネイルが小さすぎて各ページに何があるか見えない場合は、ブラウザでズームしてください。サムネイルは比例してスケールします。

オフラインで動作しますか?

最初の訪問後はそうです。pdf-libとPDF.jsは最初のロード時にブラウザによってキャッシュされます(合計約1.5 MB圧縮)。その後の訪問は、ブラウザのキャッシュがクリアされていない限り、ネットワーク接続なしで動作します。PDF並べ替え自体はもともとネットワークを必要としません、ライブラリロードだけが必要です。

複数のPDFのページを1つに並べ替えることができますか?

このツールでは直接にはできません:並べ替えUIは単一のソース文書を想定しています。2段階のワークフローは:無料オンラインPDF結合ツールを使ってソースを1つのPDFに結合し、その結合PDFをここに持ってきてページを正しい最終順序にドラッグします。より複雑な文書間ワークフロー(ファイルAのページ3をファイルBのページ5と6の間にドラッグ)については、Adobe Acrobat Proのページ整理が文書間ドラッグをネイティブに処理します。

署名、フラット化、圧縮の前または後に並べ替えるべきですか?

安全な順序は:並べ替え、フラット化、署名、圧縮。最初に並べ替えます。後続の操作が最終的なページシーケンスに依存する可能性があるためです。次にフラット化します。フォームフィールドを静的コンテンツに焼き付けて下流のツールが均一に処理するためです。フラット化の後に署名します。暗号署名は文書の最終バイトシーケンスにコミットし、それ以降の変更は無効化するためです。最後に圧縮(オプション)して送信用にサイズを削減します。必要のないステップはスキップしてください。

OCRテキストレイヤーは保持されますか?

はい。OCRテキストは各ページに不可視テキストとして格納されており(不可視としてマークされたコンテンツストリーム)、そのコンテンツストリームはページオブジェクトの一部です。pdf-libがページをコピーするとき、コンテンツストリーム、フォント、不可視のOCRレイヤーを含むページオブジェクト全体をコピーします。検索と選択は並べ替えた出力でも、元のものと同じように動作します。

デスクトップまたはコマンドラインの同等品はありますか?

pdf-libはNode.jsで実行され(npm install pdf-lib)、並べ替えコードは同じです:copyPages(source, indices)の後に各ページにaddPage()。コマンドラインでは、qpdfにはページごとの選択構文があります:qpdf --pages input.pdf 3,1,2,4 -- input.pdf output.pdfでページを直接並べ替えます。Pythonのpikepdfライブラリはよりクリーンなpythonic構文で同じ操作をミラーリングします。Adobe Acrobat Proのページ整理はGUIで実行し、さらにブックマーク/アウトラインを正しく保持します。