含表格的Markdown轉PDF:印出來一樣清楚好讀
作者 pdftomd.tools 團隊 · 更新於 · 約 6 分鐘閱讀
想把含表格的Markdown轉PDF又不讓表格跑版,就寫單純的 GFM 表格,寬度控制在頁面內,再用一個絕不會把一列從中間切開的轉譯器匯出,例如我們的 MD轉PDF 工具。匯出後打開 PDF 確認三件事:每一欄都看得到,換頁處的每一列都完整,儲存格裡的文字可以選取、可以搜尋。

簡單回答:GFM 表格 + 不會切斷資料列的轉譯器
Markdown 表格是 GitHub Flavored Markdown 的擴充語法:一列標題、一列分隔線,再加上幾列資料,用直線符號隔開。像樣的匯出工具都看得懂。真正的差別出現在表格碰到頁面邊緣的時候:不是右邊(欄太多),就是下面(列太多)。
印出來的表格好不好讀,取決於三件事:表格相對於頁面有多寬、換頁時發生什麼事,以及輸出的是不是真正的文字。下面一項一項說明,數據來自我們自己的匯出器,在 2026 年 10 月 18 日實測。

怎麼寫出好列印的表格
Markdown表格轉PDF會出狀況,大多是原始檔案就埋下的。養成幾個習慣,就能避開大部分問題:
- 儲存格要短。 長的說明移到表格下方的段落,儲存格裡只放一個簡短的關鍵字。
- 數字要對齊。 分隔線寫成
---:就會靠右對齊,印在紙上一眼就能比較數字。 - 一定要有標題列。 GFM 規定一定要有,而且表格延續到第二頁時,讀者找的就是這一列。
- 避免沒有空格的長字串。 網址和檔案路徑沒辦法在空格處換行,會把整欄撐寬。把它縮短,或移到表格下方做成註腳式清單。
- 儲存格裡的直線符號要跳脫,寫成
\|,不然那一列會多出一欄。
| Task | Owner | Status |
| :------------- | :---- | --------: |
| Draft the brief | Dana | Done |
| Review tables | Lee | In review |
| Export the PDF | Sam | Next |匯出前,先用接近列印的寬度看一下表格。在我們的匯出器裡,A4 內文寬度大約是 680 個 CSS 像素。如果在窄的預覽裡就已經要左右捲動,印到紙上一定會很擠。
寬表格:A4 放不下所有欄位時怎麼辦

寬表格是 PDF 匯出最常默默出錯的地方。我們剛開始為這篇文章做測試時,用自己的工具匯出一份 9 欄的表格,9 個標題儲存格只有 5 個完整落在頁面內,最後一欄完全看不到,其餘部分都跑到右邊界外。我們當天就修好了匯出器。現在會超出頁面的表格會讓儲存格文字自動換行來符合寬度,重新測試時 9 欄全部都在頁面內,沒有文字超出右邊界。

調整寬度總比少掉欄位好,但不算好看:太窄的儲存格會把單字拆開。PDF 裡的寬表格還有四種更好的做法,建議照這個順序試:
- 刪除或合併欄位,拿掉讀者在紙本上用不到的欄。
- 拆成兩份表格,兩份共用一個關鍵欄位,例如編號或名稱。
- 欄列互換,讓很多欄變成列。
- 橫式列印。 我們的匯出器只產生直式 A4。以 Chromium 為基礎的匯出工具支援
@page { size: A4 landscape; }這類 CSS 規則(MDN:size)。
跨好幾頁的長表格
長表格跨頁會有兩種壞法:一列被切開,上半部在這一頁、下半部在下一頁;或是第二頁沒有標題列,讀者搞不清楚哪一欄是什麼。只要表格超過一頁,含表格的Markdown轉PDF時這兩點都很重要。我們用一份 60 列、每列折成兩行文字的表格做了測試。
| 匯出工具 | 頁數 | 被切開的列 | 有標題列的頁面 |
|---|---|---|---|
| pdftomd.tools MD轉PDF | 4 | 0 | 4 頁中 1 頁 |
| Chrome 列印為 PDF(Chrome 155.0.8059.84) | 3 | 0 | 3 頁中 3 頁 |

