【问题标题】:PHP How to check if PDF is digitally signedPHP如何检查PDF是否经过数字签名
【发布时间】:2016-08-04 20:24:03
【问题描述】:

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

  1. 用户下载 PDF;
  2. 用户对 PDF 进行数字签名;
  3. 用户上传签名的 PDF;

对于第 3 步,我想检查上传的文件是否经过数字签名。

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

【问题讨论】:

    标签: php pdf pdf-generation tcpdf


    【解决方案1】:

    试试这个:

     <?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();
    

    【讨论】:

    • 非常感谢您的回答。我会尽快尝试,如果一切正常,我会通知您。 :)
    猜你喜欢
    • 1970-01-01
    • 2018-01-05
    • 2010-10-14
    • 1970-01-01
    • 2018-12-14
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多