PDFを整理するとき、必要なページだけ残す、順番を変える、一部を回転する、ページ番号を付ける、別のPDFと結合する、といった複数の操作を続けて行いたいことがあります。1回だけなら個別に操作してもよいですが、同じ手順を別のPDFにも繰り返す場合は、毎回やり直すのが負担になります。

Browser KittyのPDF Pipeline Builderでは、それぞれの処理をNodeとしてつなぎ、1つのPipelineとして実行できます。途中のNodeを選んでその時点のPDFをPreviewでき、完成した手順はRecipeとしてブラウザ内に保存したり、Pipeline JSONとして持ち運んだりできます。選択したPDFはアプリから外部サーバーへアップロードせず、処理はブラウザ内で行います。

PDF処理を「順番」として組み立てる

PDF Pipeline Builderでは、PDF Input、ページ操作、文書加工、分岐・結合、PDF OutputをCanvas上で接続します。たとえば「ページを選択 → 並べ替え → ページ番号 → 出力」とつなげると、その順番で処理されます。

Nodeの順番には意味があります。例えば「並べ替え → ページ番号」なら並べ替え後の順番で採番されますが、「ページ番号 → 並べ替え」なら番号を付けたページそのものが後から移動します。ページ指定も、そのNodeへ到達した時点のページ列を基準にします。

ページ操作・分岐・文書加工を組み合わせる

v1.0.0では、ページ選択・並べ替え、削除、複製、空白ページ挿入、Rotate、Reverse Pagesに加え、Split Pages、Merge Pages、Page Numbers、Watermark、Text StampをPipelineへ追加できます。Merge Pagesは2〜6入力を決めた順番で結合できます。

ページ範囲には `all`、`1-3,5`、`3,1,2` のような指定を使えます。単純な削除や並べ替えだけでなく、複数の操作を決めた順番で重ねたい場合にPipeline形式が役立ちます。

途中のNodeを選んで結果を確認する

Pipelineを最後まで実行してから間違いに気付くのではなく、途中のNodeを選ぶと、そのNodeに必要な上流だけを評価してPDFをPreviewできます。PDF Outputを選んだ場合は、途中結果ではなく最終の「結果」として表示されます。

Previewは一度に最大6ページを表示し、前後へ移動できます。Splitでは「選択 / 残り」を切り替えられ、各ページは拡大表示できます。別BranchのPDFが未選択でも、現在確認しているBranchに不要ならPreviewを妨げません。

SplitとMergeで一部ページだけ別処理する

例えば特定ページだけ回転して、残りのページはそのまま通したい場合は、Split Pagesで「選択」と「残り」に分け、選択側だけRotateへつなぎ、最後にMerge Pagesで再結合できます。

1本の直線では表せない処理でも、分岐と再結合を使えば、どのページに何をしたかをCanvas上で確認できます。複数のPDF InputをMergeして1つのPDF Outputへまとめることもできます。

RecipeとPipeline JSONを使い分ける

完成したPipelineをこのブラウザで何度も使うならRecipeとして保存できます。Recipeを開いて新しいPDFを指定し、「Canvasに反映」で編集可能な状態へ読み込むか、「このRecipeを使う」で現在のCanvasを変えずに別Graphとして実行できます。

Recipeへ保存されるのは処理手順と設定で、元PDF bytes、生成PDF bytes、一時選択したファイル、元PDFのファイル名やページ数は保存されません。Pipeline JSONはNode、Edge、設定、位置、Viewport、出力ファイル名を保存でき、バックアップ、別端末への移動、Git管理などに向いています。どちらの場合もPDF Inputは再選択が必要です。

RecipeとPipeline JSONの使い分け
保存方法向いている用途PDF本体
Recipeこのブラウザですぐ同じ処理を繰り返す保存しない
Pipeline JSONバックアップ・別端末への移動・Git管理保存しない

1回の整理ならPDF Organizer、繰り返す手順ならPipeline Builder

Browser KittyのPDF Organizerは、ページを並べ替える、削除する、複数PDFを結合するといった作業を、その場で目視しながら行う用途に向いています。

