橫向 CSV 轉 PDF 的轉換,會產生一份多頁的 PDF 表格,第一列會在每一頁重複顯示為標頭,文字則來自一份有大小限制的逗號分隔檔案或貼上的文字區塊,整條處理流程都在目前的瀏覽器分頁中執行。輸出結果被限制在固定的美式 Letter 橫向頁面上,最多 100 列、12 欄,帶有灰色標頭條、交錯的列底色、儲存格框線,以及本機可用的系統字型。PDF 本身的組裝方式,是把每一頁渲染出來的 canvas 內嵌成一張 PNG,放進由這個專案的pdf-lib 相依套件所產生的文件中,這樣不需要打包自訂字型,也能維持 Unicode 文字清晰可讀。系統接受最大 200 KB 的檔案,每個儲存格都被當成純文字處理——這個轉換工具不會推測型別、計算公式,或保留試算表格式。因為解析、canvas 渲染、PNG 編碼與 PDF 組裝全都在本機進行,原始的 CSV 文字永遠不會離開使用者的瀏覽器。

csv to pdf
csv 轉 pdf

CSV 轉 PDF 轉換實際上會產生什麼

CSV to PDF 工具會把一張小型的逗號分隔表格,印製到美式 Letter 橫向頁面上,每頁一份表格,原始的第一列會以帶灰底的標頭形式,蓋印在每一頁的最上方。交錯的列底色與細緻的儲存格框線,讓這份表格看起來乾淨、適合列印。每一頁渲染出來的畫面,都會從一個高密度的瀏覽器 canvas 擷取成一張 PNG,再內嵌進一份於本機組裝完成的 PDF——這份文件並非衍生自伺服器端的範本,機器上也不會被送入任何字型套件。因為 PDF 中的每一頁都是一張點陣化的圖片,儲存格內的文字並不是可選取的活字元;讀者看到的是 canvas 畫出來的內容,而任何瀏覽器能繪製的 Unicode 字符,在輸出結果中都能正確顯示。

設計上鎖定的使用情境,是一份精簡的參考表格:會議手冊、一份列印用的聯絡人清單、一小份資料集的快速可列印快照,或是一份需要固定頁面格式的簡單匯出結果。如果真正的需求是幾百列的資料、PDF 內可選取的文字、可存取的標籤化結構、精確的字體排印控制,或任何形式的圖表,這個小型表格轉換工具就不是合適的選擇,改用具備正規 PDF 匯出功能的試算表,效果會更好。

解析器如何處理帶引號的欄位與內嵌換行

CSV 看似是一種簡單的格式,其實不然。像 a,b,c 這樣的一列很直觀,但真實世界的匯出檔,常常在值裡面藏著逗號、用重複的雙引號來跳脫引號本身,以及在帶引號的欄位內含有換行符號。這個轉換工具遵循IETF RFC 4180 所描述的規則,因此它接受 CRLF 與 LF 兩種記錄分隔符號、把第一列當成標頭,並能辨識三種經常讓陽春解析器出錯的邊緣情況:

  • 帶引號的逗號 ——用雙引號包起來的欄位可以包含逗號,因此 "Smith, John",42,NY 會被解析成三個儲存格,而不是四個。
  • 重複的引號 ——在一個帶引號的欄位內,兩個相鄰的雙引號會被解讀成一個字面上的雙引號,與試算表使用的慣例一致。
  • 內嵌的換行符號 ——帶引號欄位內的換行符號,會被視為儲存格值的一部分,而不是記錄的結束符號。

參差不齊的列,會透過在資料集中最寬那一列的長度之內,為較短的記錄補上空白儲存格,正規化成一張矩形表格。這個轉換工具會對一小部分格式錯誤的輸入明確回報失敗:未封閉的引號、在同一個欄位中某些未加引號的內容之後才開始出現的引號,或是空的資料集。這些失敗會以明確錯誤的形式呈現,而不是變成一份靜默、誤導人的表格,這一點很重要,因為靜默的解析錯誤,是造成 PDF 看起來不對勁最常見的原因。

100 列、12 欄的橫向格線

輸出結果的大小是刻意受到限制的。這個轉換工具接受最大 200 KB 的檔案或貼上的文字,渲染出來的表格不能超過 100 列與 12 欄。這個格線固定為美式 Letter 橫向尺寸,因此增加更多欄位或更長的儲存格,並不會加寬頁面——而是會強制讓超出範圍的儲存格被截斷。渲染出來的儲存格會做空白字元正規化,但編輯器中的來源 CSV 文字會完全維持載入時的原樣。一旦某個儲存格的文字超出欄寬,就會被明顯地以刪節號縮短顯示,而完整的字串仍會保留在原始資料中。

