安全的批次 QR Code 產生器可以完全在瀏覽器中建立最多 20 個不重複的 QR Code PNG,顯示每個輸出結果,並在使用前交由你完成最終驗證。批次 QR Code 產生器遵循此模式。貼上的各行內容不會被上傳、縮短、追蹤或記錄,而內容資料與轉譯後的 PNG 資料 URL 會保留在目前的分頁中。每個符號都有自己的預覽、固定格式的檔名與個別下載連結,因此工具不會一次啟動一整包非預期的下載。當你需要少量代碼,又不想將來源清單傳送至伺服器時,這種本機批次工作流程便很適用。不過,安全性包含兩個部分。本機處理可降低產生階段的資料傳輸與追蹤風險,但無法保證 QR Code 在每台裝置上都能成功掃描,或其目的地值得信賴。如果內容資料超過 QR Code 的容量,產生器也會顯示錯誤,而不會將不完整的批次呈現為已完成。若要負責任地使用,請在指定限制內準備不重複的各行內容、選擇適合顯示或印刷情境的設定、個別下載 PNG、保留其靜區,並使用預定的裝置與應用程式掃描每個最終檔案。發布、印刷、標示庫存或散發活動材料之前,請逐字確認解碼後的內容資料。

這種批次工作流程中的安全意義
就這項任務而言,安全性包含兩個層面:建立期間如何處理來源資料,以及每個完成的符號是否如預期般運作。以瀏覽器為基礎的批次流程透過讓編碼與轉譯作業留在本機,處理了第一個層面。檢視與下載流程讓你能控制第二個層面,但無法證明目的地是安全的,也無法保證每個讀取器都會以相同方式解讀內容資料。
介面中可看到一項實用的安全措施:成功的批次會顯示最多 20 個獨立預覽與個別 PNG 連結,而不是將輸出結果藏在自動下載的壓縮檔中。如果某個代碼有誤,你可以修正相關輸入並重新產生,而不必猜測哪個檔案來自哪一行。
本機處理與下載隱私
所有內容資料與產生的 PNG 資料 URL 都會保留在目前的分頁中。任何內容都不會被上傳、縮短、追蹤或記錄。此實作會呼叫 qrcode 1.5.4,也就是 Lizely 的單一 QR Code 產生器已使用的編碼器;node-qrcode 瀏覽器 API 文件則說明用於 PNG 轉譯的 toDataURL 方法。重複使用該編碼器可避免採用第二套 QR Code 實作,並降低批次流程與單一代碼流程產生差異的風險。
這是對於處理位置與資料處理方式的說明,並非對未知目的地或遭入侵裝置的保證。每個預覽都有自己的固定格式檔名與下載連結,而且不需要任何壓縮檔程式庫或伺服器作業。此專案刻意不提供 ZIP 建立功能,因為這不會增加任何新的壓縮檔相依性。瀏覽器政策可能要求每個檔案各點擊一次,或顯示下載權限提示,而產生器絕不會觸發 20 次自動下載。這種明確的模式讓你能控制哪些 PNG 納入專案。
會影響結果的批次限制
批次最多接受 20 個不重複的值,每行限制為 2,000 個 JavaScript 字元。解析器會修剪前後空白、移除空行,並合併完全重複的行,同時保留首次出現的順序。因此,輸出數量是依不重複的值計算,而非原始行數。
- 修剪後完全重複的內容會合併至首次出現的位置,且不會建立額外符號。
- 變更輸入或選項會使先前的批次失效,而作業識別碼可防止較舊的產生結果取代較新的設定。
- 如果某個內容資料超過 QR Code 容量,批次會顯示錯誤,而不會將不完整的結果集呈現為已完成。
產生的檔名以兩位數的批次位置開頭,後接依內容衍生的簡短 ASCII 主幹。例如,https://example.com會變成 01-example-com.png。如果某行不含 ASCII 字母或數字,備援主幹會使用 qr-code。這些檔名僅為便於辨識的標籤,永遠不會改變已編碼的內容資料。
PNG 大小與錯誤更正選項
PNG 大小是指像素畫布,可選擇 128、256 或 512 像素。較大的畫布可改善符號以較大尺寸顯示或印刷時的外觀,但額外像素不會增加 QR Code 符號的資料容量。請預留圖片周圍清晰的靜區,並避免事後拉伸、改變顏色、裁切或遮蓋定位圖案。
DENSO WAVE 的錯誤更正指引列出了 L、M、Q 與 H 各自大致的碼字還原率。較高等級提供更強的還原能力,但會減少可用資料容量,進而可能產生更密集的符號。
| 等級 | 大致的碼字還原率 | 容量取捨 | 可能適用情境 |
|---|---|---|---|
| L | 7% | 四個等級中還原能力最低,但可用資料容量最大 | 在保留內容資料容量最重要時,適合清晰的顯示環境 |
| M | 15% | 還原能力高於 L,但可用資料容量較少 | 一般清晰顯示環境;實務上的預設選項 |
| Q | 25% | 還原能力高於 M,且符號可能更密集 | 要求較高但容量仍充足的擺放情境 |
| H | 30% | 四個等級中還原能力最高,但可用資料容量最少 | 內容資料仍可容納時,以還原能力為優先 |
較高的錯誤更正等級不一定比較好,因為這可能使符號變得更密集。同樣地,選擇較大的 PNG 也無法讓過大的內容資料塞入。對於一般清晰顯示,請將 M 等級作為實務上的預設選項,再依實體擺放情境調整,以獲得更強的還原能力或更多內容資料容量。
產生並驗證最多 20 個代碼
- 準備輸入內容。每行貼上一段文字或 URL。請將清單控制在最多 20 個不重複的值,且每行不得超過 2,000 個 JavaScript 字元。不要依賴重複的行來建立多份副本。
- 選擇輸出設定。選擇 128、256 或 512 像素的 PNG 畫布,以及 L、M、Q 或 H 錯誤更正等級。請考量最終擺放位置的實體尺寸,並以 M 作為一般清晰顯示的起始選項。
- 產生符號。選擇產生 QR codes。如果批次回報容量錯誤,請縮短或替換受影響的內容資料,然後再次產生。不要將部分預覽結果視為完整且成功的批次。
- 檢視並掃描每個預覽。使用目標裝置與應用程式掃描每個預覽。逐字比對解碼後的內容與預定來源,並記下每個結果對應的索引檔名。
- 修正任何不符之處。如果解碼後的值有誤或缺少內容,請更新來源行並重新產生。變更輸入或選項會使先前的批次失效,因此請只使用新近驗證的輸出結果。
- 個別下載每個 PNG。使用每個已驗證預覽下方的個別下載連結。瀏覽器可能會要求每個檔案各點擊一次,或顯示權限提示;工具不會啟動 20 次自動下載。
- 測試交付的檔案。再次使用預定的裝置與應用程式掃描每個下載的 PNG。保留清晰的靜區,且在發布前不得拉伸、改變顏色、裁切、遮蓋或遮蔽定位圖案。
在目標裝置上測試最終檔案
產生圖片並不代表每個掃描器都能讀取預定內容。冗長的 UTF-8 文字、表情符號、印刷尺寸、對比度、相機對焦、螢幕眩光、實體損壞與讀取器行為,都可能影響掃描成功。因此,對於套裝、海報、活動 handout、庫存標籤或替換代碼而言,僅有清晰的預覽不足以作為證據。
某些讀取器可能會以不同方式解讀 URL、聯絡資訊或其他內容資料,而其底層程式庫也註明尚未實作完整的 ECI 支援。請使用你的受眾將採用的確切裝置與應用程式,然後逐字比對解碼後的內容資料。絕不可用產生成功的預覽來取代這項驗證。請勿將未經檢查的代碼用於付款、驗證密碼、安全指示或無法復原的動作。
發布前的安全檢查
- 每個來源行均符合最多 20 個不重複值與每行 2,000 個字元的限制。
- 每個預定的內容資料只出現一次,並與正確的索引檔名保持對應。
- 每個預覽與下載的 PNG 都已使用目標裝置與應用程式掃描。
- 解碼後的值與來源完全相符,包括 URL 拼寫、標點符號與大小寫。
- 靜區保持清晰,且圖片未被拉伸、改變顏色、裁切或遮蓋。
- 目的地符合其使用情境,且任何敏感或無法復原的動作只使用通過驗證的代碼。
請將本機處理與目標裝置驗證視為兩項各自獨立的安全措施。前者控制內容資料的產生位置;後者則確認交付的圖片能在實際情境中運作。
若要深入瞭解,請參閱批次 URL 產生器:比較樣式、範圍與填補。
若要深入瞭解,請參閱在線上使用電子郵件地址混淆器安全嗎?。