Вот код, который я использую.
Код: Выделить всё
public function downloadPdfTemplate(Request $request): Response
{
header('Content-Type: text/html; charset=utf-8');
$checkStatus = GeneralHelper::getUserAndRoleFromSession();
$peId = $request && $request->get('id') ? $request->get('id') : 0;
$userLanguage = $request && $request->get('language') ? $request->get('language') : $checkStatus[LANGUAGE];
DataObject\PackagingElement::setHideUnpublished(false);
$peData = DataObject\PackagingElement::getById($peId);
if ($peData) {
$pdfData = PackagingElementService::generatePePdf($peData, $userLanguage, $peId, true);
// Configure Dompdf according to your needs
$pdfOptions = new Options();
$pdfOptions->set('isHtml5ParserEnabled', true);
$pdfOptions->set('isPhpEnabled', true);
$pdfOptions->set('isFontSubsettingEnabled', true);
$pdfOptions->set('isRemoteEnabled', true);
$fontPath = PIMCORE_PROJECT_ROOT.'/public/bundles/frontend/css/fonts/NotoSansThai.ttf'; // Update the path accordingly
$pdfOptions->setFontDir(PIMCORE_PROJECT_ROOT . '/public/bundles/frontend/css/fonts/');
$fileContents = file_get_contents($fontPath);
$html = $this->renderView('@Frontend/packingElements/model/download-pdf-template.html.twig', $pdfData);
$dompdf = new Dompdf($pdfOptions);
$canvas = new CPDF([0, 0, 200, 200], "portrait", $dompdf);
$fontMetrics = new FontMetrics($canvas,$pdfOptions);
$fontMetrics->registerFont(['family'=>'Noto Sans Thai', 'style'=>'normal', 'weight'=>'normal'],
$fontPath);
$dompdf->setFontMetrics($fontMetrics);
$dompdf->loadHtml($html,'UTF-8');
$dompdf->render();
$output = $dompdf->output();
$pdfagicode = $pdfData['agiCode'];
$globdesc = $pdfData['globalDescription'];
$gd = GeneralHelper::replaceSpecialCharacters($globdesc);
$pdfFilepath = $folderName . '/PE_' . $pdfagicode . '_' . $gd . '.pdf';
file_put_contents($pdfFilepath, $output);
// Output the generated PDF to Browser (force download)
$dompdf->stream('PE_' . $pdfagicode . '_' . $gd . '.pdf', [
'Attachment' => true,
]);
unlink($pdfFilepath);
} else {
return $this->redirect('/packaging-element');
}
}
Код: Выделить всё
/** Define now the real margins of every page in the PDF **/
body {
margin-top: 4cm;
margin-left: 0.5cm;
margin-right: 0.5cm;
margin-bottom: 1.8cm;
border-top: 1px solid #a0a0a0 !important;
font-family: 'Noto Sans HK', 'Noto Sans JP', 'Noto Sans KR', 'Noto Sans SC', 'Noto Sans TC', 'Noto Sans Thai','Noto Sans Tai Viet', DejaVu Sans, sans-serif
}
Thai text สวัสดี
Также, если возможно, добавьте решение для корейского, китайского, японского, вьетнамского языков. .
Подробнее здесь: https://stackoverflow.com/questions/781 ... ing-dompdf