FIX better method to check if pdf is protected/encrypted

This commit is contained in:
Regis Houssin 2019-06-03 09:36:00 +02:00
parent 5530e003ba
commit 43ada3fcd4

View File

@ -175,18 +175,29 @@ function pdf_getInstance($format = '', $metric = 'mm', $pagetype = 'P')
/** /**
* Return if pdf file is protected/encrypted * Return if pdf file is protected/encrypted
* *
* @param TCPDF $pdf PDF initialized object
* @param string $pathoffile Path of file * @param string $pathoffile Path of file
* @return boolean True or false * @return boolean True or false
*/ */
function pdf_getEncryption(&$pdf, $pathoffile) function pdf_getEncryption($pathoffile)
{ {
require_once TCPDF_PATH.'tcpdf_parser.php';
$isencrypted = false; $isencrypted = false;
$pdfparser = $pdf->_getPdfParser($pathoffile); $content = file_get_contents($pathoffile);
$data = $pdfparser->getParsedData();
if (isset($data[0]['trailer'][1]['/Encrypt'])) { ob_start();
$isencrypted = true; @($parser = new \TCPDF_PARSER(ltrim($content)));
list($xref, $data) = $parser->getParsedData();
unset($parser);
ob_end_clean();
if (isset($xref['trailer']['encrypt'])) {
$isencrypted = true; // Secured pdf file are currently not supported
}
if (empty($data)) {
$isencrypted = true; // Object list not found. Possible secured file
} }
return $isencrypted; return $isencrypted;