情境: 因筆者使用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 不在這些路徑,會出現
FileNotFound或Error 0x7e。
2. Python 與 CFFI(橋接層)
- WeasyPrint 以 Python 為外層,但核心排版功能依賴 Pango、Cairo、GObject。
- CFFI 在
import weasyprint時會呼叫LoadLibrary去載入libpango-1.0-0.dll、libgobject-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. 測試步驟
檢查 DLL
where libgobject-2.0-0.dll where libpango-1.0-0.dll顯示 WeasyPrint 系統資訊
weasyprint --infoHTML→PDF 測試
weasyprint "data:text/html,<h1>Hello</h1>" test.pdfPython 測試
from weasyprint import HTML HTML(string="<h1>Hello</h1>").write_pdf("test2.pdf") print("PDF 轉檔成功!")Pandoc 測試 (安裝 winget install JohnMacFarlane.Pandoc)
pandoc "C:\MARKDOWN_2_PDF.md"
-f markdown -t html
-o "C:\MARKDOWN_2_PDF.html"
相關KEYWORD資訊:
將易偏移的 ASCII 藝術圖,系統能透過 結構分析 與 GfmTableFormatter 模組,自動將其轉化為符合 GitHub Flavored Markdown (GFM),增加文件可讀性