Цифровая подпись PDF-файла с использованием PHP, Zend и openssl

Я пытаюсь создать простую процедуру подписания PDF-документа, используя PHP, openssl и среду Zend (для pdf редакция/обработка).

Я нашел это, но это просто не сработает, Zend не может открыть ни один pdf-файл, даже собственный тестовый pdf-файл Zend, и Zend не сообщает почему, только что он «не может '.

Я почти уверен, что смогу эффективно создавать ключи/сертификаты, поскольку это хорошо задокументировано, но существует ли надежный подход к прикреплению сгенерированного сертификата к PDF-файлу, как когда-то предлагалось вышеприведенным расширением Zend?

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

Редактировать, добавляя код: вышеизложенное работает, только если я использую 'test_pdf2' в качестве входных данных для Zend_Pdf. Он без проблем распознает сертификат как двоичный, но мне нужно иметь возможность передать PDF-файл, даже не записывая его на диск.

10
задан rekire 10 June 2012 в 13:55
поделиться