2017-03-31 154 views
0

我在我的Laravel应用程序中具有PDF下载功能。Knp Snappy Pdf generateFromHTML不生成正确文件名的PDF

当PDF文件名是英文时,它可以很好地工作,问题在于其他语言。

$pdf = new Pdf(); 
... 
$pdf->generateFromHtml(View::make('invoices.download'.$preferences->invoice_template, $data), $pdf_file_loc); 
return Response::download($pdf_file_loc); 

在上面的代码中,$pdf_file_loc具有PDF文件的完整路径以及PDF文件名。目前,例如,当文件名为“Förderverein_für.pdf”(德语)时,创建的PDF文件的真实名称是“Frderverein_fr.pdf”。

换句话说,generateFromHtml函数不是用正确的德文文件名创建PDF文件。

但在那之后,由于$pdf_file_loc蕴含着正确的德国名字,它正试图下载未(在return Response::download($pdf_file_loc))存在“Förderverein_für.pdf”文件。

所以它显示一个错误页面,当我尝试下载PDF文件

为PDF文件名包含了我们客户的公司名称这是导致我的实时应用的一个严重问题,它往往是由外语写(不是英文)。

+0

我想如果PDF文件的编码可能有问题,我尝试将编码选项设置为utf8,但它不给我效果。 $ pdf-> setOption('encoding','utf8'); –

+0

PDF是否动态生成?如果是这样,则呈现给用户的文件名不需要与磁盘上的文件相同。事实上,根本不需要成为磁盘上的文件。你会澄清这是如何工作的? – halfer

+1

谢谢,哈尔弗,你对不同文件名的想法给了我线索,我终于解决了我的问题。我正在提供详细的答案。再次感谢。 –

回答

0

由于generateFromHtml函数没有用其他语言(不是英文)创建文件,我没有在文件名中包含其他语言,但在下载文件时尝试用其他语言重置文件名。

因此,现在$pdf_file_loc不包含其他语言,它只在应用商店中以英文存储,但在下载时将其转换为其他语言。

return Response::download($pdf_file_loc, $filename); 

我不认为这是最好的答案,但只要目的是为了获得与其他语言的PDF文件名,这解决了我的问题。