17.09.2023
В своё время долго провозился с данной задачей, поэтому решил выложить, вдруг кому-то сократит время поиска.
Задача была вывести изображение с скругленными углами и рамкой вокруг в документе формируемом TCPDF на PHP, т.е. аналог border-raduis из CSS.
Как я не пытался вставлять HTML-код со стилями border-raduis в создаваемый PDF, у меня ничего не работало, хотя примеры на стековерфлоу с подобным решениями были.
Я уже было отчаялся и думал что придется использовать 2 изображения с наложением, одно снизу - оригинальное, второе в формате PNG над ним с краями и прозначным прямоугольником со скругленными краями внутри (как тут). Что напоминало старый-старый веб.
Но через несколько часов поисков и мучений удалось найти более верное решение проблемы, где через StartTransform мы сначала делаем закругление углов, потом вставляем изображение, а потом делаем саму рамку, решение ниже.
// Стили рамки $imgBorderStyle = ['width' => 1,'cap' => 'square','join' => 'miter','dash' => '0','color' => [150, 150, 150]]; $imgX = 10; $imgY = 10; $imgWidth = 50; $imgHeght = 50; $borderRadius = 5; $imgPath = "FULL_IMAGE_PARH"; $this->pdf->StartTransform(); // Скругляем углы для изображения | Rounding the corners for the image $this->pdf->RoundedRect($imgX, $imgY, $imgWidth, $imgHeght, $borderRadius, '1111', 'CNZ'); // Вставляем само изображение | Insert the image $this->pdf->Image($imgPath, $imgX, $imgY, $imgWidth, $imgHeght); // Выводим полукруглую рамку вокруг изображения | Draw a semicircular frame around the image $this->pdf->RoundedRect($imgX, $imgY, $imgWidth, $imgHeght, $borderRadius, '1111', 'S', $imgBorderStyle); $this->pdf->StopTransform();