Intereting Posts
PHPMailer отправляет электронные письма с предупреждением: это сообщение может и не отправляться: foo@gmail.com Подробнее Безопасное хранение конфиденциальных данных в базе данных Каковы самые большие различия между fopen и curl? PHP: отображать самые последние изображения из каталога? Un-encrypting / re-encrypting зашифрованная ColdFusion строка в PHP CakePHP – одновременное обновление нескольких таблиц Подключение к серверу PHP с помощью Swift Передача массива для просмотра в Code Igniter Как передать целочисленное значение JS, которое находится в целочисленной переменной PHP? исправление cakephp .htaccess / mod_rewrite для настроек общего хостинга Как отправить электронное письмо с помощью PHP? Переупорядочить строки записей базы данных через интерфейс, используя php Получение PHPUnit Working – Include Path установлен неправильно? Отбрасывать тень на текст Определить конечное назначение сокращенного URL-адреса в PHP?

TCPDF ERROR: некоторые данные уже выведены, не удается отправить файл PDF

Я продолжаю получать эту ошибку при попытке добавить свой собственный массив в код. Вот мой массив;

$array = array(); while (odbc_fetch_row($rs)) { $array[] = odbc_result($rs,'Product Name'); } $test = print_r($array); 

Исходный код здесь. Я использую страницу примера, чтобы попробовать, потому что я знаю, что страница примера работает нормально.

http://www.tcpdf.org/examples/example_001.phps

Этот код перед переменной $ html, и когда он установлен, я просто добавляю переменную $ test в переменную $ html. Соединение odbc работает отлично, и пример отлично работает, прежде чем добавлять код, но когда я запускаю скрипт, я получаю эту ошибку;

 Array ( [0] => Test1 [1] => Test2 ) TCPDF ERROR: Some data has already been output, can't send PDF file 

И в массиве также содержится более двух элементов. Есть идеи?

Просто используйте ob_start (); в верхней части страницы.

Добавьте функцию ob_end_clean () перед вызовом функции вывода.

Добавьте функцию ob_end_clean (); перед вызовом функции вывода. Это работало для меня в рамках пользовательской функции WordPress!

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

Эта проблема означает, что у вас есть заголовки. Удаляет теги

?>

в конце вашего кода и убедитесь, что вначале нет пробелов.

Файл tcpdf, который вызывает «данные уже были выведены», находится в папке tcpdf, называемой tcpdf.php. Вы можете изменить его:

добавьте строку ob_end_clean (); как показано ниже (3-я последняя строка):

 public function Output($name='doc.pdf', $dest='I') { //LOTS OF CODE HERE....} switch($dest) { case 'I': { // Send PDF to the standard output if (ob_get_contents()) { $this->Error('Some data has already been output, can\'t send PDF file');} //some code here....} case 'D': { // download PDF as file if (ob_get_contents()) { $this->Error('Some data has already been output, can\'t send PDF file');} break;} case 'F': case 'FI': case 'FD': { // save PDF to a local file //LOTS OF CODE HERE..... break;} case 'E': { // return PDF as base64 mime email attachment) case 'S': { // returns PDF as a string return $this->getBuffer(); } default: { $this->Error('Incorrect output destination: '.$dest); } } ob_end_clean(); //add this line here return ''; } 

Теперь давайте посмотрим на ваш код.
Я вижу, что вы перепутали $ rs и $ sql. Это две разные вещи, которые работают вместе.

 $conn=odbc_connect('northwind','****','*****'); if (!$conn) { exit("Connection Failed: " . $conn); } $sql="SELECT * FROM products"; //is products your table name? $rs=odbc_exec($conn,$sql); if (!$rs) { exit("Error in SQL"); } while (odbc_fetch_row($rs)) { $prodname=odbc_result($rs,"Product Name"); //but preferably never use spaces for table names. $prodid=odbc_result($rs,"ProdID"); //prodID is assumed attribute echo "$prodname"; echo "$prodid"; } odbc_close($conn); now you can use the $prodname and output it to the TCPDF output. 

и я предполагаю, что вы подключаетесь к базе данных доступа MS.

Я просто хочу добавить, что я получал эту ошибку, и ничего не исправит, пока я не Output параметр назначения Output из F в FI . Другими словами, я должен выводить как файл, так и встроенный.

 Output('doc.pdf', 'I') 

в

 Output('doc.pdf', 'FI') 

Я понятия не имею, почему это имело значение, но оно исправило ошибку для меня …

для моего метода Footer был неправильный html-код (отсутствует td), вызывающий ошибку при osx.

 public function Footer() { $this->SetY(-40); $html = <<<EOD <table> <tr> Test Data </tr> </table> EOD; $this->writeHTML($html); } 

используйте ob_end_clean (); $ pdf-> Выход ($ file, 'I'); открыть pdf. Меня устраивает

У меня было это, но в отличие от OP я не мог видеть какой-либо вывод перед сообщением об ошибке TCPDF.

Оказывается, в начале моего скрипта была спецификация UTF8 (байтовый порядок), перед тегом <? Php, прежде чем я имел возможность вызвать ob_start (). Кроме того, перед сообщением об ошибке TCPDF была также спецификация UTF8.

Эта проблема возникает при ошибках apache/php .

Эти данные ( html ) уничтожают PDF-выход.

Вы должны отключить отображение ошибок в php.ini .

У меня была эта странная ошибка, и преступник – это пробел в начале открытого тега PHP

даже без ob_flush и ob_flush

Просто убедитесь, что нет лишних white spaces на или после любого блока <?php ?>