2012-07-25 206 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()函数通过流获取内容。