如何用 Java 對 PDF 檔案進行電子簽章(一)概述及技術選型
參考:
一、 概述
印章是我國特有的歷史文化產物,古代主要用作身份憑證和行駛職權的工具。它的起源是由於社會生活的實際需要。早在商周時代,印章就已經產生。如今的印章已成為一種獨特的,融實用性和藝術性為一體的藝術瑰寶。傳統的印章容易被壞人、小人私刻;從而新聞鮮有報道某某私刻公章,侵吞國家財產。隨著計算機技術、加密技術及影象處理技術的發展,出現了電子簽章。電子簽章是電子簽名的一種表現形式,利用影象處理技術、數字加密技術將電子簽名操作轉化為與紙質檔案蓋章操作相同的可視效果,同時利用電子簽名技術保障電子資訊的真實性和完整性以及簽名人的不可否認性
。
電子簽章與數字證書一樣是身份驗證的一種手段,泛指所有以電子形式存在,依附在電子檔案並與其邏輯關聯,可用以辨識電子檔案簽署者身份,保證檔案的完整性,並表示簽署者同意電子檔案所陳述事實的內容。一般來說對電子簽章的認定都是從技術角度而言的
電子簽章是一個很複雜的問題,大到有相關的電子簽章系統;今天分享一下如何把電子簽章應用到電子處方箋的PDF檔案裡。
二、 技術選型
目前主流處理PDF檔案兩個jar包分別是: 開源組織Apache的PDFBox,官網https://pdfbox.apache.org/ 大名鼎鼎adobe公司的iText,官網https://itextpdf.com/tags/adobe,其中iText又分為iText5和iText7
如何在PDFBox、iText5和iText7選出合適自己專案的技術呢
?
對比PDFBox、iText5和iText7這三者:
- PDFBox的功能相對較弱,iText5和iText7的功能非常強悍;
- iText5的資料網上相對較多,如果出現問題容易找到解決方案;PDFBox和iText7的網上資料相對較少,如果出現問題不易找到相關解決方案;
- 通過閱讀PDFBox程式碼目前PDFBox還沒提供自定義簽章的相關介面;iText5和iText7提供了處理自定義簽章的相關實現;
- PDFBox只能實現把簽章圖片加簽到PDF檔案;iText5和iText7除了可以把簽章圖片加簽到PDF檔案,還可以實現直接對簽章進行繪製,把檔案繪製到簽章上。
本分享JAVA對PDF檔案進行電子簽章需要實現的功能:
- 生成證書。與PDFBox、iText5和iText7技術無關
- 按模板輸出PDF檔案:PDFBox、iText5和iText7都可以完成,但是PDFBox會遇到中文亂碼比較棘手的問題
- 在PDF檔案中實現把簽章圖片加簽到PDF檔案:PDFBox、iText5和iText7都可以實現,沒有很多的區別
- 在PDF檔案中繪製簽章:iText5和iText7都可以實現,PDFBox目前不支援
- 在PDF檔案中生成高清簽章:iText5和iText7都可以實現,PDFBox目前不支援
- 在PDF檔案中進行多次簽名:PDFBox、iText5和iText7都可以完成,沒有區別
通過相關技術分析和要實現的功能分析,採用iText5進行開發,唯一遺憾的是iText商用收費;但是這不是做技術需要關心的!!選用iText5的理由:
- 使用iText5能實現全部的功能.
- 如何在開發中遇到相關問題,容易找到相應解決方案.
三.Java 對 PDF 檔案進行電子簽章 程式碼的邏輯
**流程**
:
- 生成一個圖片簽章
- 如何按模板生成PDF檔案
- 如何生成PKCS12證書
- 如何生成一個高清晰的簽章
- 如何進行多次PDF簽名
綜上所述:需要一個 簽章圖片,一個pdf模板,一個 證書。