元素行為
檔案大小上限上傳最大 200 KB,或在編輯器中貼上文字
列數上限100 列
欄數上限12 欄
頁面大小美式 Letter,橫向,固定
標頭第一列,在每一頁重複顯示,灰色背景
列底色交錯填色,提升可讀性
儲存格溢位以明顯的刪節號截斷
來源資料渲染後在編輯器中保持不變
處理位置目前的瀏覽器分頁,不上傳

固定的格線讓可列印的輸出結果保持可預期。無論檔案是由哪一台裝置產生的,任何人用一般辦公室印表機列印這份 PDF,得到的紙張大小、邊距與列密度都會相同。代價是非常長的敘述性文字,或多行的內容,將無法完整容納,會被裁切——這個轉換工具並不是為敘述性儲存格設計的。

把 CSV 轉換成橫向 PDF

  1. 在瀏覽器中開啟 CSV to PDF 工具。你可以點擊上傳一個小型 CSV 檔案(200 KB 以內),或直接把逗號分隔的文字貼進編輯器中。第一列應該包含欄位標頭。
  2. 確認這份表格落在 100 列、12 欄的範圍之內。如果資料集比較大,請先在試算表中修剪——這個轉換工具會拒絕渲染過大的輸入。
  3. 選擇Create PDF。解析、canvas 渲染、PNG 編碼與 PDF 組裝,都會在目前的分頁中使用這個專案的 pdf-lib 相依套件完成;不會有任何內容被送到遠端伺服器。
  4. 當這份橫向 PDF 準備好之後,下載並用任何 PDF 閱讀器開啟它。逐頁檢查是否有被刪節的儲存格、系統字型中可能缺少的 Unicode 字元、由右至左文字的渲染結果,以及分頁點落在哪裡。
  5. 如果某個儲存格被截斷,而這個截斷會造成問題,請回到編輯器中,縮短來源文字、把內容拆進更多儲存格,或減少欄數,讓每一欄有更多水平空間。原始的 CSV 文字會保留在編輯器中,因此反覆調整不需要重新上傳。

因為這個流程使用的是一個可撤銷的本機 PDF 網址,下載連結是即時產生的,不會儲存在伺服器上。關閉分頁會釋放這個網址,這與其他純本機瀏覽器 PDF 工具所使用的模式相同。

這個轉換工具不會做的事(需要知道的限制)

這個工具刻意保持狹窄的功能範圍。它把每個儲存格都當成純文字處理,因此不會推測數值型別、計算公式、排序列資料、計算總計、保留試算表格式,或連接遠端資料。它不支援合併儲存格、條件式格式設定、圖表、超連結或內嵌圖片。

一般辦公 PDF 常見的無障礙功能——標籤化結構、儲存格內可選取的文字、供螢幕閱讀器重排的內容——同樣不在這個工具的範圍內,因為 PDF 中的每一頁都是一張點陣化的 PNG。如果使用者需要上述任何一項功能,應該從支援無障礙匯出的試算表或報表工具產生這份 PDF。這個轉換工具鎖定的是簡短的參考表格,而不是正式的生產報表。

什麼時候試算表才是更好的工具

100 列、12 欄的上限之所以存在是有原因的。比這更大的表格、包含公式或樞紐分析結果的表格、需要圖表的表格,或必須支援輔助科技存取的表格,都不適合這種固定的點陣格線。同樣地,需要精確字體排印、密碼保護,或編修處理的機密正式報表,應該交給具備明確 PDF 控制功能的報表工作流程,而不是一個快速的瀏覽器小工具。對這些情況來說,從來源系統匯出 CSV、在試算表中開啟,再使用該應用程式內建的 PDF 匯出功能,會得到更忠實的結果。

對於這個轉換工具本來就是為之而生的所有情境——一份簡短的與會者名單、一張價格表、一份聯絡人名冊、一份查詢結果的列印快照——這條本機流程能把資料留在使用者的裝置上,並在幾次點擊之內產生一份整潔、可列印的 PDF。正是這種「輸入有限制、標頭重複顯示、橫向格線,以及純本機處理」的組合,讓 CSV to PDF 工具對它原本設計要服務的那些小型參考表格特別有用。

想更深入了解,請參閱Header and Footer PDF Editor: Stamp Every Page Locally

想更深入了解,請參閱CSV to PDF Adobe: A Browser Method That Skips Acrobat