如何使用 TCPPDF 和 PHP 在 pdf 中显示数字签名?

问题描述

我正在尝试使用 PHP 和 TCPDF 库对 PDF 文件进行数字签名。当我生成 PDF 时,问题就出现了,因为它不会让我看到签名。我设法做的就是创建一个框来使用 Adob​​e Reader 签名。但我的想法不是这样,而是生成PDF文件,直接嵌入签名,不需要任何其他程序。

我使用的代码如下:

<?PHP
//Incluimos los archivos de la libreria tcpdf
require_once('tcpdf/TCPDF-main/examples/tcpdf_include.PHP');
require_once ('tcpdf/TCPDF-main/tcpdf.PHP');


// creamos el documento PDF
$pdf = new TCPDF(PDF_PAGE_ORIENTATION,PDF_UNIT,PDF_PAGE_FORMAT,true,'UTF-8',false);



// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Ivan Martinez');
$pdf->SetTitle('Prueba HolaMundo');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF,PDF,example,test,guide');

// Encabezado de serie
//$pdf->SetHeaderData(PDF_HEADER_logo,PDF_HEADER_logo_WIDTH,PDF_HEADER_TITLE.' 001',PDF_HEADER_STRING,array(0,64,255),128));
//$pdf->setFooterData(array(0,0),128));

// 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);
}

// ---------------------------------------------------------

//set certificated file
$certificate = 'file://'.realpath('tcpdf.crt');

// set additional information
$info = array(
    'Name' => 'PruebaIvan','Location' => 'Ayuntamiento','Reason' => 'Testeando firma',);


$pdf->setSignature($certificate,$certificate,'tcpdfdemo',2,$info);

// set default font subsetting mode
$pdf->setFontSubsetting(true);

// Set font
// dejavusans is a UTF-8 Unicode font,if you only need to
// print standard ASCII chars,you can use core fonts like
// helvetica or times to reduce file size.
$pdf->SetFont('dejavusans',14,true);


// Add a page
// This method has several options,check the source code documentation for more information.
$pdf->AddPage();

// set text shadow effect
$pdf->setTextShadow(array('enabled'=>true,'depth_w'=>0.2,'depth_h'=>0.2,'color'=>array(196,196,196),'opacity'=>1,'blend_mode'=>'normal'));

// Set some content to print
$html = <<<EOD
Documento creado por Ivan Martinez;
EOD;

// Print text using writeHTMLCell()
$pdf->writeHTMLCell(0,$html,1,true);


$pdf->setSignatureAppearance(200,170,40,20);

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

// *** set an empty signature appearance ***
$pdf->addEmptySignatureAppearance(180,80,15,15);


// ---------------------------------------------------------

// Close and output PDF document
// This method has several options,check the source code documentation for more information.
$pdf->Output('pruebaFirma.pdf','D');

?>

我曾尝试删除句子 $pdf->addEmptySignatureAppearance(180,15);,但没有用。

提前致谢,问候。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)