• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php实现往pdf中加数字签名操作示例【附源码下载】

    本文实例讲述了php实现往pdf中加数字签名操作。分享给大家供大家参考,具体如下:

    //============================================================+
    // File name  : example_052.php
    // Begin    : 2009-05-07
    // Last Update : 2013-05-14
    //
    // Description : Example 052 for TCPDF class
    //        Certification Signature (experimental)
    //
    // Author: Nicola Asuni
    //
    // (c) Copyright:
    //        Nicola Asuni
    //        Tecnick.com LTD
    //        www.tecnick.com
    //        info@tecnick.com
    //============================================================+
    /**
     * Creates an example PDF TEST document using TCPDF
     * @package com.tecnick.tcpdf
     * @abstract TCPDF - Example: Certification Signature (experimental)
     * @author Nicola Asuni
     * @since 2009-05-07
     */
    // Include the main TCPDF library (search for installation path).
    require_once('tcpdf_include.php');
    // create new PDF document
    $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
    // set document information
    $pdf->SetCreator(PDF_CREATOR);
    $pdf->SetAuthor('Nicola Asuni');
    $pdf->SetTitle('TCPDF Example 052');
    $pdf->SetSubject('TCPDF Tutorial');
    $pdf->SetKeywords('TCPDF, PDF, example, test, guide');
    // set default header data
    $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 052', PDF_HEADER_STRING);
    // set header and footer fonts
    $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
    $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
    // set default monospaced font
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
    // set margins
    $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
    $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
    $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
    // set auto page breaks
    $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
    // set image scale factor
    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
    // set some language-dependent strings (optional)
    if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
     require_once(dirname(__FILE__).'/lang/eng.php');
     $pdf->setLanguageArray($l);
    }
    // ---------------------------------------------------------
    /*
    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
    */
    // set certificate file
    $certificate = 'file://data/cert/tcpdf.crt';
    $certificate = 'file://'.realpath('./data/cert/tcpdf.crt');
    // set additional information
    $info = array(
     'Name' => 'TCPDF',
     'Location' => 'Office',
     'Reason' => 'Testing TCPDF',
     'ContactInfo' => 'http://www.tcpdf.org',
     );
    // set document signature
    $pdf->setSignature($certificate, $certificate, 'tcpdfdemo', '', 2, $info);
    // set font
    $pdf->SetFont('helvetica', '', 12);
    // add a page
    $pdf->AddPage();
    // print a line of text
    $text = 'This is a b color="#FF0000">digitally signed document/b> using the default (example) b>tcpdf.crt/b> certificate.br />To validate this signature you have to load the b color="#006600">tcpdf.fdf/b> on the Arobat Reader to add the certificate to i>List of Trusted Identities/i>.br />br />For more information check the source code of this example and the source code documentation for the i>setSignature()/i> method.br />br />a href="http://www.tcpdf.org" rel="external nofollow" >www.tcpdf.org/a>';
    $pdf->writeHTML($text, true, 0, true, 0);
    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    // *** set signature appearance ***
    // create content for signature (image and/or text)
    $pdf->Image('images/tcpdf_signature.png', 180, 60, 15, 15, 'PNG');
    // define active area for signature appearance
    $pdf->setSignatureAppearance(180, 60, 15, 15);
    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    // *** set an empty signature appearance ***
    $pdf->addEmptySignatureAppearance(180, 80, 15, 15);
    // ---------------------------------------------------------
    //Close and output PDF document
    $pdf->Output('example_052.pdf', 'D');
    //============================================================+
    // END OF FILE
    //============================================================+
    
    

    其中tcpdf_include.php文件(源自tcpdf插件)如下:

    ?php
    //============================================================+
    // File name  : tcpdf_include.php
    // Begin    : 2008-05-14
    // Last Update : 2014-12-10
    //
    // Description : Search and include the TCPDF library.
    //
    // Author: Nicola Asuni
    //
    // (c) Copyright:
    //        Nicola Asuni
    //        Tecnick.com LTD
    //        www.tecnick.com
    //        info@tecnick.com
    //============================================================+
    /**
     * Search and include the TCPDF library.
     * @package com.tecnick.tcpdf
     * @abstract TCPDF - Include the main class.
     * @author Nicola Asuni
     * @since 2013-05-14
     */
    // always load alternative config file for examples
    require_once('config/tcpdf_config_alt.php');
    // Include the main TCPDF library (search the library on the following directories).
    $tcpdf_include_dirs = array(
     realpath('../tcpdf.php'),
     '/usr/share/php/tcpdf/tcpdf.php',
     '/usr/share/tcpdf/tcpdf.php',
     '/usr/share/php-tcpdf/tcpdf.php',
     '/var/www/tcpdf/tcpdf.php',
     '/var/www/html/tcpdf/tcpdf.php',
     '/usr/local/apache2/htdocs/tcpdf/tcpdf.php'
    );
    foreach ($tcpdf_include_dirs as $tcpdf_include_path) {
     if (@file_exists($tcpdf_include_path)) {
     require_once($tcpdf_include_path);
     break;
     }
    }
    //============================================================+
    // END OF FILE
    //============================================================+
    
    

    eng.php文件如下:

    ?php
    //============================================================+
    // File name  : eng.php
    // Begin    : 2004-03-03
    // Last Update : 2010-10-26
    //
    // Description : Language module for TCPDF
    //        (contains translated texts)
    //        English
    //
    // Author: Nicola Asuni
    //
    // (c) Copyright:
    //        Nicola Asuni
    //        Tecnick.com LTD
    //        Manor Coach House, Church Hill
    //        Aldershot, Hants, GU12 4RQ
    //        UK
    //        www.tecnick.com
    //        info@tecnick.com
    //============================================================+
    /**
     * TCPDF language file (contains translated texts).
     * @package com.tecnick.tcpdf
     * @brief TCPDF language file: English
     * @author Nicola Asuni
     * @since 2004-03-03
     */
    // English
    global $l;
    $l = Array();
    // PAGE META DESCRIPTORS --------------------------------------
    $l['a_meta_charset'] = 'UTF-8';
    $l['a_meta_dir'] = 'ltr';
    $l['a_meta_language'] = 'en';
    // TRANSLATIONS --------------------------------------
    $l['w_page'] = 'page';
    //============================================================+
    // END OF FILE
    //============================================================+
    
    

    补充:

    tcpdf.crt文件点击此处本站下载

    tcpdf插件点击此处本站下载

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《php加密方法总结》、《PHP编码与转码操作技巧汇总》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》及《php字符串(string)用法总结》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • PHP开发API接口签名生成及验证操作示例
    • 浅谈PHP SHA1withRSA加密生成签名及验签
    • PHP实现的MD5结合RSA签名算法实例
    • 用PHP去掉文件头的Unicode签名(BOM)方法
    • PHP实现RSA签名生成订单功能【支付宝示例】
    • php rsa 加密,解密,签名,验签详解
    • php 生成签名及验证签名详解
    • php接口数据加密、解密、验证签名
    • 详解PHP接口签名验证
    上一篇:php使用环形链表解决约瑟夫问题完整示例
    下一篇:thinkPHP框架整合tcpdf插件操作示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    php实现往pdf中加数字签名操作示例【附源码下载】 php,实现,往,pdf,中加,数字签名,