PDF を扱う

Tebako PDF について

PDF の結合・分割・墨消し・個人情報探し・隠れた情報の除去・容量の圧縮・画像との変換を、 ブラウザの中だけで行うツールです。ファイルはサーバへ送信されません。 このページでは、その仕組みと、それをご自分で確かめる方法を説明します。

仕組み

PDF の読み込み・表示・並べ替え・墨消し・書き出しは、すべてお使いのブラウザの中で行われます。 サーバがしているのは、この画面を作るためのファイルを配ることだけです。

お使いの端末(ブラウザの中)
  1. PDF を選ぶ
  2. ページを読み解いて描くpdf.js
  3. 並べ替える・回す・外す
  4. 個人情報らしい所を探す
  5. 墨消しの範囲を決める
  6. 隠れた情報を外す・容量を小さくする
  7. 新しい PDF を組み立てるpdf-lib
  8. 保存する

PDF がこの枠から出ることはありません。

画面を作るファイルだけ
(一度きり)
サーバ

HTML・JavaScript・CSS を配るだけ。
ファイルを受け取る窓口がありません。

墨消しについて

黒い四角を上に重ねるだけの墨消しは、消えていません。 下の文字はデータとして残ったままなので、四角を動かしたり、文字をコピーしたり、 別のソフトで開いたりすれば読めてしまいます。情報漏えいの原因としてよく知られたものです。

よくある「見せかけの墨消し」

  • 黒い長方形を上に置いて保存する
    文字データはそのまま残る
  • 文字の色を背景と同じにする
    選択してコピーすれば読める

手箱のやり方

  • そのページを画像として描き直す
  • 指定された範囲を画像の上で黒く塗る
  • 塗った画像でページを丸ごと置き換える
    元の文字データは出力に含まれません

かわりに、墨消しをしたページは画像になります。 そのページでは文字の選択・検索ができなくなり、ファイルも少し大きくなります。 これは避けられない代償です。確実に消すとは、そういうことです。

墨消しをしていないページには手を加えません。文字はそのまま残ります。

ご自分で確かめる方法

書き出したファイルから文字を取り出して、消したはずの文字が無いことを確認できます。

pdftotext 書き出したファイル.pdf - | grep "消したはずの文字"

何も出てこなければ、そのページに文字データは残っていません。

個人情報を探す

どこを消せばよいか探すのが大変な書類のために、形の決まった情報を拾い出して一覧にします。 チェックしたものは、そのまま墨消しの範囲に追加されます。

探すもの備考
メールアドレス/URL・IPアドレスそのまま表示します
電話番号/郵便番号/住所らしい文字列そのまま表示します
生年月日らしい日付/氏名らしい文字列「様」「殿」「御中」の前にある語を見ます
カード番号らしい16桁/マイナンバーらしい12桁/口座番号らしい数字値は画面に出しません(見つけたことだけ伝えます)

見つけられるのは、決まった形をしているものだけです。 社名・製品名・文脈から分かる個人、画像として貼られた文字は見つけられません。 実際の見積書で試したときも、住所の末尾や氏名が候補から漏れました。 追加したあとは必ず墨消しの画面で目で確かめ、足りない所は手でなぞって足してください。

隠れた情報

PDF には、ページを見ただけでは分からない情報が入っていることがあります。 作成者の名前、使ったソフト、作成日時、編集の履歴、埋め込まれたファイル、 フォームに入力された値などです。

手箱 PDF は読み込んだ時点でそれを調べ、「この文書に含まれる情報」として一覧にします。 そのうえで、書き出すときの扱いは次のとおりです。

必ず外れるもの

  • 作成者・作成ソフト・作成日時PDF を組み直すため
  • 文書に埋め込まれた詳細情報(XMP)
  • ブックマーク・埋め込みファイル

選べるもの

  • 注釈(コメント・ハイライト)
  • フォームの入力値入力された文字ごと外します
  • リンク既定では残します

注釈やフォームは、見た目の部分だけでなく中に持っている値ごと外します。 残したい場合はチェックを外してください。

容量を小さくする

メールに添付できないときのために、写真やスキャンのページを作り直して小さくします。 強さは3段階です。

文字の入っているページは、既定では作り直しません。 作り直すと文字の選択・検索ができなくなるためです。大きいのはたいてい写真やスキャンのページなので、 そこだけ作り直せば、文字を保ったまま効果が出ます。全ページを作り直すかどうかは選べます。

小さくならなかったときは、圧縮せずに元のまま書き出します。 細かい模様やノイズの多い絵は、作り直すとかえって大きくなることがあるためです。 「小さくする」と言って大きくしては困るので、その場合は画面にもそう表示します。

