сгенерированный tcpdf pdf файл -> заголовок файла не найден - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь сгенерировать таблицу пользовательских данных для ввода в базу данных SQL, которая будет сгенерирована в таблицу, помещена в файл PDF и отправлена ​​в виде вложения к электронному письму.

Все идет идеально до точки открытия. Файл имеет 1 КБ, это всего лишь HTML-код, и когда я попытался проверить его на: http://www.pdf -online.com / osa / repair.aspx , он написал эту ошибку:

Файл поврежден и не может быть восстановлен, но, возможно, восстановлен Ошибки:

Открыть файл. 0x80410104 - E - Заголовок файла не найден.

Файл: data.pdf
Закрыть файл

Средство восстановления PDF 3-Heights (TM), пробная лицензия действительна до неограниченного срока

Не могли бы вы взглянуть на мой код и сказать, что не так? Я перепробовал все настройки типов вывода (E, F, S, I и т. Д.). Никто не работал.

Функция создания моего PDF:

function generate_pdf($ni, $na, $sur, $ma, $outp){
     if(isset($_POST["generate_pdf"])){
     require_once("tcpdf.php");
        $pdf_file = new TCPDF("P", PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-16', false);
        $pdf_file -> SetCreator(PDF_CREATOR);
        $pdf_file -> SetTitle("Data o uživateli - ".$ni);
        $pdf_file -> SetHeaderData('', '', PDF_HEADER_TITLE, PDF_HEADER_STRING);
        $pdf_file -> SetHeaderFont('helvetica');
        $pdf_file -> SetFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
        $pdf_file -> SetDefaultMonospacedFont('helvetica');
        $pdf_file -> SetFooterMargin(PDF_MARGIN_FOOTER);
        $pdf_file -> SetMArgins(PDF_MARGIN_LEFT, '10', PDF_MARGIN_RIGHT);
        $pdf_file -> SetPrintHeader(false);
        $pdf_file -> SetPrintHeader(false);
        $pdf_file -> SetAutoPageBreak(True, 12);
        $pdf_file -> SetFont('helvetica', '', 12);
        $pdf_file -> addPage();
        $data_to_pdf ='
            <h1 style="text-align: center;">Data o uživateli - '.$ni.'</h1>
            <table border="1" border-collapse="collapse" border-spacing="0" style="text-align: center;"cellpadding="10">
                <tr style="background-color: #b9b9b9;">
                    <td width="20%"><b>Název dat</b></td>
                    <td width="80%"><b>Data</b></td>
                </tr>
            <tbody>
                <tr>
                    <td>Nick</td>
                    <td>'.$ni.'</td>
                </tr>
                <tr>
                    <td>Jméno</td>
                    <td>'.$na.'</td>
                </tr>
                <tr>
                    <td>Príjmení</td>
                    <td>'.$sur.'</td>
                </tr>
                <tr>
                    <td>email</td>
                    <td>'.$ma.'</td>
                </tr>
            </tbody>
        </table>';
        $pdf_file -> writeHTML($data_to_pdf);
        ob_clean();
        $pdf_file -> Output('data_user_'.$ni.'.pdf', $outp);
    }
}

Функция, которая вызывает функцию (устанавливает E в качестве типа вывода = кодировка base64, разделенная на части для вложения электронной почты)

$pdf_file_var = generate_pdf($ni, $na, $sur, $ma, 'E');

1 Ответ

0 голосов
/ 28 июня 2018

Попробуйте запустить чистый PDF и проверить вывод перед включением тела / содержимого.

$ pdf-> AddPage ();

$ pdf-> Вывод ( '', 'S');

...