我做了以下简单的 laravel artisan 命令:
Artisan::command('test:pdf',function(){
\PhpOffice\PhpWord\Settings::setPdfRendererName(\PhpOffice\PhpWord\Settings::PDF_RENDERER_DOMPDF);
\PhpOffice\PhpWord\Settings::setPdfRendererPath('.');
$tmpFile = storage_path().'/contracts/test.docx';
$outfile = storage_path().'/contracts/test.pdf';
$phpWord = \PhpOffice\PhpWord\IOFactory::load($tmpFile);
$phpWord->save($outfile,'PDF');
});
它接收 docx 文件并将其转换为 pdf。但出于一个尴尬的原因,docx 包含希腊字母,一旦以 pdf 形式呈现,就会转换为
????
。
那么我有什么想法可以从 docx 保存 pdf 文件并尊重 UTF-8 字符吗?
这是由于 DOMPDF 的限制导致无法渲染希腊语字体。
您可以将所有字体替换为 DejaVu 字体或使用 mpdf。
Artisan::command('test:pdf',function(){
\PhpOffice\PhpWord\Settings::setPdfRendererName(\PhpOffice\PhpWord\Settings::PDF_RENDERER_MPDF);
\PhpOffice\PhpWord\Settings::setPdfRendererPath('.');
$tmpFile = storage_path().'/contracts/test.docx';
$outfile = storage_path().'/contracts/test.pdf';
$phpWord = \PhpOffice\PhpWord\IOFactory::load($tmpFile);
$phpWord->save($outfile,'PDF');
});