этот вопрос кажется вечнозеленым на TCPDF …
У меня проблема, которая сводит меня с ума.
У меня есть html-код, который я использую как «шаблон» для моего PDF-документа, здесь у меня есть логотип моей компании.
Все работает нормально на localhost (Windows), но когда я перехожу в онлайн, изображение не отображается.
Обратите внимание: я не получаю никакой ошибки (т. Е. Невозможно получить ошибку изображения ) в моем PDF-изображении, просто пусто!
Infact, если я нажимаю на PDF в том месте, где должны быть изображения, я могу выбрать его, а Adobe включает опцию «Копировать изображение».
Очевидно, что изображение существует, здесь, и разрешение правильное.
Если я пытаюсь поработать там или просматривать сгенерированную HTML-страницу, все в порядке.
Это код PHP:
$pdf->SetMargins($params->get('pdfMarginLeft', 15), $params->get('pdfMarginTop', 27), $params->get('pdfMarginRight', 15)); $pdf->SetHeaderMargin(PDF_MARGIN_HEADER); $pdf->SetFooterMargin(PDF_MARGIN_FOOTER); $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); $pdf->SetFont('helvetica', '', 8); $pdf->AddPage(); $pdf->writeHTML($html, true, false, true, false, ''); $pdf->lastPage();
Тогда это мой HTML-код (я просто пропустил все, кроме изображения):
<img alt="logo black" src="../images/logo_black.png" height="60" width="210" />
Я пробовал с URL (относительный и абсолютный) и с путём (относительным и абсолютным), проблема все еще возникает. Есть идеи?
Поскольку все работает локально, вы можете попробовать изменить тип изображения с png на jpg и проверить после изменения кода и загрузить jpg на сервере.
Это не ваша проблема, но это возможное решение для людей с аналогичной проблемой в футурте. Убедитесь, что атрибуты HTML имеют двойные кавычки.
$html = "<img src='...' />"; // This will not work $html = '<img src="..." />'; // This will work
В моем случае тег IMG не работает, пока я не напишу полный путь к файлу
Не работает
<img src="/pdfrender/XXX.jpg" width="50" height="50">
Рабочий (пример localhost)
<img src="http://img.ruphp.com/php/XXX.jpg" width="50" height="50">
Вы можете преобразовать тип изображения «jpg / png» в base64. <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA...."/>
это может вам помочь!
Я реализовал str_replace для изображения src, и теперь это работает нормально.
$html = str_replace("../images", $_SERVER["DOCUMENT_ROOT"] . '/images', $html);
Я должен был «сохранить» изображения:
$image = 'images/logo_example.png'; imagepng(imagecreatefrompng($image),$image);
Тогда это сработало.