把 Markdown 轉成 PDF 的完整步驟

重點摘要
  • 上方的預覽就是 PDF:畫面上看到什麼,印出來就是什麼。
  • 按下列印,目的地選「另存為 PDF」。
  • 紙張大小、邊界與縮放屬於瀏覽器的列印對話框,不在本頁。
  • 全程不上傳,所以合約與尚未公開的草稿都可以放心。

最難的部分你已經做完了。這一頁接下來要講的是:瀏覽器剛剛做了什麼、印壞了怎麼救,以及什麼時候該換一個工具。

從頭到尾四個步驟

  1. 把 Markdown 放進上方的輸入框。打字、貼上,或把 .md 檔的內容丟進來都可以。標題會變成真正的標題、表格會有框線,井字號和星號則完全消失。
  2. 把預覽當成樣張來讀。螢幕上看起來怪的地方,印出來一樣怪。未關閉的程式碼圍籬、壞掉的表格,都在這一步抓出來。
  3. 按下列印。瀏覽器的列印對話框會打開,在「目的地」選「另存為 PDF」。Safari 把同一個選項藏在左下角的「PDF」按鈕裡。
  4. 設定版面,然後儲存。紙張大小與邊界都在那個對話框裡。下一節會講真正重要的三個設定。

檔案不會離開你的裝置

排版由這個分頁裡的 JavaScript 完成,結果直接交給列印對話框,文字不會送到任何伺服器。所以合約、內部文件,以及任何你不會隨手貼到陌生上傳表單的內容,走這條路線都很安全。

這也表示不用排隊、不用帳號、沒有檔案大小上限。想看更短的版本,常見問題裡的如何把 Markdown 轉成 PDF讀起來更快。

插圖:一份 Markdown 文件通過瀏覽器列印對話框,輸出成已分頁的 PDF 檔案

實際範例,以及產生它的設定

以下是一份真的會被列印出來的短文件,包含標題、次標題、表格、項目清單與程式碼區塊:

# Q3 Infrastructure Review

## Summary
Uptime held at 99.98% across all three regions.

| Region | Incidents | Mean recovery |
| :----- | --------: | ------------: |
| eu-west | 3 | 11 min |
| us-east | 1 | 4 min |

## Actions
- Move the staging cluster to the new image
- Add alerting for queue depth > 500

```bash
kubectl rollout restart deploy/api
```

> Full incident notes are in the ops wiki.

印出來是什麼樣子,用了哪些設定

用下面這組設定列印,它會變成整齊的一頁:粗體大標題、有框線且數字靠右的表格、正常的項目清單、等寬字型且帶底色的程式碼區塊,最後是一段內縮的引用。那個圍欄標了 bash,所以關鍵字在預覽和紙上都會上色。原始碼裡的符號一個都不會出現在 PDF 上。

目的地:      另存為 PDF
紙張大小:    A4       (美國用 Letter)
版面配置:    直向     (寬表格改用橫向)
邊界:        預設     (想更密集可選自訂)
縮放:        100%     (90% 可以救回稍微超出的一頁)
背景圖形:    開啟     (保留程式碼區塊底色)
頁首和頁尾:  關閉     (移除網址與日期)

注意大於符號出現在哪個位置

原始碼裡有兩個大於符號,行為完全不同。夾在項目文字中間的那個只是比較運算子,會原樣印出;出現在最後一行行首的那個是 Markdown 的引用標記,會被印成內縮的引用區塊。

位置決定一切,這正是完整 Markdown 指南裡整理的小陷阱之一。如果「標點符號會變成排版」這件事對你還很陌生,什麼是 Markdown 會從頭講起。

所有 Markdown 轉 PDF 路線比較

瀏覽器列印不是唯一的方法,也不永遠是最好的方法。下表誠實比較各種實際可行的選項,包括那些比本頁更強的工具。

路線需要安裝版面控制費用適合情境
本頁(瀏覽器列印)不需要只有列印對話框免費現在就要一份文件
MD Editor 列印按鈕不需要只有列印對話框免費寫作與匯出在同一個地方
Chrome 或 Edge 列印成 PDF不需要邊界、縮放、頁首頁尾免費瀏覽器裡最可預測的輸出
Safari 儲存為 PDF不需要選項較少,無縮放免費手邊剛好就是 Mac
Pandoc 搭配 LaTeX很大,1 GB 以上完全掌控,書籍品質免費論文、正式報告、真正的排版
Pandoc 搭配 weasyprint小型 Python 套件完整 CSS 控制免費用樣式表產出品牌一致的文件
Pandoc 搭配 wkhtmltopdf中型執行檔不錯,以 HTML 為基礎免費伺服器上的批次作業
VS Code Markdown PDF 擴充編輯器擴充套件可依專案設定免費不離開編輯器就完成匯出
Typora 匯出桌面應用程式主題與自訂 CSS付費,買斷授權每天都在寫 Markdown 的人
Obsidian 匯出 PDF桌面應用程式取決於主題個人使用免費把知識庫筆記印出來
需要上傳的線上轉換器不需要不一定,常常沒有免費但有限制很少是正確答案

