当前位置: 首页 > 知识库问答 >
问题:

用PHP和laravel实现PDF文件的数字签名

周滨海
2023-03-14

你好,我搜索了很多之前提出这个问题。我知道有一个paied选项来签署pdf setasign.com

我尝试使用php函数:

openssl_pkcs7_sign( FULL_PATH . "/pdforiginal.pdf", //ORIGIANL PDF
                    FULL_PATH ."signedPDF.pdf", // SIGNED PDF
                    "file://" . FULL_PATH . "signing_cert.pem", 
                     array(  "file://" . FULL_PATH. "private_key.pem",""),array()); 

共有1个答案

阎星河
2023-03-14

我找到了解决办法。我使用FPDI库打开pdf,并使用tcpdf库对其进行签名。这使得过程变得非常简单。

require_once('tcpdf_include.php');

require_once "fpdi.php";

$pdf = new FPDI('P', 'mm', 'A4'); //FPDI extends TCPDF

$pages = $pdf->setSourceFile('document.pdf');



/*
NOTES:
 - To create self-signed signature: openssl req -x509 -nodes -days 365000 -newkey rsa:1024 -keyout tcpdf.crt -out tcpdf.crt
 - To export crt to p12: openssl pkcs12 -export -in tcpdf.crt -out tcpdf.p12
 - To convert pfx certificate to pem: openssl pkcs12 -in tcpdf.pfx -out tcpdf.crt -nodes
*/

$certificate = 'file://data/cert/tcpdf.crt';

// set additional information
$info = array(
    'Name' => 'TCPDF',
    'Location' => 'Office',
    'Reason' => 'Testing TCPDF',
    'ContactInfo' => 'http://www.tcpdf.org',
    );

for ($i = 1; $i <= $pages; $i++)
    {
        $pdf->AddPage();
        $page = $pdf->importPage($i);
        $pdf->useTemplate($page, 0, 0);


        // set document signature
        $pdf->setSignature($certificate, $certificate, 'tcpdfdemo', '', 2, $info);      

}
 类似资料:
  • 这项规定就好像注册官或副注册官等获授权人士须以数码方式签署一份证明书。实现数字签名背后的基本思想是要知道: 1)证书是否由授权人数字签名,以及该授权人是谁,或者是谁创建了该证书,而该证书是由其他没有该授权的人创建的。 2)注册官/分注册官在证书上作数码签署(以停止伪造)后,证书是否有任何更改。 我已经搜索了很多关于这个话题,没有得到任何东西,甚至没有任何教程,可以指导我如何做到这一点。我从来没有听

  • 本文向大家介绍PHP实现在线阅读PDF文件的方法,包括了PHP实现在线阅读PDF文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP实现在线阅读PDF文件的方法。分享给大家供大家参考。具体实现方法如下: 为了更好地用户体验,建议你前端采用 FlexPaper在线显示文档组件来显示你的文档,先用PDF2SWF工具将你的pdf转成flash文件,然后用 FlexPaper来显示转换

  • 问题内容: 我有一个很大的PDF文件,它是建筑物的平面图。它具有用于所有办公家具的图层,包括座位位置的文本框。 我的目标是使用PHP读取此文件,在文档中搜索文本层,获取其内容和文件中的坐标。这样,我可以绘制出座位位置-> x / y坐标。 有没有办法通过PHP做到这一点?(如果需要的话,甚至可以是Ruby或Python) 问题答案: 签出FPDF(使用FPDI): http://www.fpdf.

  • 问题内容: 我的概念是-网站中有10个pdf文件。用户可以选择一些pdf文件,然后选择合并以创建一个包含所选页面的pdf文件。我该如何用PHP做到这一点? 问题答案: 我以前做过 我有一个用fpdf生成的pdf,我需要在其中添加可变数量的PDF。 因此,我已经设置了fpdf对象和页面),并使用fpdi导入了文件通过扩展PDF类来添加FDPI: 基本上,这会将每个pdf转换为图像以放入您的其他pdf

  • 然而,我想使用相同的文件,这意味着我不再假装复制PDF了。我要抓取文档,签名,并覆盖原来的。 由于我了解到让FileInputStream和FileOutputStream指向同一个文件不是一个好主意,所以我只是尝试使用file类。 我尝试了以下操作:

  • 我想实现PDF的“并行”签名过程,这样用户就可以不是“一个接一个”地进行数字签名,而是同时进行数字签名。为了实现这一点,我决定为所有用户创建初始文档的单独副本,并在它们上获得签名。最终,所有签名都应该连接到单个PDF中。 让我们假设,PDF在签名过程中没有变化,除了签名字段创建(所有acroForms、signaturecontainer、可视签名等都是在之前创建的,并且对所有这些都是相似的)。