Как преодолеть ошибку TCPDF: [Image] Невозможно получить изображение? - PullRequest
4 голосов
/ 17 января 2012

Я использую tcpdf v5.9.144

Который я пытаюсь скачать PDF с заданными данными, если изображения имеют плохие ссылки, это не работает. Конечно, это работает так, как и было задумано: -)

Но моя проблема в том, Есть ли способ продолжить, не показывая ФАТАЛЬНУЮ ОШИБКУ ?

Примечание: Комментировать код ошибки - неправильный путь, я так думаю.

Ответы [ 2 ]

6 голосов
/ 17 января 2012
class ErrorIgnoringTCPDF extends TCPDF {

public function Error($msg) {
   // unset all class variables
   $this->_destroy(true);

   // do whatever you want with $msg
   print $msg;
}

}

, который будет игнорировать все ошибки в вашем PDF. Но ты серьезно не хочешь этого! Ваша ошибка появляется, когда библиотека не может загрузить изображение (физически), которое она хочет отобразить в PDF. Таким образом, вам лучше начать проверку изображений, используемых в PDF, чтобы убедиться, что сама ошибка не выдается. Теперь у меня есть идея, что делает TCPDF с не загружаемым изображением. Я предполагаю, что это тормозит.

подумайте о перегрузке функции изображения и проверке существования изображения при его добавлении. Затем сгенерируйте исключение и обработайте ошибку где-нибудь выше в вашем стеке приложений

1 голос
/ 09 июля 2012

Игнорирование ошибки не было бы здорово.TCPDF, когда его попросят использовать несуществующее изображение, просто «die ()» выведет ошибку на экран.Это означает, что это за пределами всей системы обработки исключений / ошибок моего приложения.

Спасибо за вопрос и предложенное решение.Я собираюсь использовать это в моем проекте Symfony2.Это заставляет любые проблемы TCPDF генерировать исключение, которое должно обрабатываться платформой, так как TCPDF не генерирует исключения самостоятельно.Я использую его вместе с пакетом WhiteOctober Symfony2, который позволяет таким образом расширять класс TCPDF.

namespace Acme\MyBundle\ClassExtensions;

class ExceptionThrowingTCPDF extends \TCPDF {

    public function Error($msg) {
       // Clean up: unset class variables
       $this->_destroy(true);

       throw new \Exception('PDF generation failed: ' . $msg);
    }

}
...