2012-07-25 205 views
4

假設我有一個數字簽名的PDF文檔(填寫表格)。我需要找到一種方法來驗證使用PHP的PDF文件。使用PHP從PDF中籤名提取

我知道我必須使用函數openssl_verify($data, $signature, $pub_key_id)。 我需要3個參數(我有公共證書)。

如何從PDF文件中提取簽名數據和簽名本身?

回答

0

您需要解析PDF - 理論上,您可以編寫自己的解析函數。但是,您可以使用現成的東西節省大量時間。

Apache's PDFBox怎麼樣?你可以像其他shell腳本一樣執行它,或者使用一些PHP/Java bridge

如果您決定採取手動方式,請參閱PDF specification以獲得解析器的實現方式 - 您應該能夠忽略任何複雜的部分,並通過查找startxref消除簽名。

也有專有的解決方案,如VersyPDF.PHP,但這些可能會對您的工作有點矯枉過正(但您可能會因爲使用評估版本而不關心水印輸出而偏離正面)。

0

要提取數據和簽名,可以使用PDF中的/ ByteRange字段中的數字。它有4個數字/ ByteRange [a b c d]。簽名是從第b個字節到第(個)字節,其餘是數據。 在PHP中,您可以使用stream_get_contents()函數通過流獲取內容。