#laravel #fpdf
#laravel #fpdf
Вопрос:
Я использую библиотеку fpdf для своего проекта laravel. Я создаю класс для функции верхнего и нижнего колонтитулов. Затем вызовите эти функции на моем контроллере pdf. Я сталкиваюсь с этой ошибкой «Ошибка FPDF: страница еще не добавлена», и я понятия не имею, откуда взялась эта ошибка. Можете ли вы научить меня, как исправить эту ошибку. Заранее спасибо.
Коды с моего контроллера
namespace AppHttpControllers;
use IlluminateHttpRequest;
use CodedgeFpdfFpdfFpdf;
use AppPersonnel;
use AppClassesPDFClass;
class PFTReportController extends Controller
{
public function postPFTReport(Request $request)
{
$pdf = new FPDF();
$pdf->AddPage('P', 'A4');
$pdf->Ln(4);
$pdf->SetFont('Arial', '', 12);
// Call the header for this report
$pdfClass = new PDFClass();
$header = $pdfClass->Header();
$pdf->Cell(0, 4, 'Sample Report', 0, 1, 'C');
$pdf->Ln(2);
$pdf->Output();
exit;
}
}
Код класса
namespace AppClasses;
use CodedgeFpdfFpdfFpdf;
class PDFClass extends Fpdf
{
protected $B = 0;
protected $I = 0;
protected $U = 0;
protected $HREF = '';
// Page header
function Header()
{
$this->SetFont('Arial', '', 11);
$this->Cell(0, 2, 'Line 1', 0, 1, 'C');
$this->Cell(0, 8, 'Line 2', 0, 1, 'C');
$this->SetFont('Arial', 'B', 12);
$this->Cell(0, 1, 'Line 3', 0, 1, 'C');
$this->Cell(0, 8, 'Line 4', 0, 1, 'C');
$this->SetFont('Arial', '', 12);
$this->Cell(0, 1, 'Line 5', 0, 1, 'C');
$this->Ln(8);
}
}
Ответ №1:
Вы создаете 2 экземпляра класса. Первый — это FPDF
где вы добавляете страницу:
$pdf = new FPDF();
$pdf->AddPage('P', 'A4');
$pdf->Ln(4);
$pdf->SetFont('Arial', '', 12);
… затем вы создаете новую и просто вызываете свой Header()
метод вручную:
$pdfClass = new PDFClass();
$header = $pdfClass->Header();
Это не имеет смысла, и на этом этапе выдается ошибка, потому что вы вызываете несколько методов в Header()
, которые должны выводить содержимое на страницу, но вы не добавили его раньше.
Вы должны использовать только PDFClass
и вы также не должны вызывать Header()
метод вручную, потому что он вызывается автоматически.
public function postPFTReport(Request $request)
{
$pdf = new PDFClass();
$pdf->AddPage('P', 'A4'); // NOW THE HEADER() METHOD IS INVOKED AUTOMATICALLY IN THIS CALL
$pdf->Ln(4);
$pdf->SetFont('Arial', '', 12);
$pdf->Cell(0, 4, 'Sample Report', 0, 1, 'C');
$pdf->Ln(2);
$pdf->Output();
exit;
}