TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南
TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南

PrinterService 是一支 817 行的開源 Python 程式,把接印表機的 Windows 電腦變成區網列印閘道器:任何裝置用瀏覽器連上網址、上傳檔案,程式透過 Microsoft Office 的 COM 自動化轉成 PDF 再靜默送印。本文從程式碼整理它真正的代價:列印是把每頁重繪成圖、雙面與紙張選項只寫進紀錄沒有作用、整個服務零認證且檔名未做安全處理,以及這個一天做完就停更的分支和還在更新的上游原作該怎麼選。
用 AI 摘要這篇文章:
家裡那台印表機接在 Windows 電腦上,手機卻印不了東西,這個場景比想像中常見。老一點的機種沒有 AirPrint 或 Mopria,原廠 App 停更或難用,筆電要列印還得先裝驅動、加入分享區網,Windows 版本一換常常整串失效。印表機明明就好好的,卡住的是「別的裝置到不了它」這一段。開源專案 PrinterService 補的就是這個洞:在接印表機的那台 Windows 電腦上跑一支小程式,區網內任何裝置打開瀏覽器、連上網址,把檔案拖進去就送印,什麼驅動都不用裝。

它的形態很單純:一支 817 行的單檔 Python 程式,執行後縮在系統匣右下角當個印表機小圖示,背後開一個 Flask 網頁服務。手機、平板、別台筆電只要連到同一個區網,瀏覽器輸入主機 IP 加連接埠 5000,就是它的上傳介面。下面從整支程式碼與討論區的實際回報,整理它真正能解決的事,以及幾件介面上看不出來、但會影響你決定的代價。
它的運作從程式碼看是一條三段流水線:網頁上支援拖曳或點選上傳,檔案先進主機的暫存資料夾;接著統一轉成 PDF,這是整個工具的核心;轉好的 PDF 不開任何視窗,直接經由 Windows 的列印 API 靜默送進你選的印表機。
轉檔這段因檔案類型而走兩條完全不同的路。Word、Excel、PowerPoint 檔是叫起主機上安裝的 Microsoft Office,透過 COM 自動化在背景開 Word 或 Excel 轉出 PDF,所以主機沒裝 Office,這三類檔案就轉不動;用 WPS 的環境也不在支援範圍,討論區有人問 WPS 能不能支援,至今沒有官方答案,反而是另一位使用者自己改了一版分支補上。圖片和純文字檔則不依賴 Office,程式用 reportlab 自己生成 PDF,文字檔還會去找 Windows 內建的中文字型來嵌入,避免中文變成方框。PDF 本身直接放行,圖檔支援 jpg、png、gif、bmp、tiff 等格式,純文字類涵蓋 txt、md 與 log。Office 轉檔這條路,程式碼裡看得出作者花過功夫:三種文件各有三到四層備援,先走最正規的匯出固定格式介面,失敗退 SaveAs2,再失敗退舊版存檔方法,全部試過才宣告轉檔失敗,轉完還會確認輸出檔真的存在而且有內容。這不代表轉檔永不失敗,討論區照樣有人在 Windows 10 LTSC 上遇到檔案不轉換的狀況,但至少不是只寫一條路就收工的等級。
檔案管理與操作細節也有幾件值得知道。網頁上能預覽轉好的 PDF、看原始檔、刪掉不要的檔案,也能一次把清單裡所有檔案批次送印;份數是有作用的,列印函式會照你填的份數逐份重送。服務網址不用背,對系統匣的印表機圖示按右鍵,選單第一項就顯示這台電腦的 IP 加連接埠組成的完整位址,手機照著輸入就能連上;同一個選單裡也有開機自動啟動的開關,背後寫的是使用者層級的登錄檔 Run 機碼,不動系統全域設定。暫存會自動清理,超過一小時的上傳檔與轉出檔每十分鐘清一次,不會愈堆愈多;但列印紀錄檔會一直留著,網頁上就看得到最近十筆印過的檔名,在意隱私的環境要把這條算進去。另外印表機清單是程式啟動那一刻抓的,中途換印表機或改設定,要重開程式才會反映。這類把家裡一台舊電腦變成小服務的思路,跟自架記帳工具是同一個方向:硬體閒置著,就讓它多做事。
「靜默列印」聽起來像直接把 PDF 丟給印表機,實際上這支程式走的是比較繞的路。程式碼裡,每一頁 PDF 先被 PyMuPDF 以兩倍矩陣轉成點陣圖,再由 Windows 的繪圖介面縮放後畫到紙上,而且縮放比例還刻意乘上 0.9、在版面置中。也就是說,印出來的每一頁都是「重新拍照」的結果,文字邊緣的清晰度、整頁的白邊,都取決於這段重繪。
這不只是理論。討論區 2025 年 12 月有人貼出對照圖:同一份文件,左邊是主機直接列印,右邊是經過這個服務,右邊白邊明顯較大、文字也糊一級。隔月另一個留言者把原因指向程式裡的縮放比例,跟程式碼的寫法對得上。對印表單、印參考資料這類日常文件,這個折扣多半可以接受;但如果你要印的是簡報、照片或對銳利度講究的文件,這個工具的極限就卡在這裡,程式碼沒有留向量輸出的路。
介面上看得到單面或雙面的切換與紙張尺寸欄位,後端還收一個前端寫死的一般品質參數;從程式碼看,這幾項的下場都一樣:被寫進列印紀錄的一行字,然後就沒了。列印函式收進雙面參數後從頭到尾沒有使用,紙張與品質同樣只出現在紀錄裡。換句話說,這三個選項目前是介面裝飾。
討論區的回報也吻合。有人在 Windows 10 LTSC 上卡住,留言補充自己遇到的問題同樣是雙面列印印不了;另一則直接要求補上直向橫向的紙張選擇,同樣沒有下文。程式裡其實還有一個備用的命令行列印函式,寫好了但從未被呼叫,看得出作者想過不同的列印路徑,只是這個版本停在了現在這個樣子。要雙面列印的讀者,現階段只能在原機器上操作,或接受單面。
安全性是這個工具最需要先講清楚的一條。整個網頁服務沒有任何登入、密碼或權杖,而且綁在 0.0.0.0 的 5000 埠,意思是同一個區網裡的任何人打開網址,就能上傳檔案、送列印、預覽暫存區裡的檔案、把檔案刪掉,也看得到檔名清單。在家用網路裡,這通常就是你自己跟家人,問題不大;但若是在宿舍、公司或公共網路,等於把印表機和暫存檔開放給整個網路的人,而且多印的紙、刪掉的檔都不會先問你。
程式碼裡還有一個模式值得留意:上傳存檔時直接拿瀏覽器送來的原始檔名去組存檔路徑,刪除與預覽也一樣,沒有做安全檔名處理。Flask 官方文件對這種寫法有明確警告,因為精心構造的檔名有機會把路徑指到暫存資料夾以外的地方。這不是叫讀者去測試它,而是說明為什麼這個服務的適用範圍就是完全信任的家用區網:它假設網路裡沒有陌生人,一旦這個前提不成立,風險就跟著放大。想把它暴露到網際網路上遠端列印,這個版本做不到安全,也千萬別用埠轉送硬開。同樣把服務開在區網內的自架工具,都值得先問一句「誰連得上」;鄰雲那類區網遠端工具把連線範圍畫在區域網路內,而這個服務的答案是整個網路的人都能連。
這個專案的來歷會影響你的選擇。它的 repo 說明寫明是基於另一個專案 lan-printing 的修改版,README 也放了原專案連結,但它不是 GitHub 上的正式 fork,而是把改過的程式碼當成獨立專案重新上傳。時間線很戲劇化:原作 2025 年 9 月 13 日建立,這個修改版 9 月 18 日出現,6 個 commit 全部落在台灣時間 9 月 18 日下午 1 點 57 分到 4 點 47 分之間,之後程式碼再也沒有動過。作者在討論區的九個問題裡零回覆,包括多人回報雙擊執行檔沒有反應、Windows 7 跑不起來這類最基本的問題,從 2025 年 10 月拖到 2026 年 5 月都沒有答案。

