РЕДАКТИРОВАТЬ 2: Проблема не решена; Я нашел обходной путь, переключившись на более старую версию файла, в которой использовался ezpdf вместо TCPDF, и изменив ее для получения желаемой распечатки (я не знаю, почему только одна страница на всем веб-сайте была изменена на TCPDF, но видимо так и произошло). Мне все же хотелось бы знать, есть ли способ решить эту проблему, поскольку код TCPDF правильно работает на сервере с PHP 5.2, но не на новом сервере. Однако это больше не остается главным приоритетом.
После отправки запроса на PDF-файл я ничего не получаю; просто пустая страница. Это весь код, взятый с другого сервера (мы обновляем версии PHP до 5.3), и на первом сервере код работает нормально.
Внимание : Невозможно изменить информацию заголовка – заголовки уже отправлены (вывод начинается с пути к файлу в path/tcpdf.php)
ОШИБКА TCPDF: Некоторые данные уже выведены в браузер, невозможно отправить PDF-файл
После некоторой отладки я заметил, что проблема заключается в «ошибке заголовков, уже отправленных»,
с которой я столкнулся несколько раз при обновлении этого сайта. Большинство этих ошибок можно исправить с помощью мета http-equiv, поскольку в основном они связаны с обновлением страниц. Однако TCPDF использует заголовки для создания файла PDF и принудительной загрузки.
Как я могу заставить работать случай «D» без заголовков, и если это возможно? Этого нельзя сделать, можно ли изменить регистр «I», чтобы он работал без заголовков?
Я пробовал использовать ob_clean() перед $pdf->output( ). Я также попытался удалить require_once('./common/tcpdf/config/lang/eng.php'). Оба из них решили проблемы для других людей, и я тщательно исследовал эту тему. Я не думаю, что в данном случае это сработает, поскольку я знаю, что на данный момент веб-сайт уже начал вывод.
Мне нужна альтернатива использованию заголовков. (мета-эквивалент http?) в случае «D» (предпочтительно) или случае «I» (выполнимо) в приведенном ниже коде это даст мне те же результаты (загрузка PDF-файла или PDF-файл, открытый в новой вкладке или окне) . Если, конечно, не будет другого решения. Если нет, мне придется переписать страницу без использования TCPDF.
РЕДАКТИРОВАТЬ: на исходном сервере «создать PDF» вызывает перезагрузку страницы, а затем после долгого ожидания (пока он запрашивает базу данных) он принудительно выполняет загрузку пользователя. На новом сервере страница перезагружается, происходит долгое ожидание запроса, а затем меню фактически разрывается (выход из системы удаляется, а другая кнопка перемещается под остальную часть строки меню), и больше ничего не происходит.
Код взят из tcpdf.php:
case 'I': {
// Send PDF to the standard output
echo "console.log('some log');";
if (ob_get_contents()) {
$this->Error('Some data has already been output, can\'t send PDF file');
}
if (php_sapi_name() != 'cli') {
//We send to a browser
header('Content-Type: application/pdf');
if (headers_sent()) {
$this->Error('Some data has already been output to browser, can\'t send PDF file');
}
header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
header('Pragma: public');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Content-Length: '.$this->bufferlen);
header('Content-Disposition: inline; filename="'.basename($name).'";');
}
echo $this->getBuffer();
break;
}
case 'D': {
// Download PDF as file
if (ob_get_contents()) {
$this->Error('Some data has already been output, can\'t send PDF file');
}
header('Content-Description: File Transfer');
if (headers_sent()) {
$this->Error('Some data has already been output to browser, can\'t send PDF file');
}
header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
header('Pragma: public');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
// force download dialog
header('Content-Type: application/force-download');
header('Content-Type: application/octet-stream', false);
header('Content-Type: application/download', false);
header('Content-Type: application/pdf', false);
// use the Content-Disposition header to supply a recommended filename
header('Content-Disposition: attachment; filename="'.basename($name).'";');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.$this->bufferlen);
echo $this->getBuffer();
break;
}
Подробнее здесь: https://stackoverflow.com/questions/240 ... with-tcpdf
Получение «Заголовки уже отправлены» с помощью TCPDF ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1731028356
Anonymous
РЕДАКТИРОВАТЬ 2: Проблема не решена; Я нашел обходной путь, переключившись на более старую версию файла, в которой использовался ezpdf вместо TCPDF, и изменив ее для получения желаемой распечатки (я не знаю, почему только одна страница на всем веб-сайте была изменена на TCPDF, но видимо так и произошло). Мне все же хотелось бы знать, есть ли способ решить эту проблему, поскольку код TCPDF правильно работает на сервере с PHP 5.2, но не на новом сервере. Однако это больше не остается главным приоритетом.
После отправки запроса на PDF-файл я ничего не получаю; просто пустая страница. Это весь код, взятый с другого сервера (мы обновляем версии PHP до 5.3), и на первом сервере код работает нормально.
Внимание : Невозможно изменить информацию заголовка – заголовки уже отправлены (вывод начинается с пути к файлу в path/tcpdf.php)
[b]ОШИБКА TCPDF: [/b]Некоторые данные уже выведены в браузер, невозможно отправить PDF-файл
После некоторой отладки я заметил, что проблема заключается в «ошибке заголовков, уже отправленных»,
с которой я столкнулся несколько раз при обновлении этого сайта. Большинство этих ошибок можно исправить с помощью мета http-equiv, поскольку в основном они связаны с обновлением страниц. Однако TCPDF использует заголовки для создания файла PDF и принудительной загрузки.
Как я могу заставить работать случай «D» без заголовков, и если это возможно? Этого нельзя сделать, можно ли изменить регистр «I», чтобы он работал без заголовков?
Я пробовал использовать ob_clean() перед $pdf->output( ). Я также попытался удалить require_once('./common/tcpdf/config/lang/eng.php'). Оба из них решили проблемы для других людей, и я тщательно исследовал эту тему. Я не думаю, что в данном случае это сработает, поскольку я знаю, что на данный момент веб-сайт уже начал вывод.
Мне нужна альтернатива использованию заголовков. (мета-эквивалент http?) в случае «D» (предпочтительно) или случае «I» (выполнимо) в приведенном ниже коде это даст мне те же результаты (загрузка PDF-файла или PDF-файл, открытый в новой вкладке или окне) . Если, конечно, не будет другого решения. Если нет, мне придется переписать страницу без использования TCPDF.
РЕДАКТИРОВАТЬ: на исходном сервере «создать PDF» вызывает перезагрузку страницы, а затем после долгого ожидания (пока он запрашивает базу данных) он принудительно выполняет загрузку пользователя. На новом сервере страница перезагружается, происходит долгое ожидание запроса, а затем меню фактически разрывается (выход из системы удаляется, а другая кнопка перемещается под остальную часть строки меню), и больше ничего не происходит.
Код взят из tcpdf.php:
case 'I': {
// Send PDF to the standard output
echo "console.log('some log');";
if (ob_get_contents()) {
$this->Error('Some data has already been output, can\'t send PDF file');
}
if (php_sapi_name() != 'cli') {
//We send to a browser
header('Content-Type: application/pdf');
if (headers_sent()) {
$this->Error('Some data has already been output to browser, can\'t send PDF file');
}
header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
header('Pragma: public');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Content-Length: '.$this->bufferlen);
header('Content-Disposition: inline; filename="'.basename($name).'";');
}
echo $this->getBuffer();
break;
}
case 'D': {
// Download PDF as file
if (ob_get_contents()) {
$this->Error('Some data has already been output, can\'t send PDF file');
}
header('Content-Description: File Transfer');
if (headers_sent()) {
$this->Error('Some data has already been output to browser, can\'t send PDF file');
}
header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
header('Pragma: public');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
// force download dialog
header('Content-Type: application/force-download');
header('Content-Type: application/octet-stream', false);
header('Content-Type: application/download', false);
header('Content-Type: application/pdf', false);
// use the Content-Disposition header to supply a recommended filename
header('Content-Disposition: attachment; filename="'.basename($name).'";');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.$this->bufferlen);
echo $this->getBuffer();
break;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/24068529/getting-headers-already-sent-with-tcpdf[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия