Подтвердить что ты не робот

TCPDF: как разместить изображение в блоке HTML?

Я работаю с TCPDF уже несколько месяцев; выключить и включить. Он работал достаточно хорошо для большинства моих HTML-шаблонов, но у меня всегда были проблемы с размещением изображений в PDF файлах. Изображения обычно помещаются в тело, а не в заголовок. Мое место размещения является фиксированной позицией в верхнем левом углу или относительно нижней части документа. В любом случае у меня были проблемы. Когда текст изменяется в HTML, я должен изменить положение изображения. Несколько таблиц столбцов могут сделать вещи еще более трудными. Примечание: "класс pdf расширяет TCPDF".

$this->pdf->AddPage();
$this->pdf->writeHTML($pdf_html);
$cur_page = $this->pdf->getPage();
$x_pos = $this->pdf->GetX();
$y_pos = $this->pdf->GetY();
// Place image relative to end of HTML
$this->pdf->SetXY($x_pos, $y_pos - 54);
$this->pdf->Image('myimage.png');

Кто-нибудь знает надежный способ размещения изображения в PDF, который создается из HTML. Я подумал о том, чтобы разделить HTML на две части, но я не уверен, будет ли это хорошо работать.

4b9b3361

Ответ 1

Я использую html img tag и хорошо работаю.

$toolcopy = ' my content <br>';
$toolcopy .= '<img src="/images/logo.jpg"  width="50" height="50">';
$toolcopy .= '<br> other content';

$pdf->writeHTML($toolcopy, true, 0, true, 0);

Ответ 2

Извините, я знаю, что вы получили принятый ответ. Тем не менее, он, похоже, на самом деле не отвечает на ваш вопрос в отношении изображения, которое НЕ находится на веб-уровне.

Рассматривали ли вы использование file_get_contents(); и простой рендеринг строки base_64. Таким образом, вы можете использовать изображение с любого уровня, не беспокоясь о его общедоступности.

Например:

$imageLocation = '/var/www/html/image.png';
$ext = end(explode(".", $imageLocation);
$image = base64_encode(file_get_contents($imageLocation));
$pdf->writeHTML("<img src='data:image/$ext;base64,$image'>");

Или, не полагаясь на анализатор HTML. Который из опыта значительно замедляет рендеринг полученного PDF файла:

$image = file_get_contents('/var/www/html/image.png');
$pdf->Image('@'.$image);

редактировать

Ради полноты и в ответ Роланду. Вы, конечно, можете использовать SplFileObject.

$image = new SplFileObject('/var/www/html/image.png', 'r');
$imageContents = $image->fread($image->getSize());
$imageExtension = $image->getExtension();
$pdf->writeHTML("<img src='data:image/$imageExtension;base64,$imageContents'>");