A FPDI compatible version of the FPDF_Protection script.

v2.0.0 2017-10-17 13:54 UTC


Latest Stable Version Total Downloads Latest Unstable Version License

A FPDI 2 compatible and enhanced version of the FPDF_Protection script.

This version requires and uses OpenSSL functions instead of Mcrypt or a user land implementation of RC4.

RC4-40bits and RC4-128bits encryption are supported.

Installation with Composer

    "require": {
        "setasign/fpdi-protection": "^2.0"

Manual Installation

If you do not use composer, just require the autoload.php in the /src folder:


If you have a PSR-4 autoloader implemented, just register the src path as follows:

$loader = new \Example\Psr4AutoloaderClass;
$loader->addNamespace('setasign\FpdiProtection', 'path/to/src/');

Don't forget to install FPDI and FPDF, too!


This class offers one public method, which allows you to set the protection of the resulting PDF document. All other code is identically to FPDI or FPDF.

If you pass null or an empty string as the owner password the method will create a random owner password. The return value of this method is the owner password.

use setasign\FpdiProtection\FpdiProtection;

// setup the autoload function

$pdf = new FpdiProtection();
$ownerPassword = $pdf->setProtection(
    FpdiProtection::PERM_PRINT | FpdiProtection::PERM_COPY,
    'the user password',
    'the owner password'

// ...