← ブログに戻る

WindowsでMarkdownをPDFにオフライン変換する方法

Windows 11でMarkdownをローカルにPDFへ変換し、見出し、コード、表、Unicode、ローカル画像、生成された全ページを確認する方法。

執筆 LocalFlux Editorial Team

Windows文書
Windows 11でMarkdownからPDFへの変換が完了したLocalFlux。
この記事の内容
  1. 最短手順
  2. MarkdownからPDFへの変換で変わるもの
  3. 実際の文書を代表するMarkdownを用意する
  4. 手順1:Markdownファイルを追加する
  5. 手順2:新しいPDFへ変換する
  6. 手順3:PDFの全ページを確認する
  7. LocalFlux 1.0.8での実測結果
  8. どのMarkdown書式を試すべきか
  9. 改ページ、余白、ヘッダー、フッター
  10. 外部リンクとWeb画像が拒否される理由
  11. フォントとUnicodeは実際の字形を確認する
  12. Markdownを安全に一括変換する
  13. よくある質問
  14. 公開用の検証資料をダウンロードする
  15. 原本を残し、配布用コピーを確認する

Markdownは、文書を編集している途中に扱いやすい形式です。元データはプレーンテキストなので、差分を確認しやすく、専用エディターがなくても読めます。一方、相手に渡す段階では、ページ構成が固定され、同じように開いたり印刷したりできるPDFのほうが適していることがあります。

Windows 11のLocalFluxを使うと、.mdファイルを変換サイトへアップロードせず、別のPDFとして保存できます。このガイドの検証では、見出し、リスト、引用、表、コードブロック、Unicode文字、文書内リンク、ローカルのLocalFluxロゴを含むMarkdownから、3ページのA4 PDFを作成しました。元のMarkdownは変更されていません。

適している用途: メモ、README形式の配布資料、技術手順、会議の要約、自然な改ページを許容できるレポート。

把握しておく制限: この変換経路では、外部Webリンク、Web画像、生のHTMLが拒否されます。また、Markdown自体は印刷余白、ヘッダー、フッター、強制改ページを定義しないため、精密なページレイアウトソフトの代わりにはなりません。

最短手順

  1. Markdownとローカル画像を、移動しない作業フォルダーに置きます。
  2. LocalFluxを開き、.mdファイルを追加します。
  3. Convertを選択したまま、出力にPDFを指定します。
  4. キューにMarkdown → PDFと表示されていることを確認します。
  5. Convert 1 fileを選択します。
  6. 新しい_converted.pdfを開き、すべてのページを確認します。
  7. 見出し、表、コード、画像、リンク、日本語などの文字を確認します。
  8. 編集用の原本として.mdを残します。

Microsoft StoreでLocalFluxを入手するか、作業前に現在対応している変換経路を確認してください。

MarkdownからPDFへの変換で変わるもの

CommonMarkは、Markdownを構造化文書のためのプレーンテキスト形式として定義しています。記号を使って見出し、強調、リスト、引用、コード、リンク、画像を表現します。これに対しPDFは、ページ、配置済みテキスト、画像、フォント、リンク注釈など、完成した表示結果を記録する形式です。

したがって、変換は拡張子の変更ではありません。LocalFluxはMarkdown構造を解析し、ローカルで文書表現を準備して、同梱の文書ランタイムから新しいPDFを書き出します。PDFは配布用コピーであり、Markdownが編集可能な原本として残ります。

この違いから、次の2点が重要になります。

実際の文書を代表するMarkdownを用意する

本番の文書に表、コード、画像、多言語テキストがあるなら、1行だけのメモでワークフローを検証してはいけません。レンダリング時に変化しやすい要素を含む、代表的なサンプルを使います。

この記事のテストファイルには、次の内容を入れました。

テスト用Markdownと、その文書が参照するローカルのLocalFluxロゴ。

テスト用Markdownはこの記事のために作成し、ロゴはLocalFluxリポジトリの素材から派生させました。顧客データは含まれません。ロゴはローカルファイルURIから読み込まれ、変換中にWeb画像を取得しません。

検証した画像指定は次のとおりです。

