PHP、openssl、およびZendフレームワーク(pdf redering/handling用)を使用して簡単なPDF文書署名ルーチンを構築しようとしています。PHP、Zend、およびopensslを使用してデジタル署名する
私はthisを見つけましたが、単に動作しません.Zendはpdfを開くことができません.Zend独自のテストpdfもありません。Zendは理由を報告しません。
鍵/証明書を有効に作成することはできますが、これはよく文書化されていますが、上記のZend拡張機能が示唆しているように、生成された証明書をPDFに添付する方法はありますか?
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);
}
編集、追加コード:私はZend_Pdfはのための入力として「test_pdf2」を使用している場合上記にのみ機能します。それは問題なしでバイナリとして証明書を認識しますが、私はこれまでディスクに書き込まずにPDFを渡すことができる必要があります。
よろしくお願いします。 PHPがスラッシュ、改行、改行文字をファイルに挿入するかどうかは、ファイルをアップロードするかどうかにかかわらず、file_get_contentsを使用してローカルディスクから読み取ることをPHPが主張しています。 Zend_Pdfが直接ファイルを読み込んでいれば、私はそれを動作させることができます。これは私のためには動作しません。なぜなら、私たちはこれらのファイルをディスク、これまで。それは、それが処理するように求められているデータを改ざんすべきではないとPHPに説得するためにとにかくありますか? – jbrain
PDFを処理するために使用しているコードを確認できますか?あなたの質問にそれを編集してください。 – halfer
Zend_Pdfにコンテンツを渡していたので、Zend_Pdf :: parse($ new_pdf);を使っていたはずです。 (oops) – jbrain