Check bellow the solution I found for on the fly protecting a PDF file in PHP. For resolving this problem I wanted a FREE library. Download the library used: Protect PDF in PHP from and use the code bellow for password protect a PDF file using PHP.
<?php
function pdfEncrypt ($origFile, $password, $destFile){
//include the FPDI protection http://www.setasign.de/products/pdf-php-solutions/fpdi-protection-128/
require_once(’fpdi/FPDI_Protection.php’);
$pdf =& new FPDI_Protection();
// set the format of the destinaton file, in our case 6×9 inch
$pdf->FPDF(’P', ‘in’, array(’6′,’9′));
//calculate the number of pages from the original document
$pagecount = $pdf->setSourceFile($origFile);
// copy all pages from the old unprotected pdf in the new one
for ($loop = 1; $loop <= $pagecount; $loop++) {
$tplidx = $pdf->importPage($loop);
$pdf->addPage();
$pdf->useTemplate($tplidx);
}
// protect the new pdf file, and allow no printing, copy etc and leave only reading allowed
$pdf->SetProtection(array(), $password, ”;
$pdf->Output($destFile, ‘F’);
return $destFile;
}
//password for the pdf file (I suggest using the email adress of the purchaser)
$password = “info@domain.com”;
//name of the original file (unprotected)
$origFile = “book.pdf”;
//name of the destination file (password protected and printing rights removed)
$destFile =“book_protected.pdf”;
//encrypt the book and create the protected file
pdfEncrypt($origFile, $password, $destFile );
?>
The
I found the original script (found at http://www.fpdf.org/en/script/script37.php) a lot easier to handle. It only required minor changes to my code. No hassling with multiple files required!
The only changes in my code were:
require(”../fpdf/fpdf_protect.php”); // instead of fpdf.php
class mijnPDF extends FPDF_Protection // instead of … extends FPDF
$pdf = new mijnPDF();
$pdf->SetProtection(array(’print’)); // line added after the creation of my proper PDF class based on FPDF
Hello, I corrected the code, now you is just copy paste:
FPDF(’P', ‘in’, array(’6′,’9′));
//calculate the number of pages from the original document
$pagecount = $pdf->setSourceFile($origFile);
// copy all pages from the old unprotected pdf in the new one
for ($loop = 1; $loop importPage($loop);
$pdf->addPage();
$pdf->useTemplate($tplidx);
}
// protect the new pdf file, and allow no printing, copy etc and leave only reading allowed
$pdf->SetProtection(array(),$password);
$pdf->Output($destFile,’F');
return $destFile;
}
//password for the pdf file (I suggest using the email adress of the purchaser)
$password = ‘info@domain.com’;
//name of the original file (unprotected)
$origFile = ‘book.pdf’;
//name of the destination file (password protected and printing rights removed)
$destFile =’book_protected.pdf’;
//encrypt the book and create the protected file
pdfEncrypt($origFile, $password, $destFile );
?>