Я использую Laravel Excel для создания файлов Excel и PDF.
Загрузка Excel полностью в порядке, но экспорт PDF - нет.
Я использую DOMPDF для создания PDF-файлов
Я включаю изображения в файл, используя метод registerEvents
.
Образец кода;
public function registerEvents(): array
{
$items = $this->items;
$stream_args = [
"ssl" => [
"verify_peer"=>false,
"verify_peer_name"=>false
],
"http" => [
'timeout' => 60,
'user_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/3.0.0.1'
]
];
$img_height = Drawing::pixelsToPoints((543/445) * $this->image_width);
$cell_height = Drawing::pixelsToPoints($img_height * 0.8);
$cell_width = (Drawing::pixelsToPoints((543/445) * $img_height) / 7);
return [
AfterSheet::class => function(AfterSheet $event) use ($items, $stream_args, $img_height, $cell_height, $cell_width) {
$worksheet = $event->sheet->getDelegate();
// set page layout
$worksheet->getPageSetup()
->setOrientation(PageSetup::ORIENTATION_LANDSCAPE)
->setPaperSize(PageSetup::PAPERSIZE_A4)
->setHorizontalCentered(true)
->setVerticalCentered(true);
$worksheet->getPageMargins()
->setHeader(0.5)
->setFooter(0.5)
->setTop(0.25)
->setRight(0.25)
->setLeft(0.25)
->setBottom(0.25);
$worksheet->getStyle('A1:H'.(count($items)+1))
->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT);
// set column widths
$worksheet->getColumnDimension('A')->setWidth($cell_width);
// add images
foreach ($items as $index => $item) {
$i = ($index+2);
// set row height
$worksheet->getRowDimension($i)->setRowHeight($cell_height);
// add image
if (! empty($item['image'])) {
$response = file_get_contents($item['image'], false, stream_context_create($stream_args));
$gdImage = imagecreatefromstring($response);
if ($gdImage) {
$drawing = new MemoryDrawing();
$drawing
->setName($item['name'])
->setDescription($item['name'])
->setCoordinates('A'.$i)
->setImageResource($gdImage)
->setRenderingFunction(MemoryDrawing::RENDERING_JPEG)
->setMimeType(MemoryDrawing::MIMETYPE_DEFAULT)
->setHeight($img_height)
->setWorksheet($worksheet);
}
}
}
},
];
}
Изображения в сгенерированном PDF отображаются маленькими только на первой странице. Не имеет значения количество изображений на первой странице, они всегда маленькие, на страницах 2 и выше изображения отображаются в кодированном виде.
Я пытался использовать создание загрузки с использованием FromCollection
, FromArray
, FromView
экспортируемых задач.
Мне не удается использовать библиотеку рендеринга MPDF, так как я достиг предела pcre.backtrace, и библиотека TCPDF не может экспортировать что-либо.
Используются версии;
"maatwebsite/excel": "3.1.3"
"dompdf/dompdf": "^0.8.3"