FPDF/FPDI Fehler: Fatal error: Class 'setasign\Fpdi\FpdfTpl' not found in
Ich bin versucht, Wasserzeichen einem bestehenden PDF-Dokument, und dieser Fehler wurde tripping me up für die letzten zwei Tage...
Habe ich die FPDI-Bibliothek in fpdi/src/, und die fpdf-Bibliothek in /fpdf/
Die Datei werfen der Fehler ist Fpdi.php (Zeile 27). Hier sind die ersten 30 Zeilen:
HTML:
<?php
/**
* This file is part of FPDI
*
* @package setasign\Fpdi
* @copyright Copyright (c) 2017 Setasign - Jan Slabon (https://www.setasign.com)
* @license http://opensource.org/licenses/mit-license The MIT License
* @version 2.0.0
*/
namespace setasign\Fpdi;
use setasign\Fpdi\PdfParser\CrossReference\CrossReferenceException;
use setasign\Fpdi\PdfParser\Type\PdfIndirectObject;
use setasign\Fpdi\PdfParser\Type\PdfNull;
//use setasign\Fpdi\FpdfTpl;
/**
* Class Fpdi
*
* This class let you import pages of existing PDF documents into a reusable structure for FPDF.
*
* @package setasign\Fpdi
*/
class Fpdi extends FpdfTpl
{
use FpdiTrait;
Hier ist meine Datei, die ich benutze, um Wasserzeichen die .pdf-Dokument on-the-fly:
HTML:
<?php
$fullPathToFile = $_GET['fileToWaterMark'];
require('rotation.php');
require_once('fpdf/fpdf.php');
require_once 'fpdi/src/fpdi.php';
require_once('fpdi/src/FpdfTpl.php');
class PDF_Rotate extends FPDI {
var $angle = 0;
function Rotate($angle, $x = -1, $y = -1) {
if ($x == -1)
$x = $this->x;
if ($y == -1)
$y = $this->y;
if ($this->angle != 0)
$this->_out('Q');
$this->angle = $angle;
if ($angle != 0) {
$angle*=M_PI / 180;
$c = cos($angle);
$s = sin($angle);
$cx = $x * $this->k;
$cy = ($this->h - $y) * $this->k;
$this->_out(sprintf('q %.5F %.5F %.5F %.5F %.2F %.2F cm 1 0 0 1 %.2F %.2F cm', $c, $s, -$s, $c, $cx, $cy, -$cx, -$cy));
}
}
function _endpage() {
if ($this->angle != 0) {
$this->angle = 0;
$this->_out('Q');
}
parent::_endpage();
}
}
//$fullPathToFile = "chinmay235.pdf";
class PDF extends PDF_Rotate {
var $_tplIdx;
function Header() {
global $fullPathToFile;
//Put the watermark
$this->Image('http://chart.googleapis.com/chart?cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World', 40, 100, 100, 0, 'PNG');
$this->SetFont('Arial', 'B', 50);
$this->SetTextColor(255, 192, 203);
$this->RotatedText(20, 230, 'Raddyx Technologies Pvt. Ltd.', 45);
if (is_null($this->_tplIdx)) {
//THIS IS WHERE YOU GET THE NUMBER OF PAGES
$this->numPages = $this->setSourceFile($fullPathToFile);
$this->_tplIdx = $this->importPage(1);
}
$this->useTemplate($this->_tplIdx, 0, 0, 200);
}
function RotatedText($x, $y, $txt, $angle) {
//Text rotated around its origin
$this->Rotate($angle, $x, $y);
$this->Text($x, $y, $txt);
$this->Rotate(0);
}
}
$pdf = new PDF();
$pdf->AddPage();
$pdf->SetFont('Arial', '', 12);
$pdf->Output();
?>
Ich bin sehr kompetent mit PHP, aber dieser Fehler hat wirklich mich geworfen, für eine Schleife. Wenn noch mehr Informationen benötigt werden, lasst es mich wissen und ich werde zur Verfügung stellen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erfordern, die Klassen auf diese Weise:
Dann fügen Sie
use \setasign\Fpdi\Fpdi;
an dein Wasserzeichen und nicht nuruse \setasign\Fpdi;
oder verwenden Sie die richtige Klasse name (einschließlich vollständiger namespace) in der Klasse Erklärung.use \setasign\Fpdi\Fpdi;
nach dass derautoload.php
Datei in Ihrem Haupt-php-Datei.Was passiert, wenn Sie das ändern:
Dazu?
Oder wenn Sie nicht über autoload dann werden Sie vielleicht brauchen, um hinzuzufügen:
use \setasign\Fpdi\Fpdi;
an dein Wasserzeichen und nicht nuruse \setasign\Fpdi
oder verwenden Sie den korrekten Klassennamen in Ihrer Klasse Erklärung. In der Regel sollten Sie versuchen zu verstehen, die Verwendung von namespaces.