Невозможно отображать символы, отличные от ANSI, в PDF с помощью DOMPDF.Php

Кемеровские программисты php общаются здесь
Ответить
Гость
 Невозможно отображать символы, отличные от ANSI, в PDF с помощью DOMPDF.

Сообщение Гость »

Я пытаюсь создать PDF-файл с использованием DOMPDF в Pimcore, функциональность которого работает абсолютно нормально, но у меня возникают проблемы при попытке включить в PDF-файл символы, отличные от ANSI, такие как тайские, корейские, китайские символы. Либо они преобразуются в вопросительные знаки, либо возвращаются поля Squere.
Вот код, который я использую.

Код: Выделить всё

    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');
}

}
Вот пример HTML, который я использую:

Код: Выделить всё











/** 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»