パス切れで止まらない!KDPの画像、切れた画像パスを出力前に見つける

相対パス切れを防ぐの確認工程を、白い原稿用紙と紫色の半透明装置で抽象的に示したアイキャッチ

KDP出力前に旧パス検索をゲートにする

KDP向けEPUBで画像パス切れを持ち込まない答えは、出力前に旧パスと新パスを検索し、件数で停止条件を決めることです。今回の標本は3章に本文画像3枚、表紙なし。うち1枚を移動し、明示更新後に旧参照0件・新参照1件を確認してから出力しました。

出力結果は収録画像3件、欠落0件、spine 6、navとNCXの章リンク各3件、valid=trueです。ただしstatusはpartialです。明示更新とローカル検査は確認しましたが、自動追従、Kindle Previewer、KDP受理は未確認です。

3章・3画像のうち1枚だけを動かす

chapter01.mdからchapter03.mdまでに本文画像を1枚ずつ置き、表紙は設定しません。figure01.pngだけをimagesからassets/illustrationsへ移し、figure02.pngとfigure03.pngは元の場所に残しました。

開始値は入力3章、本文画像3、表紙0、移動対象の旧参照1です。一部だけを動かす標本にすることで、「すべての画像がない」のではなく、「1件の参照だけが古い」という出力前の事故を切り分けられます。

一般手順は出力停止条件を先に決める

まず移動対象の旧パスを原稿全体から検索し、1件あることを記録します。画像を移動して参照を更新したら、旧0件・新1件を確認します。次に3枚すべてが存在することを確認し、EPUBを出力して収録3件・欠落0件を照合します。

旧パスが1件でも残る、新パスが1件でない、または入力画像3枚のどれかが存在しない場合は出力を停止します。参照編集を戻し、figure01.pngをimagesへ戻すのが失敗時の戻し先です。

実測では1参照を直してから3章を出力した

Stage 4では、3章とfigure01.pngからfigure03.pngを作成し、figure01.pngの参照利用箇所と移動計画を確認しました。画像をassets/illustrationsへ移し、1参照を明示的に書き換えて旧新パスを検索しています。その後、シリーズ・巻数・対象原稿を設定し、計画、出力、検査、package、nav、NCX、XHTML読取まで行いました。command_countは17です。

planned_reference_filesは0です。したがって、この1件をファイル移動だけで自動修正された結果とは表現しません。

旧0・新1の後に収録3・欠落0となった

参照側はreferences_before_move=1、rewritten_occurrences=1、old_path_matches=0、new_path_matches=1です。出力側はinput_chapters=3、inline_image_files=3、cover_files=0、image_count=3、missing_images=0、spine_count=6、nav_item_count=3、ncx_item_count=3、valid=trueでした。

旧参照が消えたことだけでなく、移動しなかった2枚を含む合計3枚が収録されたことを確認しています。これが「出力前のパス検査」と「出力後のパッケージ検査」をつなぐ数値です。

別の共通Stage 4では4章、画像1枚、version 1.4でspine 8、欠落0、nav・NCXあり、valid=trueを確認しています。今回の3画像標本とは別の補助結果です。

partialの外にKDPと自動追従を置く

未確認なのは、Finderやクラウド移動への自動追従、共同編集、ワークスペース外変更、画像の視覚品質、Kindle Previewer、実機、KDPへのアップロードと受理です。ローカルvalid=trueをKDP合格へ広げません。

KDP公式ヘルプはEPUBを対応形式として案内し、Kindle Previewerでの確認を推奨しています。今回の検証はその前段にあるパスとパッケージの確認です。

Rune Studioの製品範囲は別に示す

Rune StudioのMac版では、ワークスペース内のファイル移動・改名に合わせてMarkdown系原稿の相対画像・リンク参照を更新でき、画像をEPUB 3へ収録できます。../を含む相対参照に対応しますが、外部URLやページ内アンカーは変更しません。

これはStage 3の公開仕様です。今回のStage 4で証明したのは、専用コピー上の明示更新後に旧0・新1となり、3画像がローカルEPUBへ入ったことです。

2段階ゲートを通してからKDPへ進む

出力前ゲートは旧0・新1、出力後ゲートは収録3・欠落0・章リンク各3・valid=trueです。どちらかが外れたらKDP工程へ進まず、参照または入力画像へ戻ります。

この標本は2段階のローカル検査を通りましたが、記事固有statusはpartialです。自動追従やKDP側の結果を残したまま、確認できた数値だけで出力判断を行います。