Я продолжаю получать эту ошибку при попытке добавить свой собственный массив в код. Вот мой массив;
$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 ?>