1

Тема: Проблема з перефформатуванням php файлу у pdf з допомогою tcpdf.

Доброї ночі. Мені потрібно переформатувати сторінку у форматі php у pdf. Для цього я використовую  tcpdf.
Проблема в тому, що мені потрібно переформатувати цілу сторінку, тому у файлі, що робить перетворення я додаю його за допомогою include(), як показано у прикладі:

<?php
// Include the main TCPDF library (search for installation path).
require_once('tcpdf.php');
// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('TCPDF Example 001');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');
// Add a page
// This method has several options, check the source code documentation for more information.
$pdf->AddPage();

// set text shadow effect
$pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal'));
// Set some content to print

$html = include('file.php');
ob_end_clean();
// Print text using writeHTMLCell()
$pdf->writeHTML($html, 'false', 'false', 'false', 'false', '');

ob_end_clean();
$pdf->Output('doc.pdf', 'I');
?>

Коли відкриваю цю сторінку виводить помилку: TCPDF ERROR: Some data has already been output to browser, can't send PDF file.
Питання:
1)Як можливо уникнути данної помилки?
2)Які є альтернативи для включення сторінки в данний код?
3)Чи можливо таке, що код в включеному файлі створює помилку?
4)При використанні

ob_end_clean(); $pdf->Output('doc.pdf', 'I');

зберігаєтся піста сторінка, як це виправити?

Велике спасибі за допомогу.

Подякували: 221VOLT1

2

Re: Проблема з перефформатуванням php файлу у pdf з допомогою tcpdf.

З tcpdf справи не мав, але, схоже, проблема виникає через неправильне використання функцій для роботи з буфером. Ця частина:

$html = include('file.php');
ob_end_clean();

мені не подобається. Ймовірно, має бути так:

ob_start();
include('file.php');
$html = ob_get_contents();
ob_end_clean();

Що робить ob_end_clean() у 25 рядку, незрозуміло.

Подякували: zatogin1995, 221VOLT2