複数のPDFを1つにまとめる作業は、請求書と領収書を月ごとにまとめる、章ごとに分かれた資料を通しで読めるようにする、応募書類を1ファイルにして提出する、といった場面で発生します。やること自体は単純ですが、扱うファイルが契約書や証明書だと「オンラインの結合サイトにアップロードしていいのか」が最後まで引っかかります。
OFFilerのPDF結合は、その引っかかりを設計で消しています。ページを開いた時点で結合に必要なコードがブラウザに読み込まれ、あとは選んだPDFを端末のメモリ上で読み書きするだけです。ファイルの中身もファイル名も外部へ送信されません。以下では、内部で実際に何をしているか、その結果として引き継がれるもの・引き継がれないもの、そして結合の前後でつなぐと便利なツールを説明します。
内部で何をしているか
ページを再エンコードせずコピーしている
結合処理は pdf-lib の PDFDocument を使い、空のPDFを1つ作ったうえで、選択された各PDFの全ページをそのまま新しい文書へコピーしていきます。ページの中身(文字の描画命令、埋め込みフォント、貼り込まれた画像)はオブジェクト単位でコピーされるだけで、再圧縮も再レンダリングも行いません。
そのため、結合しても文字はぼやけず、テキストは選択・検索できる状態のまま残ります。「結合したら画質が落ちた」「文字がコピーできなくなった」という、ページを画像に変換してしまう方式の副作用はここでは起きません。ファイルサイズも、おおむね元のPDFの合計に近い値になります。
並び順はサムネイルのドラッグで決まる
追加したPDFはサムネイルとして並び、ドラッグで順序を入れ替えられます。結合はこの画面上の並び順にそのまま従うため、ファイル名を「01_」「02_」のようにリネームして順番を作る必要はありません。ファイルは一度に複数選択できます。
引き継がれないもの・できないこと
しおりと文書メタデータは引き継がれない
コピーされるのはページそのものです。しおり(アウトライン)は文書全体に付く情報なので、結合後の新しい文書には引き継がれません。同じ理由で、元のPDFに設定されていたタイトル・作成者・作成日時といった文書メタデータも新しい文書には移らず、出力されるPDFはこれらが空の状態になります。
入力用のフォーム欄を含むPDFも、結合後は入力できない状態になることがあります。フォームの定義は文書単位で管理されているためです。しおりや入力フォームを保ったまま順序だけ変えたい場合は、結合ではなくページ整理を使ってください。
パスワード付きPDFはそのままでは結合できない
開くのにパスワードが必要なPDFは、読み込みの時点でエラーになります。暗号化された内容を復号せずにページをコピーすることはできないためです。手元にパスワードがある場合は、先にPDFアンロックで保護を外してから結合してください。
処理速度は端末のメモリで決まる
サーバーに送らないということは、計算しているのが目の前の端末だということでもあります。1ファイルあたり100MBまでを想定していますが、数百ページのPDFを何本も同時に結合すると、端末の性能によっては時間がかかります。一方で、順番待ちの行列も1日あたりの処理回数制限もありません。
結合の前後でつなぐ
必要なページだけにしてから結合する
「複数の資料から必要なページだけを抜き出して1つにまとめたい」場合は、先にページ抽出やページ削除で各PDFを必要な範囲まで絞り、そのあとで結合します。OFFilerでは処理後のファイルを保存し直さずに次のツールへ渡せるので、抽出→結合を一続きで実行できます。
結合後にサイズを落とす・伏せる
結合したPDFがメール添付の上限を超えた場合はPDF圧縮へ、社外に出す前に一部を伏せたい場合はPDFマークアップへ、そのまま渡せます。圧縮はテキストを保ったままメタデータだけを削るモードを選べるので、結合で得た「文字が選べる」状態を壊さずにサイズを落とせます。
仕様と制限
- 対応形式
- PDF(application/pdf)
- サイズ上限
- 1ファイルあたり100MB
- ファイル数
- 上限なし(端末のメモリ次第)
- 画質
- 再エンコードなし。テキストは選択・検索可能なまま
- 引き継がれない情報
- しおり、文書メタデータ、フォームの入力欄
- 暗号化PDF
- 非対応(先にPDFアンロックが必要)
- 通信
- ファイルの送信なし。処理はすべてブラウザ内