Как устранить ошибку TCPDF: неверный номер страницы в функции setPage (): 0

Для всех разработчиков, которые экспериментируют с TCPDF, одной из наиболее распространенных ошибок при создании их первого PDF с TCPDF без соблюдения документации является следующее:

ОШИБКА TCPDF: Неверный номер страницы в функции setPage (): 0

В этой статье мы покажем вам, почему это исключение возникает в вашем коде, и как его легко решить.

Пример исключения

Следующий код, который генерирует простой PDF, должен генерировать исключение, если вы используете более старую версию TCPDF (потому что, как вы увидите в области Solution, TCPDF исправляет это, автоматически добавляя первую страницу, если первая страница не добавлена вручную):

Write(0, $txt, '', 0, 'L', true, 0, false, false, 0);
//Close and output PDF document to the browser
$pdf->Output('example.pdf', 'I');

На первый взгляд кажется, что все в порядке, но перед печатью есть важная строка, которую необходимо добавить, чтобы избежать исключения.

Решение

Как упоминалось ранее, эта проблема появляется только в более старых версиях TCPDF по следующей причине. Не могли бы вы написать на PDF без страниц? Я думаю, что нет и TCPDF говорит то же самое. Исходя из этой логики, исключение вызвано тем, что в PDF нет страниц для записи, поэтому вам нужно иметь хотя бы одну страницу в своем документе. Вы можете добавить страницы с AddPage метод TCPDF:

$pdf->AddPage();

Поэтому перед записью содержимого в PDF обязательно добавьте страницу в свой HTML с помощью метода AddPage:

Write(0, $txt, '', 0, 'L', true, 0, false, false, 0);
//Close and output PDF document to the browser
$pdf->Output('example.pdf', 'I');

Любопытный факт

Хотя TCPDF автоматически добавляет страницу перед записью, если вы ее не добавляли, вы все равно получите, если не добавите страницу вручную, уведомление в своем коде, если вы позволите видеть сообщения PHP (если сообщения уведомления видны, PDF не появится больше из-за некоторых данных уже было выведено сообщение):

Notice: Undefined offset: 0 in C:\xampp72\htdocs\leanphp\vendor\tecnickcom\tcpdf\tcpdf.php on line 17162
Notice: Undefined offset: 0 in C:\xampp72\htdocs\leanphp\vendor\tecnickcom\tcpdf\tcpdf.php on line 17529
Notice: Undefined offset: 0 in C:\xampp72\htdocs\leanphp\vendor\tecnickcom\tcpdf\tcpdf.php on line 17982
TCPDF ERROR: Some data has already been output, can't send PDF file

Поэтому обязательно добавьте хотя бы одну страницу и предотвратите любую проблему такого рода.

Ссылка на основную публикацию
Adblock
detector