![LocalFlux loop logo](file:///C:/tmp/LocalFluxMarkdownToPdfBlog/localflux-logo.png)

これは、明示的なローカルURIが検証対象の1.0.8で動作したことを示します。元ファイルや画像を移動した場合はURIを更新し、もう一度変換してください。文書処理の途中で中間ファイルが別フォルダーに置かれると、相対画像パスが解決できないことがあります。

検証に使ったMarkdown入力ローカルロゴ生成PDFをダウンロードできます。

手順1:Markdownファイルを追加する

LocalFluxを開き、.mdをウィンドウへドラッグするか、Add filesを選択します。Convertを選択したまま出力をPDFにし、開始前にキューの行を確認します。

PDFを出力に指定し、1個のMarkdownが待機しているLocalFlux。

キューにはMarkdown → PDFと表示されています。公開画像に個人のWindowsプロファイルを出さないよう、作業パスにはC:\tmpを使用しました。

別の経路が表示されている場合は、変換前に出力形式を修正します。複数ファイルを処理するときは、同じ出力形式と同程度の確認が必要な文書をまとめてください。短いメモと長い技術資料はどちらもMarkdownですが、改ページのリスクは異なります。

手順2:新しいPDFへ変換する

Convert 1 fileを選択します。LocalFluxは既定で元ファイルと同じ場所に出力し、ファイル名へ_convertedを追加します。今回の結果は次のとおりです。

アプリには3.6 KB → 189.8 KB, larger than originalと表示されました。これは警告ではなく、結果の説明です。プレーンテキストは表示情報をほとんど持ちません。PDFにはロゴのほか、文字や記号を再現するためArial、Times New Roman、Consolas、OpenSymbol、NSimSunのフォントサブセットが埋め込まれました。

MarkdownからPDFへの変換は、圧縮作業ではありません。目的は元ファイルより小さくすることではなく、渡せる固定文書を作ることです。

手順3:PDFの全ページを確認する

普段使うPDFリーダーで出力を開き、読みやすい倍率で確認します。Microsoft EdgeにもPDF表示と印刷プレビューがありますが、重要なのはアプリに依存しない習慣です。1ページ目だけでなく、すべてのページを見てください。

LocalFluxロゴとMarkdownの書式を保持した生成PDFの1ページ目。

1ページ目では、タイトル階層、ローカルロゴ、太字、引用、インラインコード、リストが保持されています。

次の問題がないか確認します。

生成された3ページすべてを並べたコンタクトシート。

3枚のA4ページを画像としてレンダリングし、確認しました。テキスト、ロゴ、表、コードブロックの切れや、空白ページはありませんでした。

保存したPDFはqpdf --checkの構造検査にも合格しました。テキスト抽出では、テストしたアクセント付き文字と日本語をすべて取得できました。文書内のVerification notesリンクは、PDF内の目的位置を指すリンク注釈になりました。構造検査とテキスト抽出は視覚確認を補いますが、代わりにはなりません。

LocalFlux 1.0.8での実測結果

項目確認結果
元ファイル3,713バイトのUTF-8 Markdown
出力194,305バイトのPDF 1.7
ページ数3
ページサイズ全ページA4、595.304 × 841.890ポイント
PDFタイトルlocalflux-markdown-guide
ProducerLibreOffice 26.2.4.2 (X86_64)
画像各ページに1個の画像リソース
文書内リンク2ページ目に1個のリンク注釈
フォントデータを埋め込んだ7個のTrueTypeサブセット
構造検査合格、構文エラーとストリームエラーなし
元ファイル保持Markdownとロゴのハッシュは変化なし

これらは、管理された1個のテストファイルと保存済みx64パッケージについての値です。すべてのMarkdownに同じ結果を約束するものではありません。ページ数やサイズは、文章量、画像サイズ、表、コード行、フォント、Unicode文字によって変わります。

どのMarkdown書式を試すべきか

この変換はCommonMark系のパーサーと拡張Markdown機能を使用します。今回のテストでは、通常の見出し、強調、リスト、引用、フェンス付きコード、表、画像、文書内リンク、Unicodeテキストが正しく出力されました。

Markdownの実装によって、拡張機能や曖昧な記法の解釈は異なります。CommonMarkはその差を減らすための仕様で、Markdigは.NET向けの拡張可能な処理系です。タスクリスト、脚注、独自属性、図、数式、アプリ固有の命令に依存する文書では、フォルダー全体を変換する前に、その記法を含む実ファイルで試してください。

予測しやすい原稿にするには、次を意識します。

改ページ、余白、ヘッダー、フッター

Markdownが表すのは文書構造であり、物理的なページ設計ではありません。A4とLetter、印刷余白、ランニングヘッダー、ページ番号、共通の強制改ページ命令は定義していません。

検証したLocalFluxの経路は、印刷レイアウトエディターではなく直接変換です。このサンプルは自然に3枚のA4へ分かれましたが、任意の余白、ヘッダー、フッター、正確な改ページ位置を指定する機能はありません。生のHTMLも拒否されるため、回避策にはなりません。

通常のページフローを許容できる文書でこの方法を使ってください。契約書、書籍、ブランド提案書、規制対象フォームなど、配置を正確に決める必要があるものは、ページ設計ができるツールで仕上げてから書き出します。

外部リンクとWeb画像が拒否される理由

この経路は、ローカル変換の境界を明確にしています。[example](https://example.com)のようなリンクやWeb画像URLがあると、検証したバージョンは外部リソースを取得せずに停止し、修正方法を表示します。

外部Web参照を含むMarkdownを拒否したLocalFlux。

英語の原文メッセージは「Markdown containing remote web links or images isn’t supported. Remove the remote web references and try again.」です。

生のHTMLを含むテストでは、**「Markdown containing raw HTML isn’t supported. Remove the HTML tags and try again.」**と表示されました。拒否された2個のファイルからPDFは作成されていません。

一般のWebリンクは変換前に削除するか、別の表現に書き換える必要があります。一方、[Verification notes](#verification-notes)という文書内リンクはPDF内に残り、正しく動作しました。この制限には再現性の利点もあります。結果が外部サーバーの稼働状況や、後から変更されるWeb画像に左右されません。

フォントとUnicodeは実際の字形を確認する

変換が完了しても、想定したフォントがすべてのPCにあるとは限りません。代替フォントによって折り返し位置が変わったり、必要な字形がなかったりする可能性があります。

今回のPDFには7個のTrueTypeサブセットが埋め込まれ、caférésuménaïve日本語が表示されました。テキスト抽出でも同じ文字列を取得できました。ただし、数式、絵文字、右から左へ書く言語、まれなCJK文字を含む文書には、それぞれのテストが必要です。

書体が重要な場合は、元のプレビューとPDFページを比較し、特殊文字を拡大して、表やコード付近の折り返しも確認します。ブランド指定フォントを正確に使う必要がある場合は、埋め込みとライセンスを適切に管理できる制作ワークフローを使用してください。

Markdownを安全に一括変換する

互換性のある複数のMarkdownをLocalFluxのキューへ追加できます。ただし、キュー全体の成功表示は、各PDFの内容を承認したことにはなりません。まず長く代表的なファイルを1個変換し、その後に各出力を確認します。

  1. 各Markdownとローカル素材を安定した場所に置きます。
  2. 外部参照と生のHTMLを削除します。
  3. 精密なレイアウトが必要な文書を、自然な流れを許容する文書から分けます。
  4. フォルダー全体の前に、条件の厳しいファイルを1個試します。
  5. 各PDFを開くか、少なくとも全ページをレンダリングして確認します。
  6. 修正用に元のMarkdownを残します。
  7. 再現可能な記録が必要なら、重要な原稿をハッシュ化またはバージョン管理します。

よくある質問

WindowsでアップロードせずにMarkdownをPDFへ変換できますか?

はい。今回のLocalFlux検証はWindows 11 x64環境でローカルに実行し、元ファイルと同じ場所へPDFを作成しました。変換作業にアップロード手順はありません。

元のMarkdownは上書きされますか?

いいえ。LocalFluxはlocalflux-markdown-guide_converted.pdfを新しく作成し、元のMarkdownのハッシュは変わりませんでした。

PDFにロゴを入れられますか?

はい。ただし今回確認したのは、ローカルPNGをfile:///C:/.../localflux-logo.pngで明示したケースです。画像を同じ場所に保ち、ファイルを移動したら再テストしてください。

PDF内でWebリンクは使えますか?

検証対象の経路は、http://https://の外部リンクを拒否します。サンプルの文書内フラグメントリンクは、PDFリンク注釈として機能しました。

HTMLで強制改ページできますか?

できません。生のHTMLは拒否され、この直接変換には強制改ページの設定がありません。正確な改ページが必要ならレイアウトツールを使います。

PDFがMarkdownより大きいのはなぜですか?

Markdownは小さなプレーンテキストです。PDFにはページ座標、フォントデータ、画像など、固定表示に必要なリソースが入ります。今回のように出力が大きくなるのは正常です。

公開用の検証資料をダウンロードする

サンプルは記事用に作成し、ロゴはリポジトリで管理されています。技術資料は、文章、測定値、ハッシュを1つのレビュー済み証拠に結び付けるため、英語版を正式記録としています。

原本を残し、配布用コピーを確認する

信頼できるMarkdownからPDFへの作業では、役割の異なる2つのファイルができます。Markdownは編集とレビューのための原本です。PDFは配布、印刷、保管のための固定コピーです。

依存素材をローカルに置き、実際の文書を代表する原稿を使い、新しいファイルへ変換して、全ページを確認してください。ファイル名や緑色の完了表示ではなく、この最終確認によって、変換結果が安心して渡せる文書になります。

LocalFluxでMarkdownをローカルにPDFへ変換するか、対応形式を確認してください。