Ошибка возврата TCPDF при создании структуры таблицы для печати

Я работаю в SmartJobBoard с TCPDF. PDF был сгенерирован правильно на старом сервере.

После того, как мы переместили сайт на новый сервер, он начал показывать ошибки при создании счетов в формате PDF. Следующая ошибка показана библиотекой TCPDF.

Notice: Undefined index: cols in /home/pb_admin/public_html/pb/system/ext/tcpdf/tcpdf.php on line 22174
Notice: Undefined index: thead in /home/pb_admin/public_html/pb/system/ext/tcpdf/tcpdf.php on line 21705
Notice: Undefined index: rows in /home/pb_admin/public_html/pb/system/ext/tcpdf/tcpdf.php on line 22162
Warning: array_push() expects parameter 1 to be array, null given in /home/pb_admin/public_html/pb/system/ext/tcpdf/tcpdf.php on line 22164
Warning: array_push() expects parameter 1 to be array, null given in /home/pb_admin/public_html/pb/system/ext/tcpdf/tcpdf.php on line 22164
Warning: array_push() expects parameter 1 to be array, null given in /home/pb_admin/public_html/pb/system/ext/tcpdf/tcpdf.php on line 22164
Notice: Undefined index: thead in /home/pb_admin/public_html/pb/system/ext/tcpdf/tcpdf.php on line 21718

Exception Object
(
[message:protected] => PDF generation failed: Some data has already been output, can't send PDF file
[string:Exception:private] =>
[code:protected] => 0
[file:protected] => /home/pb_admin/public_html/pb/system/ext/tcpdf/tcpdf.php
[line:protected] => 29841
[trace:Exception:private] => Array
(
[0] => Array
(
[file] => /home/pb_admin/public_html/pb/system/ext/tcpdf/tcpdf.php
[line] => 9062
[function] => Error
[class] => ExceptionThrowingTCPDF
[type] => ->
[args] => Array
(
[0] => Some data has already been output, can't send PDF file
)

)

[1] => Array
(
[file] => /home/pb_admin/public_html/pb/system/lib/payment/Invoices/InvoiceManager.php
[line] => 141
[function] => Output
[class] => TCPDF
[type] => ->
[args] => Array
(
[0] => invoice_3284.pdf
[1] => D
)

)

[2] => Array
(
[file] => /home/pb_admin/public_html/pb/system/user-scripts/payment/view_invoice.php
[line] => 55
[function] => generatePDFVersion
[class] => SJB_InvoiceManager
[type] => ::
[args] => Array
(
[0] =>Rechnung

Datum: 01.10.2014
Rechnung #3284
Status der Rechnung: In Bearbeitung (Zahlung auf Rechnung (Abonnement wird freigeschalten, sobald Zahlungseingang erfolgt ist.))

Rechnungsempfänger
Zahlungsempfänger

Ocean Harvest GmbH
Ruessenstrasse 18
6340 Baar

Konto:
Bank: UBS AG, Zug
IBAN: CH81 0027 3273 1186 8701 TBeschreibung    Betrag
PlacementBooster.ch
Firmen-Abonnement: 12 Monate
50 Mitarbeiter (51 Accounts)    CHF 13,808.00
Zwischensumme   CHF 13,808.00
MWST-Nr. CHE-108.643.082 MWST MWST Ref.-Nr. 417985  CHF 1,104.64
Insgesamt   CHF 14,912.64

[1] => 3284
)

)

[3] => Array
(
[file] => /home/pb_admin/public_html/pb/system/core/ModuleManager.php
[line] => 127
[function] => execute
[class] => SJB_Payment_ViewInvoice
[type] => ->
[args] => Array
(
)

)

[4] => Array
(
[file] => /home/pb_admin/public_html/pb/system/core/System.php
[line] => 140
[function] => executeFunction
[class] => SJB_ModuleManager
[type] => ->
[args] => Array
(
[0] => payment
[1] => view_invoice
[2] =>
[3] => /view-invoice/
)

)

[5] => Array
(
[file] => /home/pb_admin/public_html/pb/system/core/PageConstructor.php
[line] => 29
[function] => executeFunction
[class] => SJB_System
[type] => ::
[args] => Array
(
[0] => payment
[1] => view_invoice
[2] =>
[3] => /view-invoice/
)

)

[6] => Array
(
[file] => /home/pb_admin/public_html/pb/system/core/System.php
[line] => 193
[function] => getPage
[class] => SJB_PageConstructor
[type] => ::
[args] => Array
(
[0] => SJB_UserPageConfig Object
(
[uri] => /view-invoice/
[module] => payment
[function] => view_invoice
[template] =>
[title] => View Invoice
[parameters] =>
[keywords] =>
[page_exists] => 1
[page_id] => 539
[has_raw_output] =>
[numberOfViews] =>
[description] =>
)

)

)

[7] => Array
(
[file] => /home/pb_admin/public_html/pb/system/core/Request.php
[line] => 209
[function] => getPage
[class] => SJB_System
[type] => ::
[args] => Array
(
[0] => SJB_UserPageConfig Object
(
[uri] => /view-invoice/
[module] => payment
[function] => view_invoice
[template] =>
[title] => View Invoice
[parameters] =>
[keywords] =>
[page_exists] => 1
[page_id] => 539
[has_raw_output] =>
[numberOfViews] =>
[description] =>
)

)

)

[8] => Array
(
[file] => /home/pb_admin/public_html/pb/index.php
[line] => 72
[function] => execute
[class] => SJB_Request
[type] => ->
[args] => Array
(
)

)

)

[previous:Exception:private] =>
)

