Ich versuche, eine einfache PDF-Dokument-Signatur-Routine zu erstellen, mit PHP, Openssl und das Zend-Framework (für pdf redering/handling).
Ich habe gefunden diese aber es funktioniert einfach nicht, Zend ist nicht in der Lage, pdf-Dateien zu öffnen, nicht einmal Zends eigene Test-PDF-Datei, und Zend meldet nicht, warum, sondern nur, dass es "nicht kann".
Ich bin mir ziemlich sicher, dass ich in der Lage wäre, die Schlüssel/Zertifikate effektiv zu erstellen, da dies gut dokumentiert ist, aber gibt es einen soliden Ansatz, um das generierte Zertifikat an die PDF-Datei anzuhängen, wie es die obige Zend-Erweiterung vorschlägt, die es einmal tat?
function DigiSignPDF ($pdf_sign_request) {
if (get_magic_quotes_gpc()) {
$new_pdf = stripslashes($pdf_sign_request['raw_pdf']);
} else {
$new_pdf = $pdf_sign_request['raw_pdf'];
}
$test_pdf = stripslashes(file_get_contents('path/Some.pdf'));
$test_pdf2 = ('path/Some.pdf');
$pdf = Zend_Pdf::load($new_pdf2);
//below is the signing code, from another library, it works as long as Zend_Pdf works
$certificate = file_get_contents('path/certificate.p12');
$certificatePassword = 'test123';
if (empty($certificate)) {
throw new Zend_Pdf_Exception('Cannot retrieve/generate the certificate.');
}
$pdf->attachDigitalCertificate($certificate,$certificatePassword);
$eSig_pdf = $pdf->render();
file_put_contents('path/signed_pdf.pdf', $eSig_pdf);
}
Bearbeiten, Code hinzufügen: Das obige funktioniert nur, wenn ich 'test_pdf2' als Eingabe für Zend_Pdf verwende. Es erkennt das Zertifikat als Binärdatei ohne Probleme, aber ich muss in der Lage sein, das PDF zu übergeben, ohne es jemals auf die Festplatte zu schreiben.