2026年8月1日 星期六

本地端MARKDOWN檔,轉換成HTML 或 PDF檔工具

情境: 因筆者使用Google Antigravity CLI 產出大部分是以文字狀態格式,但有時候ASCII文字產出內容,文字可讀性不佳(如有表格會有偏移情形),故可安裝本地端PANDOC、Weasyprint套件(含相依Mingw64 / GTK 執行環境 軟件),安裝本地端處理MARKDOWN格式軟體,轉換成可讀性較高之PDF格式,以下為作業系統、PYTHON呼叫及相依函式庫如 Pango、Cairo、GDK Pixbuf 的載入狀態 關係梳理:

Windows 上 Python、WeasyPrint(CSS 轉 PDF 引擎)與 Mingw64/GTK 的相依套件關係

1. Windows OS 與 DLL 載入機制

  • Windows Loader 會依序在 程式所在目錄 → 系統目錄 → PATH 搜尋 .dll
  • 若相依的 DLL 不在這些路徑,會出現 FileNotFoundError 0x7e

2. Python 與 CFFI(橋接層)

  • WeasyPrint 以 Python 為外層,但核心排版功能依賴 Pango、Cairo、GObject
  • CFFI 在 import weasyprint 時會呼叫 LoadLibrary 去載入 libpango-1.0-0.dlllibgobject-2.0-0.dll 等。
  • Python 3.8+ 加強了 DLL 搜尋安全,導致只能在標準路徑找到外部 DLL。

3. Mingw64 / GTK 執行環境

  • 需要透過 MSYS2 安裝 mingw-w64-x86_64-* 套件,產生 Windows 版的 .dll
  • 依賴樹狀結構 (需系統底層 C 庫(Cairo, Pango, GDK-PixBuf)):
    • WeasyPrint → libpango-1.0-0.dll
    • libpango → libgobject-2.0-0.dll、libcairo-2.dll
    • cairo → libpng、libjpeg、fontconfig、harfbuzz 等。
  • 因此必須把 C:\msys64\mingw64\bin 加入 PATH,一次性解決所有子依賴。

4. 常見錯誤對照表

錯誤訊息 根本原因 解決方案
cannot load library libgobject-2.0-0 缺少 glib2 套件或未在 PATH pacman -S mingw-w64-x86_64-glib2 並加入 PATH
cannot load library libpango-1.0-0 缺少 pango 套件 pacman -S mingw-w64-x86_64-pango
ImportError: cannot import name 'cairo' 缺少 cairo 套件 pacman -S mingw-w64-x86_64-cairo

5. 測試步驟

  1. 檢查 DLL

    where libgobject-2.0-0.dll
    where libpango-1.0-0.dll
  2. 顯示 WeasyPrint 系統資訊

    weasyprint --info
  3. HTML→PDF 測試

    weasyprint "data:text/html,<h1>Hello</h1>" test.pdf
  4. Python 測試

    from weasyprint import HTML
    HTML(string="<h1>Hello</h1>").write_pdf("test2.pdf")
    print("PDF 轉檔成功!")
  5.  Pandoc 測試  (安裝 winget install JohnMacFarlane.Pandoc)

            pandoc --version

   pandoc "C:\MARKDOWN_2_PDF.md"  

                -f markdown -t html  

               -o "C:\MARKDOWN_2_PDF.html"

相關KEYWORD資訊:

MSYS2,

將易偏移的 ASCII 藝術圖,系統能透過 結構分析 與  GfmTableFormatter 模組,自動將其轉化為符合 GitHub Flavored Markdown (GFM),增加文件可讀性