TCPDF ritorno di errore durante la creazione della struttura della tabella di stampa

Sto lavorando in SmartJobBoard con TCPDF. PDF e ‘ stato generato correttamente sul vecchio server.

Dopo abbiamo spostato il sito su un nuovo server, che ha cominciato a mostrare errori durante la creazione di fatture in PDF. Viene visualizzato il seguente errore da TCPDF biblioteca.

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 T


Beschreibung    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] => 
)

Perché questo errore succede?

  • versione di php del tuo server vecchio e nuovo server sono uguali o diversi, se diversi, quali ? gentilmente inviare anche un po ‘ di codice per aiutarvi
  • Da quello che ho capito il problema è che PHP errori di visualizzazione è impostato su on. PHP visualizza gli avvisi – avvisi e TCPDF “lamenta” che “Alcuni dati sono già stati output”. Provare a impostare php errori di visualizzazione su off o use ob_clean(); prima di output PDF.
  • Justrohu, il mio vecchio server versione di php 5.3.3 e nuovo server php versione 5.4.32
  • Tliokos, sì in errore “Alcuni dati sono già stati output” è aggiunto. Si può vedere nella mia domanda. E sì, ho usato ob_end_clean(); prima di output PDF.
InformationsquelleAutor Gokul Shinde | 2014-10-02



8 Replies
  1. 5

    TCPDF richiede il 100% valid XHTML sintassi

    Anche “HTML Tidy” non mostrare tutti gli errori html. Nel mio caso ho avuto un tr tag non chiusi, e dopo che ho corretto questo gli avvisi scomparso, ma il file pdf è stato brutto. Il problema è stato risolto modificando, per esempio, colspan=12 da colspan=”12” e rowspan=2 da rowspan=”2” .

  2. 4

    Provare a inserire…

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

    se questo non funziona, provare a utilizzare ob_clean(); invece.

    poco prima di te:

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

    L’errore occures perché TCPDF è il lancio di errori prima della finale di rendering è stato completato. Per evitare TCPDF dalla creazione non di lavoro Pdf è piuttosto decide di crash.

    Solo nel caso in cui TCPDF non piace più, dare un’occhiata a DomPDF 🙂

  3. 1

    Il problema è che lo script PHP è stampa per il browser prima di inviare il PDF. Perché PHP stampa per il browser prima di inviare il file in formato PDF? Perché ci sono errori, e il PHP è configurato per errori di stampa del browser.

    Le due soluzioni sopra indicati sono (male) soluzioni alternative per sopprimere gli errori. Correggere il codice, gli errori spariscono, e poi il PDF può essere inviato correttamente.

    Perché PHP lancio di errori? Diamo un’occhiata:

    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

    I primi tre errori sono problemi di codice tentando di accedere a un elemento di un array prima di controllare per vedere se è impostato. Il problema è nel /tcpdf/tcpdf.php file non credo che si può risolvere questo problema. Un bug con TCPDF.

    I prossimi quattro errori sono probabilmente dovuti ai primi tre. Fissare i primi tre, e il quattro errori sarà più probabile essere risolto così.

    Se inviare un bug report, quindi si prega di pubblicare il link nei commenti a questa risposta. Grazie.

  4. 1

    Penso che si dovrebbe fare a livello di debug 0 nell’azione.
    Utilizzare Configurare::write(‘debug’, 0);

  5. 0

    Devi prendere tutti i buffer attraverso ob_* funzione eco o di stampa o di intestazione prima funzione ob_start:

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

    Godetevi il vostro codice!

    • Perché solo ob_start può essere utilizzato ??
  6. 0

    Si deve verificare che tutti i tag di apertura sono corrispondenti al tag di chiusura! Che uno dei meno sospetti bug in html, e probabilmente il motivo per cui si ottiene il messaggio di errore:
    “Intestazioni già inviato”

  7. 0

    Nel mio caso gli errori in tcpdf.php apparve perché ho avuto alcuni errori nell’HTML un unclosed tag td.
    Sembra un errore HTML come questo genererà un sacco di errori in tcpdf.php file, compresi quelli che non hanno alcun collegamento logico con l’errore effettivo.

    Il mio consiglio è quello di isolare l’errore rimuovendo l’intero ‘html’, che si invia in uscita, e basta aggiungere una lettera. Se si ottiene il vostro vuoto pdf, avviare il controllo del codice html variabile.

  8. 0

    Sono imbattuto stesso problema. Questo problema è dovuto ai cattivi html e quindi TCPDF stava gettando errore.
    Dopo il fissaggio html questioni TCPDF ha funzionato bene per me, per risolvere html questioni clicca qui.

Lascia un commento