[研究]製作可編輯的 .pdf (用 wkhtmltopdf.exe)
2025-08-20
原理
- AcroForm (Adobe Acrobat Form) 是 Adobe 在 PDF 1.2 規格就引入的「互動式表單」功能。
- 它不是把文字打在 PDF 上,而是在 PDF 裡嵌入一種「欄位物件 (field object)」,讀者可在支援的 PDF 閱讀器中輸入/選擇資料。
********************************************************************************
注意中文字亂碼問題,此處是統一用 UTF-8,可能有其他解法。
input.html
<!DOCTYPE html> <html lang="UTF-8">
<head>
<meta charset="UTF-8">
</head>
<body>
<form>
<label>姓名:<input type="text" name="name"></label><br>
<label>Email:<input type="email" name="email"></label><br>
<label>部門:
<select name="dept">
<option>Sales</option><option>IT</option><option>HR</option>
</select>
</label><br>
<label><input type="checkbox" name="agree"> 我同意條款</label>
</form>
</body>
</html> |
「記事本」存檔用 UTF-8
執行
D:\wkhtmltopdf>wkhtmltopdf.exe --enable-forms --encoding utf-8 input.html output.pdf Loading pages (1/6) Counting pages (2/6) Resolving links (4/6) Loading headers and footers (5/6) Printing pages (6/6) Done D:\\wkhtmltopdf> |
下圖,開啟 output.pdf 畫面
ChatGPT 提供的方法,敝人沒有一一去測試
方式一:用桌面軟體建立(最直覺)
- Adobe Acrobat Pro
開啟檔案 →「工具」→「準備表單(Prepare Form)」。
讓它自動偵測欄位,或自己放 文字框、核取方塊、下拉選單、日期、數字 等。
欄位屬性可設:必填、格式(電話、Email、數字)、預設值、計算、唯讀。
需要簽名就放「簽名欄位」;要鎖其他內容:檔案 → 內容 → 安全性 只允許填表/簽名。
免費/替代工具
- LibreOffice Writer:插入→表單控制項(文字框、核取方塊…),完成後「檔案→匯出為 PDF」,勾「建立 PDF 表單」。
- PDF-XChange Editor / Foxit PDF Editor 等也能新增 AcroForm 欄位。
建議選 AcroForm。另一種叫 XFA 的表單相容性差,很多瀏覽器與行動裝置不支援。
方式二:從 HTML 轉成可填寫 PDF
部分轉檔器支援把 HTML 表單轉為 AcroForm 欄位,例如:
- wkhtmltopdf(有參數可啟用表單),語法 wkhtmltopdf --enable-forms input.html output.pdf
- PrinceXML、PDFreactor 等商業排版引擎
方式三:用程式庫
常見庫(都支援 AcroForm):
- Java:iText 7、Apache PDFBox
- .NET:iText 7 for .NET、PdfSharp/MigraDoc(含表單基本控件)
- ********************************************************************************Node/前端:pdf-lib、jsPDF(有 AcroForm 插件)
(完)
相關



沒有留言:
張貼留言