我們的匯出器會讓每一列保持完整,但不會在後面的頁面重複標題列。Chrome 兩件事都做到了。CSS 2.1 規格允許這麼做,但沒有強制要求:
“列印用的使用者代理程式可以在表格所跨的每一頁重複標題列。”
如果現在用我們的工具就需要每頁都有標題列,可以把長表格切成一頁一段,自己在每段開頭補上標題列。在以 HTML 為基礎的匯出工具裡,tr { break-inside: avoid; }(MDN)會請瀏覽器不要切斷資料列。
Markdown表格轉PDF:瀏覽器工具 vs VS Code vs Pandoc
三種做法都能把含表格的Markdown轉PDF,差別在於安裝的麻煩程度,以及能調整到多細。
| 做法 | 轉譯方式 | 表格實際表現 |
|---|---|---|
| 我們的瀏覽器工具 | 在瀏覽器裡排版,用 pdf-lib 寫入文字 | 資料列完整;標題列不重複;寬表格自動調整 |
| VS Code + Markdown PDF 擴充功能 | 透過 Chrome、Edge 或 Chromium 列印 | 支援自訂樣式表和橫式設定 |
| Pandoc | 預設經由 LaTeX 轉換 | 使用 longtable 環境,表格可以跨好幾頁 |
VS Code 的部分,Markdown PDF 擴充功能 的說明文件列出用來自訂 CSS 的 markdown-pdf.styles 設定,以及直式、橫式選項。它用 Chromium 瀏覽器列印,跟上表 Chrome 那一列是同一個引擎;不過擴充功能本身我們沒有測過。
Pandoc 的部分,Pandoc 使用手冊 提到 LaTeX 輸出預設使用 longtable,表格可以跨過換頁繼續。手冊也說,如果直線表格裡有一列比欄寬還長,各欄的相對寬度會依分隔線上的連字號數量來分配。換句話說,不用 HTML 也能把某一欄調寬。
pandoc report.md -o report.pdf檢查 PDF:文字可以選取,儲存格可以搜尋

含表格的Markdown轉PDF,最後要檢查的是文字層。儲存格必須是真正的文字,匯出表格才有意義。有些匯出工具,包括我們工具的備用模式,會把每一頁存成圖片放進 PDF:看起來沒問題,卻不能搜尋、不能複製,螢幕閱讀器也讀不出來。檢查只要十秒:打開 PDF,按 Ctrl+F(或 Cmd+F),搜尋一個只出現在某個儲存格的詞,再選取一列貼上看看。
我們的匯出器寫入的是真正的文字,並內嵌字型子集。在來回測試中,我們把四份表格列印成 PDF,再用我們的 PDF轉Markdown 工具 轉回來,17 列裡有 17 列和原始檔完全相同,包括一個跳脫的直線符號和靠右對齊的數字。反方向的做法,請看我們的 PDF表格轉Markdown 教學。
資料來源
- GitHub Flavored Markdown Spec, 4.10 Tables (extension) — GitHub, 2019
- CSS 2.1 Specification, 17 Tables — W3C, 2011
- break-inside — MDN Web Docs
- size (@page descriptor) — MDN Web Docs
- Pandoc User’s Guide — pandoc.org
- Markdown PDF (VS Code extension) — yzane, Visual Studio Marketplace
常見問題
含表格的Markdown要怎麼轉成PDF?
用直線符號和標題列寫 GFM 表格,寬度控制在頁面內,再用不會切斷資料列的工具匯出。匯出後在 PDF 裡檢查有沒有被切掉的欄、被切開的列,以及文字能不能選取。
為什麼 PDF 裡表格的欄位被切掉了?
表格比可列印範圍還寬,匯出工具又沒有把它縮小。可以刪欄或拆表、欄列互換,或改成橫式列印。我們的匯出器現在會讓寬表格的文字換行,符合頁面寬度。
標題列會在每一頁重複嗎?
要看匯出工具。在我們的測試中,Chrome 列印為 PDF 時每頁都重複標題列;我們的匯出器只在第一頁顯示,所以讀者需要的話,請把長表格拆開。
可以橫式列印 Markdown 表格嗎?
我們的匯出器不行,它只產生直式 A4。以 Chromium 為基礎的工具可以在樣式表裡寫 @page { size: A4 landscape; },VS Code 的 Markdown PDF 擴充功能也有方向設定。
PDF 裡的表格文字可以搜尋嗎?
用我們的匯出器可以:儲存格是內嵌字型的真正文字。有些工具存的是頁面圖片,搜尋一個儲存格裡的詞就能確認。
把 PDF 再轉回 Markdown,跨頁的表格會自動合併嗎?
不會。轉回來會是每頁一份表格;刪掉重複的標題列和分隔線就能合併。做法請看我們的 表格教學。

