php实现往pdf中加数字签名操作示例【附源码下载】
本文实例讲述了php实现往pdf中加数字签名操作。分享给大家供大家参考,具体如下:
//============================================================+
//Filename:example_052.php
//Begin:2009-05-07
//LastUpdate:2013-05-14
//
//Description:Example052forTCPDFclass
//CertificationSignature(experimental)
//
//Author:NicolaAsuni
//
//(c)Copyright:
//NicolaAsuni
//Tecnick.comLTD
//www.tecnick.com
//info@tecnick.com
//============================================================+
/**
*CreatesanexamplePDFTESTdocumentusingTCPDF
*@packagecom.tecnick.tcpdf
*@abstractTCPDF-Example:CertificationSignature(experimental)
*@authorNicolaAsuni
*@since2009-05-07
*/
//IncludethemainTCPDFlibrary(searchforinstallationpath).
require_once('tcpdf_include.php');
//createnewPDFdocument
$pdf=newTCPDF(PDF_PAGE_ORIENTATION,PDF_UNIT,PDF_PAGE_FORMAT,true,'UTF-8',false);
//setdocumentinformation
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('NicolaAsuni');
$pdf->SetTitle('TCPDFExample052');
$pdf->SetSubject('TCPDFTutorial');
$pdf->SetKeywords('TCPDF,PDF,example,test,guide');
//setdefaultheaderdata
$pdf->SetHeaderData(PDF_HEADER_LOGO,PDF_HEADER_LOGO_WIDTH,PDF_HEADER_TITLE.'052',PDF_HEADER_STRING);
//setheaderandfooterfonts
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN,'',PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA,'',PDF_FONT_SIZE_DATA));
//setdefaultmonospacedfont
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
//setmargins
$pdf->SetMargins(PDF_MARGIN_LEFT,PDF_MARGIN_TOP,PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
//setautopagebreaks
$pdf->SetAutoPageBreak(TRUE,PDF_MARGIN_BOTTOM);
//setimagescalefactor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
//setsomelanguage-dependentstrings(optional)
if(@file_exists(dirname(__FILE__).'/lang/eng.php')){
require_once(dirname(__FILE__).'/lang/eng.php');
$pdf->setLanguageArray($l);
}
//---------------------------------------------------------
/*
NOTES:
-Tocreateself-signedsignature:opensslreq-x509-nodes-days365000-newkeyrsa:1024-keyouttcpdf.crt-outtcpdf.crt
-Toexportcrttop12:opensslpkcs12-export-intcpdf.crt-outtcpdf.p12
-Toconvertpfxcertificatetopem:opensslpkcs12-intcpdf.pfx-outtcpdf.crt-nodes
*/
//setcertificatefile
$certificate='file://data/cert/tcpdf.crt';
$certificate='file://'.realpath('./data/cert/tcpdf.crt');
//setadditionalinformation
$info=array(
'Name'=>'TCPDF',
'Location'=>'Office',
'Reason'=>'TestingTCPDF',
'ContactInfo'=>'http://www.tcpdf.org',
);
//setdocumentsignature
$pdf->setSignature($certificate,$certificate,'tcpdfdemo','',2,$info);
//setfont
$pdf->SetFont('helvetica','',12);
//addapage
$pdf->AddPage();
//printalineoftext
$text='Thisisadigitallysigneddocumentusingthedefault(example)tcpdf.crtcertificate.
Tovalidatethissignatureyouhavetoloadthetcpdf.fdfontheArobatReadertoaddthecertificatetoListofTrustedIdentities.
FormoreinformationcheckthesourcecodeofthisexampleandthesourcecodedocumentationforthesetSignature()method.
www.tcpdf.org';
$pdf->writeHTML($text,true,0,true,0);
//---------------------------------------
//***setsignatureappearance***
//createcontentforsignature(imageand/ortext)
$pdf->Image('images/tcpdf_signature.png',180,60,15,15,'PNG');
//defineactiveareaforsignatureappearance
$pdf->setSignatureAppearance(180,60,15,15);
//---------------------------------------
//***setanemptysignatureappearance***
$pdf->addEmptySignatureAppearance(180,80,15,15);
//---------------------------------------------------------
//CloseandoutputPDFdocument
$pdf->Output('example_052.pdf','D');
//============================================================+
//ENDOFFILE
//============================================================+
其中tcpdf_include.php文件(源自tcpdf插件)如下:
eng.php文件如下:
补充:
tcpdf.crt文件点击此处本站下载。
tcpdf插件点击此处本站下载。
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《php加密方法总结》、《PHP编码与转码操作技巧汇总》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》及《php字符串(string)用法总结》
希望本文所述对大家PHP程序设计有所帮助。