最後更新:2026/10/13
新北一家賣烘焙材料的網店,訂單多了以後想省下手抄的時間,裝了「PDF Invoices & Packing Slips for WooCommerce」,每張訂單都能直接印出貨單。第一次按下列印,客人的名字、地址、商品名稱全變成一格一格的空白方塊,只有英文和數字正常。
這是這個外掛在台灣最常被問的問題,原因和解法都很明確。下面先說為什麼會變方塊,再介紹兩種解法,最後提醒一個很多教學沒講、卻會讓 PDF 暴增到好幾 MB 的設定。
不想自己改?把這篇交給 AI
把這篇的網址(或全文)連同下面這段話貼給 AI:
我的網站是 WordPress,有裝 WooCommerce。我想照下面這篇文章,讓 PDF Invoices & Packing Slips 印出來的發票和出貨單正常顯示中文,PDF 檔案也不要太大。
請先問我:我用的外掛版本、主機空間還剩多少。
問清楚之後,再一步一步告訴我:要用哪一段程式碼、貼在哪裡、哪些地方要換成我自己的資料,以及改完怎麼測試。
如果文章的做法不適合我的網站,請直接告訴我原因和替代做法。
文章:(貼上這篇的網址,或整篇內容)
改之前先備份,密碼不要貼給 AI。
為什麼中文會變成方塊
PDF 和網頁不一樣,網頁上的字用的是看網頁那台電腦裡的字型;PDF 要把字型一起包進檔案裡,換到哪台電腦打開都長得一樣。這個外掛產生 PDF 時,預設包進去的是西文字型,裡面沒有中文字,所以遇到中文只能畫出空白的方塊。
我們在測試站下了一張中文訂單,產生的出貨單上,「王小明」「復興南路」「手工皂禮盒」全是方塊;用工具讀 PDF 裡的文字,中文都在,只是字型裡沒有這些字的樣子。所以解法就是:讓 PDF 用一套有中文字的字型。
解法一:裝官方的 Unicode 字型包
外掛的開發者另外出了一個免費的擴充,叫「PDF Invoices & Packing Slips for WooCommerce – Unicode Language Pack」,放在他們的 GitHub 上,外掛說明頁也有連結。裝好之後,在外掛的一般設定裡選擇字型(新版可以直接選「Noto Sans CJK (Traditional Chinese)」),中文、粗體都能正常顯示,它也會自動開啟下面會講到的字型子集。
要注意的是檔案很大。這個擴充的壓縮檔裡包了中日韓好幾套字型,最新版超過 100 MB。很多主機限制後台上傳檔案的大小,從「外掛 → 安裝外掛 → 上傳外掛」可能會傳不上去,這時候用主機的檔案管理或 FTP,把解壓縮後的資料夾放進 wp-content/plugins/,再回後台啟用。裝好之後,用一張測試訂單印一次出貨單,也在前台自己下一次單,確定結帳流程沒有受影響。
解法二:自己指定一套中文字型
如果不想裝那麼大的字型包,或者想用自己品牌的字型,可以自己指定。先準備字型檔,Google Fonts 的 Noto Sans TC(思源黑體)可以免費商用,下載後用裡面「static」資料夾的 Regular 和 Bold 兩個 .ttf 檔。這個外掛只吃 TTF 格式,OTF、WOFF 都不行。
把兩個字型檔上傳到 wp-content/uploads/fonts/,再加上這段程式碼:
// PDF 發票、出貨單改用中文字型(字型檔先上傳到 wp-content/uploads/fonts/)
add_action('wpo_wcpdf_custom_styles', function ($type, $document) {
$dir = content_url('uploads/fonts/');
?>
@font-face {
font-family: 'Noto Sans TC';
font-weight: normal;
src: url('<?php echo esc_url($dir . 'NotoSansTC-Regular.ttf'); ?>')
format('truetype');
}
@font-face {
font-family: 'Noto Sans TC';
font-weight: bold;
src: url('<?php echo esc_url($dir . 'NotoSansTC-Bold.ttf'); ?>')
format('truetype');
}
body, h1, h2, h3, h4, table, th, td {
font-family: 'Noto Sans TC', sans-serif;
}
<?php
}, 10, 2);
// 只把用到的字放進 PDF,不然每張發票都會有好幾 MB
add_filter('wpo_wcpdf_dompdf_options', function ($options) {
$options['isFontSubsettingEnabled'] = true;
return $options;
});
wpo_wcpdf_custom_styles 是外掛留給使用者加樣式的地方,所以不用複製整套範本到主題裡。網路上早期的教學,多半是把外掛的範本資料夾整個複製到子主題、再改裡面的 style.css,那樣也可以,只是外掛更新範本時,你複製出去的那份不會跟著更新。
程式碼放在 Code Snippets 這類外掛或子主題,放法和備份方式見〈WooCommerce 結帳頁改成台灣習慣〉。
一定要開「字型子集」
上面那段程式碼的後半部,是很多教學沒寫的。一套中文字型動輒 5 到 15 MB,PDF 預設會把整套字型包進去。我們實際比較過同一張出貨單:沒開字型子集,PDF 是 9.5 MB;開了之後只剩 19 KB。一天出幾十張單,差別就是信箱塞爆和輕鬆寄出。
「字型子集」的意思是只把這張單用到的那幾十個字放進 PDF。外掛的一般設定裡也有這個勾選(Enable font subsetting),說明還特別寫了用亞洲字型時建議開啟;用程式碼或在設定裡勾選,效果一樣。官方的 Unicode 字型包會自動幫你開,自己指定字型的話要記得開。
順便檢查:重量單位
中文字出來之後,很多店家會發現出貨單上的重量寫著「0.8lbs」。這不是 PDF 外掛的問題,是 WooCommerce 的重量單位預設是磅。到「WooCommerce → 設定 → 商品」,把「重量單位」改成公斤(尺寸單位順便改成公分),之後商品頁、出貨單、運費計算都會用公制。已經填好的重量數字不會自動換算,改單位後要逐一確認。
出貨流程順了,才有時間經營
從印出貨單、包貨到寄出,每一步省下幾分鐘,訂單一多就是好幾個小時。網站的後台流程,和前台的商品頁一樣值得好好設計。如果你還在用表單或私訊接單,可以先看〈IG 帳號不是你的資產〉,想想自己的網站能幫你省下多少事。
MIMI 專做客製化網頁設計,購物車電商網站可以從結帳、訂單到出貨單一起規劃。MIMI 提供新北網頁設計服務,新北的網店可以用電話、Email 直接和設計師討論;費用可以先看首頁的製作費用參考,歡迎聯絡 MIMI。