有意思的是熱度與維護是脫鉤的。這個停更的修改版有 929 顆星、76 次 fork,原作反而只有 396 顆星,但原作還在走:README 記錄到 2026 年 4 月已更新到 2.6 版,新增了掃描功能與舊印表機相容性,版本一路從 1.3 疊到 2.6 都留在 repo 的分支裡,有自己的下載頁、社群群組,甚至為執行失敗的環境另外準備了修復工具。兩邊還有一個授權上的落差:原作掛 BSD-2-Clause 授權,repo 裡有授權條款檔案;修改版重散布了別人改過的程式碼,卻沒有放任何授權檔。BSD 條款的要求不算嚴苛,散布時保留版權聲明是基本義務,這個細節對一般家用影響不大,但代表這個分支在授權與治理上是真空的。
取得程式的方式也要想一下。repo 的 dist 資料夾直接放了一個約 41MB 的執行檔,Release 頁另有同一支程式,累積約 1,800 次下載。下載一個一天專案打包的 Windows 執行檔,等於把信任交給打包當下的環境;程式有附 PyInstaller 打包設定檔,會 Python 的人可以自己從原始碼打包,風險可控一些。另外社群裡還有第三方在 2026 年 5 月 fork 出修改版,自稱補上跨平台與 WPS 支援,一樣沒有授權檔,等於下游的下游。真要長期用,回頭看還在更新、授權清楚的原作,是比較能防守的選擇。
適合的場景可以列得很具體:家裡有台接著印表機的 Windows 電腦、裝了 Microsoft Office、區網完全信任,平常需要從手機、平板或臨時裝置印個表單或文件,能接受白邊與清晰度打點折扣。對這種需求,它的價值很實際:什麼都不用裝,瀏覽器開網址就能印,暫存也會自動清掉。
不適合的清單同樣明確。要雙面列印或對輸出品質講究的人,前面提過的點陣重繪與失效選項會直接踩到;主機不是 Windows、或只有 WPS 的人,核心轉檔就斷了,Mac 與 Linux 的相同需求走的是系統內建的方向,CUPS 的網頁介面就是那個世界裡的對應物;網路環境有陌生人、或想從外部網路連回家列印的人,這個零認證的版本不該上場;要有人支援、要持續修 bug 的人,上游原作才是該看的地方,這個一天就停更的分支撐不起長期使用。如果需求其實是「把檔案送到某台裝置再說」,PrintRelay 這類免登入傳檔工具服務的是另一段路,兩者可以想清楚再選。
還有一個該攤開的未知數:程式碼停在 2025 年 9 月,討論區的回報也止於 2026 年 5 月,這支程式在 2026 年 8 月的 Windows 更新與新印表機驅動上表現如何,現有資料給不了保證,這正是零支援專案的現實。
想試的人,第一步很輕:確認主機的 Office 與印表機都正常,跑起服務後從手機連一次網址,上傳一頁 PDF 印出來,對照一下白邊與文字清晰度能不能接受。這一頁紙就是你的決策依據,比任何介紹都準。