Почему происходит эта ошибка?

3

Решение

TCPDF требует 100% действительный синтаксис XHTML

Даже «HTML Tidy» не покажет вам все ошибки HTML. В моем случае тег tr не был закрыт, и после того, как я исправил это, предупреждения исчезли, но файл PDF был безобразным. Проблема была решена путем изменения, например, colspan=12 от colspan=”12” а также rowspan=2 от rowspan=”2” ,

4

Другие решения

Попробуйте вставить …

//Change To Avoid the PDF Error
ob_end_clean();

если это не работает, попробуйте использовать ob_clean (); вместо.

как раз перед тем как

$pdf->Output($filename, $output_dest);

Ошибка происходит, потому что TCPDF выбрасывает ошибки до финальной оказание завершено. Чтобы TCPDF не мог создавать неработающие PDF-файлы, он скорее решает аварийно завершить работу.

На всякий случай, если вы больше не нравитесь TCPDF, взгляните на DOMPDF 🙂

4

Проблема в том, что ваш PHP скрипт печать в браузер перед отправкой PDF. Почему PHP печатает в браузере перед отправкой PDF? Потому что есть ошибки, и PHP настроен на печать ошибок в браузере.

Два решения, приведенные выше, являются (плохими) обходными путями для подавляя ошибки. Исправьте код, ошибки исчезнут, и тогда PDF можно будет отправить правильно.

Почему PHP выдает ошибки? Давайте взглянем:

Notice: Undefined index: cols in /home/pb_admin/public_html/pb/system/ext/tcpdf/tcpdf.php on line 22174
Notice: Undefined index: thead in /home/pb_admin/public_html/pb/system/ext/tcpdf/tcpdf.php on line 21705
Notice: Undefined index: rows in /home/pb_admin/public_html/pb/system/ext/tcpdf/tcpdf.php on line 22162
Warning: array_push() expects parameter 1 to be array, null given in /home/pb_admin/public_html/pb/system/ext/tcpdf/tcpdf.php on line 22164
Warning: array_push() expects parameter 1 to be array, null given in /home/pb_admin/public_html/pb/system/ext/tcpdf/tcpdf.php on line 22164
Warning: array_push() expects parameter 1 to be array, null given in /home/pb_admin/public_html/pb/system/ext/tcpdf/tcpdf.php on line 22164
Notice: Undefined index: thead in /home/pb_admin/public_html/pb/system/ext/tcpdf/tcpdf.php on line 21718

Первые три ошибки — это проблемы кода, пытающегося получить доступ к элементу массива, прежде чем проверять, установлен ли он. Как проблема в /tcpdf/tcpdf.php файл Я не думаю, что вы можете это исправить. Файл ошибка с TCPDF.

Следующие четыре ошибки, скорее всего, связаны с первыми тремя. Исправьте эти первые три, и следующие четыре ошибки, скорее всего, также будут устранены.

Если вы публикуете сообщение об ошибке, пожалуйста, оставьте ссылку на него в комментариях к этому ответу. Благодарю.

1

Я думаю, что вы должны сделать уровень отладки 0 в вашем действии.
Используйте Configure :: write (‘debug’, 0);

1

Вы должны перехватить весь буфер с помощью функции ob_ *, без эха, печати или заголовка перед функцией ob_start:

<?php
ob_start();
[ ... ]
$content_pdf = ob_get_contents();
ob_end_flush();
?>

Наслаждайтесь вашим кодом!

0

Вы должны убедиться, что все открывающие теги имеют совпадающие закрывающие теги! Это одна из наименее подозреваемых ошибок в html, и, вероятно, причина, по которой вы получаете ошибку:
«Заголовки уже отправлены»

0

В моем случае ошибки в tcpdf.php появились из-за того, что у меня были некоторые ошибки в HTML — закрытый тег td.
Кажется, что HTML-ошибка, подобная этой, приведет к большому количеству ошибок в файле tcpdf.php, включая ошибки, которые не имеют логической связи с фактической ошибкой.

Мой совет — изолировать ошибку, удалив весь «html», который вы отправляете на вывод, и просто добавьте одну букву. Если вы получили пустой PDF-файл, начните проверять html-переменную.

0

Сталкивались с такой же проблемой. Эта проблема была из-за плохого HTML и, следовательно, TCPDF выдавал ошибку.
После исправления проблем с html TCPDF работал нормально для меня, чтобы исправить проблемы с html кликните сюда.

0
По вопросам рекламы [email protected]