Mpdf выдает ошибку и не выводит pdf - PullRequest
0 голосов
/ 04 августа 2020

Я использую Mpdf, который локально работает нормально, проблема в том, что PDF-файл не выводится, а просто отображается пустой экран

Вот ошибка

Fatal ошибка: Uncaught Mpdf \ MpdfException: данные уже отправлены на вывод (/customers/3/c/2/includes/header.php в строке 14), невозможно вывести файл PDF в / customers / 3 / c / 2 /pdf/vendor/mpdf/mpdf/src/Mpdf.php:9510 Трассировка стека: # 0 / customers / 3 / c / 2: Mpdf \ Mpdf-> Output ('sold.pdf', 'I') # 1 / customers / 3 / c / 2 / include ('/ customers / 3 / c / ...') # 2 {main} добавлено в / customers / 3 / c / 2 / pdf / vendor / mpdf / mpdf / src /Mpdf.php в строке 9510

Пара вещей, которые я пробовал, кодировка правильная в UTF, а НЕ DOM, у меня нет пробелов, и все вроде бы в порядке

Это код заголовка

<?php
        session_start();
            if(empty($_SESSION['user_id']))
                {
                header("Location: https://www.home.co.uk");
                }
        require '../dbcon/database.php'; 
        $db = DB();
        require '../lib/library.php'; 
        $app = new WIDGET();
        require '../lib/carbon.php';
        $user = $app->UserDetails($_SESSION['user_id']); 
        ?>

Я также пробовал

<?php
        session_start();
        require '../dbcon/database.php'; 
        $db = DB();
        require '../lib/library.php'; 
        $app = new WIDGET();
        require '../lib/carbon.php';
        $user = $app->UserDetails($_SESSION['user_id']); 
        ?>

Что не имело значения.

А это код в строке 9510 Mdpf. php

case Destination::INLINE:

            if (headers_sent($filename, $line)) {
                throw new \Mpdf\MpdfException(
                    sprintf('Data has already been sent to output (%s at line %s), unable to output PDF file', $filename, $line)
                );
            }

Как уже упоминалось, все, что я получаю, это пустая страница е, если я выхожу в iframe, он работает нормально. Прекрасно работает на 127.0.0.1

Любая помощь очень ценится и заранее благодарим за любую помощь

Обновление:

Извините, забыл упомянуть или показать код, вызывающий pdf.

Я уже пробовал ob_clean (), но все еще нет go

require_once 'pdf/vendor/autoload.php';
    if(ob_get_length() > 0) {
    ob_clean();
    }
    $mpdf = new \Mpdf\Mpdf();   
    $html ='<html>
    <body>
    <h2 style="font-size: 120px; text-align:center;">SOLD</h2>
    <h2 style="font-size: 50px; text-transform: uppercase; text-align:center;">'.   $row->widget_model .'</h2>
    <h2 style="font-size: 50px; text-transform: uppercase; text-align:center;">'. $row->widget_serial .'</h2><br>
    <h2 style="font-size: 30px; text-transform: uppercase; text-align:center;">Delivery Date: '. (new DateTime($_POST['expdelivery']))->format('d-m-Y') .'</h2>
    <br>
    <h2 style="font-size: 20px; text-align:center;">Contact: '. $_POST['name'] .'</h2>
    </body>
     </html>';
     $mpdf->WriteHTML($html);
     $mpdf->Output('sold.pdf','I');
     ob_end_flush();
     }

РЕДАКТИРОВАТЬ 2: -

Глядя на вкладку сети, он просто показывает все js calls and favicon.ico

Он также показывает этот виджет обновления страницы. php? id = 2178

<?php
        $page_title = "Widget Tracker - Amend Widget"; 
        $page = ''; 
        include "includes/header.php";
        include "includes/sidebar.php";
            $id = isset($_GET['id']) ? $_GET['id'] : NULL;
            $sth = $db->prepare("SELECT *  FROM `widgettracker` WHERE `id` = :id");
            $sth->bindParam(':id', $id, PDO::PARAM_INT);
            $sth->setFetchMode(PDO::FETCH_OBJ);
            $sth->execute(); 
            $row = $sth->fetch();
            ?>
            <section class="content">
                <div class="container-fluid">
               <?php
                    if($row->widgetstatus == "Sold") 
            {include "sold.php";}
            else
            {include "widgetdetails.php";}
            ?>
            </div>
            </section>
        <?php
        include "includes/footer.php";
        include "includes/customjs.php";
        ?>

И страница, на которой установлен Mpdf, - это «widgetdetails. php "Мне нужно вставить дату продажи, обновить и сгенерировать PDF-файл. Тогда ошибка

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

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

0 голосов
/ 04 августа 2020

У вас может быть пустая строка или новая строка после закрытия ?> в вашем файле заголовка. Попробуйте удалить закрывающий ?> из ваших php файлов, которые на самом деле ничего не выводят.

...