什麼時候值得下載 Pandoc

Pandoc 搭配 LaTeX 引擎在四件事上贏得漂亮:每頁自動頁碼、自動產生目錄、交叉參照,以及每週一自動執行同一道指令。這幾項幾乎沒有對手。代價是龐大的安裝檔,還有一套要學的命令列。

什麼時候瀏覽器就夠了

如果只是要一份今天就得寄出、看起來乾淨的文件,瀏覽器路線並不是退而求其次。它更快、完全免費,而且在什麼都不准安裝的公司筆電上照樣能用。

注意:表格最後一列是警語,不是建議。把機密文件上傳到來路不明的轉換器,換不到任何你自己的瀏覽器做不到的事。

常見問題與修法

幾乎每一份不理想的 PDF 都能歸到下面這些狀況。第一組出在列印對話框,第二組出在文件本身,也就是上方預覽其實早就把問題演給你看了。

列印對話框造成的問題

  • 程式碼區塊與表格標題印成一片空白。背景圖形是關閉的。在「更多設定」裡打開它,再印一次。
  • 頁面邊界出現網址、日期與網頁標題。那是瀏覽器的頁首頁尾,不是你文件的內容。把「頁首和頁尾」取消勾選即可。
  • 寬表格右側被裁掉。把版面改成橫向、把縮放降到 85% 或 90%,或直接刪欄。直向 A4 大約六欄就是舒適上限。
  • 標題孤零零掉在頁尾。分頁是自動的。在標題上方多加一兩行內容,或在大段落前插入一條水平線,通常就能把它推到下一頁。

文件本身造成的問題

  • PDF 裡滿是井字號與星號。你列印的是原始碼而不是排版後的結果。請從排版面板列印,不要從顯示 .md 原始碼的文字編輯器列印。
  • 文件少了一半。檢查是不是有未關閉的程式碼圍籬。多出來的三個反引號之後的內容都會被吞進程式碼區塊,所以先讀預覽就能抓到。
  • 長網址衝出頁面。裸網址是一個無法斷開的長單字,所以不能換行。寫成 [有文字的連結](https://example.com/very/long/path),在 PDF 裡依然可以點。
  • 一張圖片佔滿整頁。圖片會依渲染尺寸列印。列印前用 <img src="chart.png" width="450"> 限制寬度即可。

這些狀況裡,表格製造的麻煩最多。表格指南說明如何重組塞不下的資料,把格子搬進表格產生器重建,也能很快試出比較窄的版本。

如果檔案是別人寄來的,先用 Markdown 檢視器打開確認讀得順,再從那裡列印。

相容性資料驗證日期

常見問題

這個 Markdown 轉 PDF 工具免費嗎?

免費。不需要帳號、沒有頁數限制、沒有浮水印。轉換使用你自己瀏覽器的列印引擎,沒有東西要付費,也沒有東西要安裝。

我的文件會被上傳嗎?

不會。你的 Markdown 由分頁內執行的 JavaScript 排版後交給瀏覽器的列印對話框,全程不會送到伺服器,所以機密草稿也能安心使用。

紙張大小與邊界要在哪裡調整?

在列印對話框裡,不在本頁。紙張大小、方向、邊界與縮放都是瀏覽器設定。選好 A4 或 Letter 之後,記得打開「背景圖形」,程式碼區塊才會保留底色。

怎麼移除 PDF 上的網址與日期?

那些來自瀏覽器,不是你的文件。在列印對話框(通常在「更多設定」底下)取消勾選「頁首和頁尾」即可。其他值得調整的設定,請見如何把 Markdown 轉成 PDF

存成 PDF 後連結還能點嗎?

可以。瀏覽器列印成 PDF 會把超連結保留成真正的註解物件,[文字](網址) 形式的連結依然可點。裸網址也會變成連結,但它無法換行,所以建議一律寫成有文字的連結。

延伸閱讀

立即使用編輯器

開啟編輯器