TCPDF agrega firma digital al pdf creado

Tengo un problema extraño.
Estoy luchando con un problema de firma digital en pdf desde hace un tiempo y no funcionó como esperaba. En realidad, no funciona en absoluto.

Usé exactamente el mismo código que está publicado en la página de Examples 52 :

 // set certificate file $certificate = 'file://var/www/app/tcpdf/config/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); 

El primer problema fue sobre

 Warning: openssl_pkcs7_sign() [function.openssl-pkcs7-sign]: error getting private key in /var/www/app/tcpdf/tcpdf.php on line 7566 

Fue causado porque no establecí privilegios para ejecutar el directorio cert . Pero después de que configuré 777 magia sucedió.
A partir de ahora no veo cuál es el error, y no veo la pista de error sino:

 HTTP ERROR 324 (net::ERR_EMPTY_RESPONSE) 

alguien me puede sugerir algo?

Por lo que veo, el error que está recibiendo no es causado por el código que ha publicado en su pregunta, ya que ese código es directo y exactamente como el que se encuentra en la documentación de TCPDF. Puede encontrar un ejemplo de cómo enviar un pdf firmado a la Documentación TCPDF

El código allí es el siguiente:

 require_once('../config/lang/eng.php'); require_once('../tcpdf.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 $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://../config/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 digitally signed document using the default (example) tcpdf.crt certificate.
To validate this signature you have to load the tcpdf.fdf on the Arobat Reader to add the certificate to List of Trusted Identities.

For more information check the source code of this example and the source code documentation for the setSignature() method.

www.tcpdf.org'; $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', 'I');

Tenga en cuenta que, necesita agregar páginas a su documento y luego llamar a la función Output () para obtener realmente cualquier salida enviada al navegador. De lo contrario, el servidor no tendrá datos para enviar y, por lo tanto, le dará una respuesta vacía que causa este error.

Este error también puede deberse a que está creando el archivo en el servidor y guardándolo en una carpeta que su secuencia de comandos no tiene los permisos de acceso y salida para el navegador.

Si está utilizando Google Chrome para ver su pdf, le recomendamos que consulte la información aquí en este error. Grupo de errores de respuesta vacía de Chrome

Además, hay informes de que este error ha sido causado por configuraciones Zend Optimizer / Zend Guardian configuradas incorrectamente. Si ninguno de los anteriores es el caso, me aseguraré de que estén desactivados para continuar con la solución de problemas.

Como puede ver, este error es un poco inespecífico, por lo que puede ser difícil solucionarlo.