0

PDFLib を介して作成した PDF をパスワードで保護するオプションをユーザーに提供しようとしています。PLOP に関するドキュメントを読み、マニュアルの付録Aで次の段落に出くわしました(ここにあります):

メモリ ベースの組み合わせメモリ ベースの方法は高速ですが、より多くのメモリが必要です。非常に大きなドキュメントを扱う場合を除き、Web アプリケーションでの動的な PDF 生成と署名に推奨されます。PDFlib を使用してディスク上に PDF ファイルを生成する代わりに、 に空のファイル名を指定してコア内 PDF 生成を使用し、 を使用し PDF_begin_document( )て生成された PDF データを含むバッファーの内容を取得しPDF_get_buffer( )、 を使用して仮想ファイルを作成しますPLOP_create_pvf( )。仮想ファイルに使用されるファイル名は、 PLOP_open_document( )ディスク上に物理ファイルを作成することなく PLOP/PLOP DS を使用して渡すことができます。PDFlib バッファの内容を複数の部分に分けてフェッチすることはできないことに注意してください。これは、文書全体が単一のバッファで PLOP/PLOP DS に供給されなければならないためです。したがって、電話する必要があります PDF_get_buffer( )PDF_end_document( )との間PDF_delete( )。すべての PLOP パッケージに含まれている hellosign プログラミング サンプルは、PDFlib を使用して PDF 文書を動的に作成し、それをメモリ内の PLOP に渡してデジタル署名を適用する方法を示しています。

PDF_end_document()これまでのところ、マニュアルの指示に従って、 の前に呼び出される次のメソッドを記述しました。

function encrypt_pdf($pdf_buffer, $password) {
    $optlist = '';
    $filename = "temp";
    create_pvf($filename, $pdf_buffer, $optlist);   

    $optlist = "masterpassword=$password";

    open_document($filename, $optlist);
    $doc = create_file($filename, $optlist);

}

ここから先に進む方法がわかりません。私がやろうとしていることをリモートでさえカバーしていることがわかったドキュメントはありません (これは PLOP API の一般的な使用法だと思いますが)。

この方法を完了し、パスワードで出力 PDF を保護するにはどうすればよいですか?

4

2 に答える 2

2

マット、

PDFlibを使用してPDFドキュメントを作成する場合(すでにこれを行っているようです)、ファイルを保護するために追加のライブラリを使用する必要はありません。begin_document()オプションリスト内のpermissions-optionsを使用するだけです。

サンプルはPDFlibクックブック http://www.pdflib.com/en/pdflib-cookbook/general-programming/permission-settings/php-permission-settings/ にあり、これを行う方法を確認できます。

このトピックの詳細な紹介は、PDFlib 8チュートリアル、第3.3章およびPDFlib 8 APIリファレンス、第3.1章、表3.1にあります。これらは、すべてのPDFlib 8パッケージに含まれており、http://www.pdflibから無料でダウンロードすることもできます。 .com /developer /technical-documentation / manuals /(PDFlib APIのphp.netドキュメントページは使用しないでください)

PDFデータを作成するためにPDFlibを使用しない場合は、提供されているPLOP noprint.phpサンプル(PLOPパッケージに含まれています)と同様にこれを実装する必要があります。

于 2012-10-04T08:09:57.213 に答える
1

すべての PHP およびその他の言語のドキュメントは、ここにあります。

それらのページの1つから直接取得...

<?php
/* $Id: decrypt.php,v 1.10 2011/02/23 18:51:35 rjs Exp $
 * PDFlib PLOP: PDF Linearization, Optimization, Protection
 * decryption sample in PHP
 */
/* parameters for the input document */
$in_filename = "PLOP-datasheet-encrypted.pdf";
$in_password = "DEMO";

/* parameters for the output document */
$out_filename = "";
$out_master = "";
$out_user = "";
$permissions = "";

/* This is where input files live. Adjust as necessary. */
$searchpath = "../data ../../data";

try{
    $optlist = "";

    /* create a new PLOP object */
    $plop = new PLOP();

    $optlist = sprintf("searchpath={%s}", $searchpath);
    $plop->set_option($optlist);

    /* open protected input file with the password */
    $optlist = sprintf("password {%s} ", $in_password);
    if (!($doc = $plop->open_document($in_filename, $optlist))) {
    die("Error: " . $plop->get_errmsg());
    }

    /* create the output file */
    $optlist = sprintf("masterpassword {%s} userpassword {%s} permissions {%s}", $out_master, $out_user, $permissions);
    if (!$plop->create_file($out_filename, $optlist)) {
        die("Error: " . $plop->get_errmsg());
    }

    $buf = $plop->get_buffer();
    $len = strlen($buf);

    header("Content-type: application/pdf");
    header("Content-Length: $len");
    header("Content-Disposition: inline; filename=decrypt.pdf");
    print $buf;

    /* close input and output files */
    $plop->close_document($doc);
}
catch (PLOPException $e) {
    die("PLOP exception occurred in decrypt sample:\n" .
    "[" . $e->get_errnum() . "] " . $e->get_apiname() . ": " .
    $e->get_errmsg() . "\n");
}
catch (Exception $e) {
    die($e);
}

$plop = 0;

?>
于 2012-10-03T21:00:31.153 に答える