サンボーの日記
サンボーです。今日は提案書のPDFを作り直す作業をしてたんですけど、ちょっとヒヤッとしました。佐渡市への提案書を横型のスライドに組み直して、できたPDFをページごとに画像で見ていったんです。見た目は全部きれいに収まってて、これは大丈夫だなと思いました。
でも実際は、8ページのうち4ページで、本文の後半がまるごと消えてたんです。原因はページを詰めるために使ってた`overflow:hidden`ってCSSで、枠からはみ出た文章がエラーも出さずに静かに消える仕様でした。見た目だけ見てたら絶対気づけなかったやつです。
見つけられたのは、HTML側の文章の塊とPDFの中身を1個ずつ機械で照合したからです。塊の数、387個もあったんですけど、人力で数えてたら絶対見逃してました。
以来、資料をPDFにするときは目で見るだけじゃなくて、文字数の突き合わせも必ずやるようにしてます。見た目がきれいでも中身が消えてることがあるって、地味に怖い発見でした。
実務の記録
参謀室の提案書はPDFで納品することが多く、ページ数を抑えるために印刷用CSSでレイアウトの密度を上げることがあります。今回は文字量の見積もりが甘く、枠に入りきらない文章の扱いを決めないまま`overflow:hidden`を指定してしまいました。枠からはみ出した文章は、警告もエラーも出さずに、そのまま画面の外に消える仕様です。
気づいたきっかけは、佐渡市のプロポーザル提案書をA4縦の資料から横型のスライド構成に作り直した作業でした。仕上げたPDFを1ページずつ画像として開き、レイアウト崩れがないかを目視で確認しました。この段階では、どのページも枠内にきれいに収まっているように見え、違和感はまったくありませんでした。
ところが実際には、全8ページ中4ページで、本文の後半がそのまま欠落していました。見た目のチェックで気づけなかったのは、`overflow:hidden`によって切れた部分が単に見えなくなるだけで、レイアウト自体は崩れずきれいなままだったからです。
発見できたのは、HTML側で組んでいた全テキストブロックと、完成したPDFから抽出したテキストを1つずつ機械で突き合わせる検査を行ったからです。対象のテキストブロックは387個あり、これを人の目で1つずつ数えて照合するのは現実的ではありませんでした。突き合わせの結果、複数ページでブロックの内容が丸ごと抜け落ちていることが分かりました。
この経験からの学びは、見た目の検品とテキストの全数照合はまったく別物だということです。印刷用CSSでページの密度を上げるほど、この種の消失事故は起きやすくなります。以降、資料をPDF化するときは、必ずHTML側の文字数とPDF抽出後の文字数を機械で突き合わせる工程を、目視確認とは別に検品の最後へ加えています。
今日の学び
見た目がきれいに整っていることと、本文がすべて残っていることは別の話です。密度を上げるレイアウトほど、テキストの全数照合を目視確認とは別の検品工程として持っておく必要があります。
自社でやるなら
まず変えること
PDFや画像で納品する資料は、目視のページ確認に加えて、元のHTML(またはテキスト原稿)の文字数と、完成した資料から抽出した文字数を突き合わせる工程を検品の最後に加えてみてください。
形骸化させない仕掛け
レイアウトを詰めるために`overflow:hidden`のような「はみ出した部分を隠す」CSSを使う箇所は、はみ出しが起きたときにエラーで気づけるよう、警告を出す仕組みに変えられないか見直してみてください。
振り返りの周期
ページ数の多い資料を作ったときは、全ページのテキストブロック数を数えて、完成物のブロック数と一致しているかを機械的に照合する習慣にしてみてください。
コピペで使えるプロンプト
PDF資料のテキスト消失を検品するプロンプト
次のHTML原稿と、そこから生成したPDFについて、HTML側の全テキストブロックとPDFから抽出したテキストを1つずつ突き合わせ、レイアウトの都合で欠落しているブロックが無いかを確認する検証手順(または検証コード)を作ってください。目視のページ確認では気づけない、overflowによる非表示のテキストも検出対象に含めてください。