FPDI Passwort setzen
Robert21
- php
Hi!
Ich erhalt immer einen Fehler, sobald ich mittels FPDI ein Passwort erstellen will.
=>
Habt ihr ne idee was da falsch is oder wie ich das herausfinden kann, ohne der Zeile funktionierts fein :-/
Mein Code:
require_once ('include/fpdf/fpdf.php');
require_once ('include/fpdi/fpdi.php');
require_once ('include/fpdi/FPDI_Protection.php');
require_once ('include/personalizedPDF.php');
$pdf = new personalizedPDF ( );
if ($pdf->setPDFSource ( $path )) {
if (! $pdf->SetProtection ( array ('print' ), "passwort" )) {
$message .= "Es ist ein unbekannter Fehler ausgetreten!";
} else {
if (! $pdf->setPersonalize ( $personalizeText )) {
$message .= "Es ist ein unbekannter Fehler ausgetreten!";
$pdf->createPDF ();
$pdf->Output ( $req_file, 'D' );
}
}
}
##################################################################
personalizedPDF.php:
##################################################################
<?php
/**
* requires fpdf.php & fpdi.php
* creates PDF with a personalized text
*/
class personalizedPDF extends FPDI_Protection {
private $sourcefile;
private $personalize;
/\*\*
\* loads the Sourcefile
\* @param $sourcefile
\*/
function setPDFSource($sourcefile) {
if(!is\_file($sourcefile)) return false;
else {
if(!file\_exists($sourcefile)) return false;
}
$this->sourcefile = $sourcefile;
return true;
}
/\*\*
\* sets the Personalizable text for the PDF
\* !!!funktioniert noch nicht!!!
\* @param $personalize
\*/
function setPersonalize($text) {
if(!is\_null($text) && is\_string($text)) {
$this->personalize = $text;
return true;
}
else return false;
}
/\*\*
\* creates a footer with the personalized text
\* @param $personalize
\*/
function Footer()
{
if(isset($this->personalize)) {
// Über dem unteren Seitenrand positionieren
$this->SetY(-10);
// Schriftart festlegen
$this->SetFont('Arial','I',8);
// Graue Schrift
$this->SetTextColor(200, 200, 200);
// Zentrierte Ausgabe der Seitenzahl
$this->Cell(0,10,$this->personalize);
}
}
/\*\*
\* creates the PDF
\* if $this->personalize is set, it uses it
\* now only portrait, change AddPage('P',..) for landscape
\*/
function createPDF() {
$pagecount = $this->setSourceFile($this->sourcefile);
for ($i = 1; $i <= $pagecount; $i++) {
$tplidx = $this->ImportPage($i);
$s = $this->getTemplatesize($tplidx);
$this->AddPage('P', array($s['w'], $s['h']));
$this->useTemplate($tplidx);
}
}
}
?>
Sry, hier das ganze als PHP-Code
Mein Code:
require_once ('include/fpdf/fpdf.php');
require_once ('include/fpdi/fpdi.php');
require_once ('include/fpdi/FPDI_Protection.php');
require_once ('include/personalizedPDF.php');
$pdf = new personalizedPDF ( );
if ($pdf->setPDFSource ( $path )) {
if (! $pdf->SetProtection ( array ('print' ), "passwort" )) {
$message .= "Es ist ein unbekannter Fehler ausgetreten!";
} else {
if (! $pdf->setPersonalize ( $personalizeText )) {
$message .= "Es ist ein unbekannter Fehler ausgetreten!";
$pdf->createPDF ();
$pdf->Output ( $req_file, 'D' );
}
}
}
##################################################################
personalizedPDF.php:
##################################################################
<?php
/**
* requires fpdf.php & fpdi.php
* creates PDF with a personalized text
*/
class personalizedPDF extends FPDI_Protection {
private $sourcefile;
private $personalize;
/**
* loads the Sourcefile
* @param $sourcefile
*/
function setPDFSource($sourcefile) {
if(!is_file($sourcefile)) return false;
else {
if(!file_exists($sourcefile)) return false;
}
$this->sourcefile = $sourcefile;
return true;
}
/**
* sets the Personalizable text for the PDF
* !!!funktioniert noch nicht!!!
* @param $personalize
*/
function setPersonalize($text) {
if(!is_null($text) && is_string($text)) {
$this->personalize = $text;
return true;
}
else return false;
}
/**
* creates a footer with the personalized text
* @param $personalize
*/
function Footer()
{
if(isset($this->personalize)) {
// Über dem unteren Seitenrand positionieren
$this->SetY(-10);
// Schriftart festlegen
$this->SetFont('Arial','I',8);
// Graue Schrift
$this->SetTextColor(200, 200, 200);
// Zentrierte Ausgabe der Seitenzahl
$this->Cell(0,10,$this->personalize);
}
}
/**
* creates the PDF
* if $this->personalize is set, it uses it
* now only portrait, change AddPage('P',..) for landscape
*/
function createPDF() {
$pagecount = $this->setSourceFile($this->sourcefile);
for ($i = 1; $i <= $pagecount; $i++) {
$tplidx = $this->ImportPage($i);
$s = $this->getTemplatesize($tplidx);
$this->AddPage('P', array($s['w'], $s['h']));
$this->useTemplate($tplidx);
}
}
}
?>
danke!
Robert
Hallo Robert,
require_once ('include/fpdf/fpdf.php');
require_once ('include/fpdi/fpdi.php');
require_once ('include/fpdi/FPDI_Protection.php');
$pdf = new personalizedPDF ( );
if ($pdf->setPDFSource ( $path )) {
/* Die Signatur von SetProtection lautet:
*
* void SetProtection (
* [array $permissions=array()
* [, string $user_pass=''[, string $owner_pass='']]] )
*
* SetProtection liefert nichts zurück. Nicht False, nicht irgendetwas anderes.
*/
// Daher kannst Du den Erfolg nicht so prüfen.
if (! $pdf->SetProtection ( array ('print' ), "passwort" )) {
$message .= "Es ist ein unbekannter Fehler ausgetreten!";
}
Freundliche Grüße
Vinzenz
So is there a possibility to recognize why it doesn't work?
The I use the SetProtection() without the if(), I always get a pdf, where the passwort doesn't work.
When I delete the line everything works fine...
thx
Robert