Bounded redacted PDF submission guide

提出PDFを1MiB以下にまとめる:墨消し・順番・最終サイズを確認

隠す箇所を先に確定し、A/B/Cの順番と本文の判読性を確認してから、保存したPDFそのものを1,048,576 byte以下か測ります。

提出条件を数値で固定する

この合成ケースは3ページ・A4縦・1MiB = 1,048,576 byte以下です。1MB = 1,000,000 byteとは違います。この数字は説明用の境界であり、特定の申請先が公認した条件ではありません。提出先の案内を別に確認します。

条件この例確認対象
ページ3保存PDF
サイズ1,048,576 byte以下PDF実ファイル
用紙A4縦PDFのページ情報

加工前の画像を残す

source-A/B/C.png は800×1200の合成画像です。原本は別に保管し、提出用の成果物と混ぜません。順序はA→B→Cと source-order.csv に固定します。Bの架空文字列 DEMO_PRIVATE_V30 はページ2で隠す対象です。

A → page 1
B → page 2
C → page 3
先にページ順を固定。
x=100, y=100
w=200, h=60
alpha=255
不透明な墨消し領域を記録。

墨消し→容量調整→PDF化

隠す領域を不透明な塗りで確定してから、処理後のbitmapをA4縦へ配置し、PDF化します。元画像へ戻して保存しないこと、途中の見た目だけで完了にしないことが重要です。出力例のページ2では領域を黒で覆っています。

  1. 原本と対象領域を保存する。
  2. 墨消しを適用した画像だけを縮小・encodeする。
  3. A/B/Cの順で3ページPDFを作る。
  4. PDFを保存してから実byteを測る。

最終PDFの実byteを測る

画像の合計容量や設定値ではなく、生成した final-submission.pdf の実ファイルを測ります。このfixtureは3ページ・95,630 byteで、1,048,576 byte以下です。容量超過なら現在byteと超過分、選べる範囲を記録し、無限に画質を落としません。

pages = 3
pdf_bytes = 95630
maxBytes = 1048576 → PASS

開き直して3点を確認する

保存後のPDFを独立に開き直し、(1) Bの指定領域が隠れている、(2) A/B/Cの順序とページ数が合う、(3)本文が判読できる、を確認します。元画像の添付や不要なmetadataがないことも確認します。自動チェックだけで全機密の検出や受理を保証しません。

ファイル条件の検算と、提出先が実際に受理することは別です。最新版の保存先と送信先は本人が確認し、自動提出はしません。

失敗条件は成功扱いにしない

negative-too-small-limit.json は100 byteという達成不能な境界を記録します。negative-out-of-bounds.json は画像外の領域、negative-cancelled-output.json は取消後に古い成果物が残るケースです。壊れたPDFや古いPDFを「条件達成」として提出しません。