送っていないことの確かめ方

「送っていません」という文章を信じていただく必要はありません。 ブラウザに付いている開発者ツールで、通信をそのまま見ることができます。

  1. 開発者ツールを開く Windows / Linux は F12 か Ctrl+Shift+I、 Mac は ⌘+Option+I。
  2. 「ネットワーク」タブを選ぶNetwork と書かれている場合もあります。
  3. 記録を消す丸に斜線のボタン(Clear)を押して、一覧を空にします。
  4. その画面を見たまま、PDF を読み込んで書き出す

見えるはずのもの

  • この画面自身のファイル
    HTML・JavaScript・CSS
  • PDF を開いたときに増えるもの
    PDF を読み解く部品(pdf-….js と pdf.worker-….mjs=pdf.js)
  • 日本語の PDF によっては増える小さなもの
    文字の対応表(/pdf/cmaps/…)。同梱したものを読みます
  • 書き出すときに増えるもの
    PDF を組み立てる部品(es-….js=pdf-lib)
  • 広告の配信元(Google)への通信
    広告を表示するためのものです(googlesyndication.com など)。PDF のデータは含まれません

見えないはずのもの

  • PDF の送信(POST)
  • ファイル名やページ内容を送る通信
  • 手箱以外の場所への、PDF に関わる通信
  • 読み込みや書き出しのたびに増える通信部品は最初の1回だけです

もうひとつの確かめ方

サーバ側にファイルを受け取る窓口が無いことも、外から確かめられます。

curl -i -X POST --data-binary @書類.pdf https://tebako.ingste.net/pdf/

405 Method Not Allowed が返ります。読み取り(GET)以外は受け付けません。 本文の大きさも 1 キロバイトまでに制限してあり、PDF が入る余地がありません。

使い方

結合複数の PDF を落とすと、落とした順に1つの並びになります。そのまま書き出せば1つの PDF になります。
分割「1ページずつ別の PDF にする」を選ぶか、ページを選んで「選んだページ」だけを書き出します。
並べ替え各ページの ◀ ▶ で前後に動かします。
回転⟳ で 90 度ずつ回します。墨消しの範囲も一緒に回ります。
不要なページ✕ で一覧から外します。元のファイルには手を加えません。
墨消し「墨消し」を押し、消したいところをなぞって囲みます。いくつでも指定できます。書き出すときの解像度も選べます。
個人情報を探す形の決まった情報を拾って一覧にし、選んだものを墨消しの範囲に足します。詳しく
容量を小さくする書き出しのときにチェックを入れます。写真やスキャンのページだけを作り直します。詳しく
画像を PDF にするJPEG・PNG を落とすと、1ページの PDF として並びに加わります。そのあとは PDF と同じように扱えます(96dpi 換算)。
PDF を画像にする「まとめ方」で「1ページずつ画像にする」を選びます。PNG・JPEG と解像度を選べます。

できないこと・気をつけていただきたいこと

墨消ししたページは画像になります
文字ごと消すための代償です。そのページでは文字の選択・検索ができなくなり、 ファイルも大きくなります。細かい字がある場合は解像度を上げてください。
パスワードのかかった PDF は開けません
お使いのソフトでパスワードを外してからお持ちください。
大きなファイル・多いページは重くなります
ページの絵をすべてブラウザのメモリに載せます。数百ページある PDF では 動作が重くなったり、途中で止まることがあります。
文字の編集はできません
ページの入れ替え・回転・削除・墨消し・圧縮・画像との変換を扱います。 本文の書き換え、注釈の追加、フォームの記入はできません。
しおり・作成者情報は引き継がれません
ページそのものは元のまま写しますが、文書全体に付いた情報(しおり・作成者・作成日時・埋め込みファイル)は、 組み直しの際に外れます。注釈・フォーム・リンクを残すかどうかは選べます。詳しく
個人情報探しには見逃しがあります
決まった形をしていない情報(社名・製品名・文脈から分かる個人)や、画像として貼られた文字は見つけられません。 候補はあくまで手がかりです。最後はご自分の目で確かめてください。
容量は必ず小さくなるとは限りません
細かい模様やノイズの多い絵は、作り直すとかえって大きくなることがあります。 その場合は圧縮せずに元のまま書き出します。
作業内容は保存されません
何も預からない代わりに、画面を閉じると編集内容は消えます。 保存が必要なものは、その都度書き出してください。

使っているソフトウェア

ページの表示に pdf.js(Apache-2.0)、PDF の組み立てに pdf-lib(MIT)、 画面の組み立てに Preact(MIT)を、いずれも改変せずに使っています。

ライセンス表示を見る