Formats2026-09-26約1分で読めます

Markdown と PDF の往復:形式変換が残すもの

Markdown と PDF の往復は、画素より見出し、リスト、簡単な表をよく保つ。ただし正確なフォント、改ページ、レイアウトは無損失の往復としては残らない。

PDF123 · Updated 2026-09-26

Markdown と PDF は異なる契約に最適化されている。Markdown はバージョン管理と相性のよい構造だ。PDF は固定のページ記述である。片方向への変換は有用だが、無損失のアーカイブ循環ではない。

Markdown から PDF:構造がページになる

Markdown から PDF(POST /api/v1/convert/markdown/pdf)は .md ファイル、または Markdown を含む ZIP を受け付ける。Markdown でも ZIP でもないアップロードは拒否される。素の .md 入力には UTF-8 が必要だ。パイプラインは表、取り消し線、タスクリストを有効にして Markdown を HTML に描画し、その HTML を印刷向けの CSS(多文字種のフォントスタック、アラビア語を検出したときの RTL を含む)で包み、WeasyPrint で PDF に印刷する。

前向きの変換で残りやすいもの:

  • 見出し、段落、リスト、簡単な Markdown の表
  • HTML の経路がレイアウトできる多文字種のテキスト(印刷 CSS が覆う CJK、ラテン文字、その他の文字体系)
  • docs-as-code のワークフロー向けの、印刷・共有できる PDF

残らないもの:

  • エディタのテーマフォントがすべてのビューアで一致するという保証
  • .md ファイルの画面上の改行そのまま
  • PDF に対応物の無い対話的な Markdown 機能(ライブのチェックボックス、折りたたみ、wiki リンク)

ZIP 入力は、HTML の経路が文書の隣で解決できる資産と Markdown をまとめるためのものだ。パッケージの便宜として扱い、すべての相対画像や CSS 参照がどのビューアでも同じに見える保証とは考えないこと。

PDF から Markdown:テキスト層が入り、Markdown が出る

PDF から Markdown(POST /api/v1/convert/pdf/markdown)は pdf-inspector を通してテキスト内容を Markdown に抽出する。応答は text/markdown で、.md ファイルとしてダウンロードされる。きれいなテキスト層を持つボーンデジタル PDF が最もよく変換できる。テキスト層の無いスキャンページは、先に OCR するまで空か役に立たない Markdown しか出さない。本サイトの OCR も Markdown を返し、検索可能な PDF 層ではない。

期待できること:

  • フォントサイズのヒューリスティックが正しく働いたときの見出しと段落(# のレベルは手で振り直すこともある)
  • 認識がうまくいけば Markdown の表になるが、多段のレイアウトは別の読み順に線形化されることがある
  • ページごとに繰り返されるヘッダとフッタ(後処理で削る)
  • 画像や絵としての数式が自動でローカル資産や LaTeX になることはない

見出しのヒューリスティック無しの素の散文が必要なら、PDF からテキスト の方が平坦な抽出だ。HTTP 204 を返す表形式のエクスポートは、列状のブロックが検出されなかったことを意味する。空の表エクスポート(204) を参照してほしい。

往復が実際に証明すること

妥当に残る 通常は残らない
語、見出しの階層、リスト構造 画素単位で完全なページの幾何
テキストとしての簡単な表 正確なフォントとカーニング
Git やエージェント向けの使える下書き 印刷と同一の改ページ

二度往復させればずれていく。Markdown→PDF は WeasyPrint を通してリフローし、PDF→Markdown は抽出のヒューリスティックから構造を組み直す。どちらの工程も、相手形式のレイアウト模型の無損失な中間物を保存しない。

正準の方向を一つ選ぶ

印刷レイアウトをシステムの記録としたいなら、PDF を保持し、Markdown をエクスポートやエージェント向けの供給とみなす。差分、コードレビュー、エージェントへの取り込みが必要なら、Markdown を優先し、PDF を公開の工程とみなす。両方を対等な「唯一の真実」として保管し、編集後も同一のままだと期待してはいけない。

実務的な docs-as-code のループは、Git で Markdown を編集 → 共有物に Markdown から PDF → PDF→Markdown→PDF を日課にしない、という形だ。引き継いだボーンデジタル PDF からエージェント向けのテキストが必要なときに PDF→Markdown を使い、その Markdown は新しい下書きとして扱う。元の改ページの保証とは考えない。

暗号化されたファイルは、どちらの変換の前にも正当な パスワードの解除 が必要だ。パースできない破損ファイルは、先に 情報取得/修復 を通す。同じエンドポイントを HTTP から使う方法は 開発者向け にある。

Open tool
Process in the browser — no watermark, files removed after the job.
Open tool