PHP如何检查PDF是否经过数字签名

时间:2016-04-13 15:46:43

标签: php pdf pdf-generation tcpdf

我的PHP程序使用TCPDF生成PDF,然后:

  1. 用户下载PDF;
  2. 用户以数字方式签署PDF;
  3. 用户上传签名的PDF;
  4. 对于第3步,我想检查上传的文件是否经过数字签名。

    更好的方法是检查上传的文件是否与程序在步骤1中生成的文件相同。

1 个答案:

答案 0 :(得分:3)

试试这个:

 <?php
    //from: http://stackoverflow.com/a/9059073/284932
        function isStringInFile($file,$string){

        $handle = fopen($file, 'r');
        $valid = false; // init as false
        while (($buffer = fgets($handle)) !== false) {
            if (strpos($buffer, $string) !== false) {
                $valid = TRUE;
                break; // Once you find the string, you should break out the loop.
            }      
        }
        fclose($handle);

        return $valid;

    }

搜索“ adbe.pkcs7.detached ”:

//Signed?
echo isStringInFile('mypdf.pdf', 'adbe.pkcs7.detached');

要检查pdf是否相同,您可以使用TCPDF's setKeyWords()放置一些唯一键并查看Smalot PDF Parser

<?php
    $parser = new \Smalot\PdfParser\Parser();
    $pdf    = $parser->parseFile('signed_pdf.pdf'); //com keywords
    $details = $pdf->getDetails();