我是laravel的新手,我使用 phpword 编辑word doc文件。
我希望保存后我可以在只读权限中显示它。
我想直接显示而不强制下载。
我尝试了这段代码但强制下载。
这是我的代码:
public function create()
{
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection();
//Ajouter l'image
$section->addImage(
'C:\wamp\www\Stage_2\public\images\mobilis256.png',
array(
'width' => 100,
'height' => 100,
'marginTop' => -1,
'marginLeft' => -1,
'wrappingStyle' => 'behind'
));
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
try {
$objWriter->save(storage_path('helloWorld.docx'));
}catch(Exception $e)
{}
$filename = 'helloWorld.docx';
$path = storage_path($filename);
return Response::make(file_get_contents($path), 200, [
'Content-Type' => 'application/docx',
'Content-Disposition' => 'inline; filename="'.$filename.'"'
]);
}
我也试过
return response()->file(storage_path('helloWorld.docx'));
但总是一样的结果。
我应该怎么做,如何以只读权限显示它?
答案 0 :(得分:1)
我最终得到了解决方案,所以我做的是:
我将文档保存为 html文件,如下所示:
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'HTML');
try {
$objWriter->save(storage_path('helloWorld.html'));
}catch(Exception $e)
{}
然后使用 dompdf : https://github.com/barryvdh/laravel-dompdf我转换html文件 to pdf :
return PDF::loadFile(storage_path('helloWorld.html'))->save(storage_path('helloWorldPdf.html'))->stream('download.pdf');
因此,我可以预览文件而不强制下载,也不会重做工作。
最终代码如下所示:
use PDF;
public function create()
{
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection();
//Ajouter l'image
$section->addImage(
'C:\wamp\www\Stage_2\public\images\mobilis256.png',
array(
'width' => 100,
'height' => 100,
'marginTop' => -1,
'marginLeft' => -1,
'wrappingStyle' => 'behind'
));
// Saving the document as HTML file...
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'HTML');
try {
$objWriter->save(storage_path('helloWorld.html'));
}catch(Exception $e)
{}
return PDF::loadFile(storage_path('helloWorld.html'))->save(storage_path('helloWorldPdf.html'))->stream('download.pdf');
}
如果您想使用 domppdf 进行此转换,请不要这样做:
更新作曲家后,在> bootstrap / app.php
中添加以下行注册提供者
$app->register(\Barryvdh\DomPDF\ServiceProvider::class);
要更改配置,请将配置文件复制到config文件夹,然后在bootstrap / app.php中启用它:
$app->configure('dompdf');
这里说明了你将得到的那种错误。 https://github.com/barryvdh/laravel-dompdf/issues/192