PDF Pipeline Builderは、複数の操作を決めた順番で実行し、その処理手順自体を再利用したい場合に向いています。1回だけ資料を整えるならPDF Organizer、毎月や毎週のように同じ加工を別PDFへ繰り返すならPDF Pipeline Builder、という使い分けができます。

完全ローカル処理でも、PDFの機能と端末メモリには制限がある

PDF Pipeline Builderは `pdf-lib` とNode Editor Coreを単一HTMLへ内包し、実行時の外部通信をCSPの `connect-src 'none'` で禁止しています。GitHub PagesやBrowser Kittyから開く場合は最初のHTML配信は発生しますが、選択したPDF内容をアプリから外部へ送信しません。Previewと出力表示には一時的なローカルBlob PDFを使います。

一方で、PDFをページ単位で再構成するため、しおり、添付ファイル、フォーム、署名、Outlineなどの文書レベル情報は引き継げない場合があります。電子署名付きPDFを加工すると署名が無効になる場合もあります。また、大容量PDFや複雑な分岐では端末メモリを多く使います。重要な原本は残し、出力結果を確認してから利用してください。

手順

  1. PDF Pipeline Builderを開き、PDF Input Nodeを追加して処理したいPDFを選択します。
  2. Paletteからページ操作・文書加工などのNodeを追加し、実行したい順番で接続します。
  3. 必要なページ範囲やRotate、ページ番号、Watermarkなど各Nodeの設定を入力します。
  4. 特定ページだけ別処理する場合はSplit Pagesで分岐し、必要な処理後にMerge Pagesで再結合します。
  5. 途中のNodeを選び、その時点のPDFをPreviewして順番や加工結果を確認します。
  6. 最後のページ列をPDF Outputへ接続し、最終結果をPreviewして出力ファイル名を設定します。
  7. 問題がなければ生成PDFを保存します。
  8. 同じ手順を繰り返すならRecipeとして保存し、持ち運びやバックアップが必要ならPipeline JSONも保存します。
Browser Kittyで試す

PDF Pipeline Builder

PDF処理をノードで組み、途中結果を確認しながら、保存Recipeとして別のPDFにも繰り返し使えます。

ツールを開くツールの詳細を見る

注意点

  • ページ番号やWatermarkを付ける位置はNodeの順番で結果が変わるため、先に「何をしてから何をするか」を決めると組みやすくなります。
  • 長いPipelineは途中Previewを使って段階ごとに確認すると、最後まで実行してから原因を探すより修正しやすくなります。
  • 電子署名やフォームなどが重要なPDFは原本を残し、出力後に必要な文書情報が維持されているか確認してください。

よくある質問

同じPipelineを別のPDFにも使えますか?

はい。PipelineをRecipeとして保存し、新しいPDFを各PDF Inputへ指定して再利用できます。Recipeには元PDFそのものは保存されません。

RecipeとPipeline JSONは何が違いますか?

Recipeはこのブラウザで同じ処理をすぐ使い直す用途、Pipeline JSONはバックアップ・別端末への移動・Git管理などの持ち運び用途に向いています。どちらもPDF bytesは保存しません。

途中結果を確認できますか?

はい。Nodeを選択すると、そのNodeに必要な上流を評価し、その時点のPDFをPreviewできます。PDF Outputでは最終の「結果」として表示します。

特定ページだけ別の処理をできますか?

はい。Split Pagesで選択ページと残りへ分け、それぞれ必要な処理を行った後、Merge Pagesで再結合できます。

日本語のWatermarkを入れられますか?

v1.0.0のカスタムWatermark文字はASCII文字に限定されています。日本語フォントなどのカスタムフォント埋め込みには対応していません。

選択したPDFはサーバーへアップロードされますか?

いいえ。GitHub PagesやBrowser Kittyから開くと最初のHTML配信は発生しますが、PDFの読み込み、途中結果Preview、Recipe実行、PDF生成はブラウザ内で行い、選択したPDF内容をアプリから外部へ送信しません。