PDF文件无法打开

时间:2016-02-01 08:56:33

标签: php symfony pdf fpdf fpdi

我想在Symfony 2项目中打开一个PDF文件,并使用FPDI操作该文件。但是,该文件似乎无法读取。

我的代码来了:

 public function myPpfFunction()
    {
        $fileLocator = $this->container->get('file_locator');
        $pathTestfile = $fileLocator->locate('@MyBundle/Resources/public/pdf/test.pdf');

        $pdf = new \FPDI();
        $pdf->AddPage();
        $pdf->setSourceFile($pathTestfile);
        $tplIdx = $pdf->importPage(1);
        $pdf->useTemplate($tplIdx, 10, 10, 100);

        $pdf->SetFont('Helvetica');
        $pdf->SetTextColor(255, 0, 0);
        $pdf->SetXY(30, 30);
        $pdf->Write(0, 'This is just a simple text');

        return new Response($pdf->Output(), 200, array(
            'Content-Type' => 'application/pdf'));
    }

错误消息:

  

无法打开   /srv/myproject/src/mycompany/mybundle/Resources/public/pdf/test.pdf!

即使我想在没有任何捆绑包的情况下打开pdf,但只需在浏览器中使用BinaryFileResponse类进行查看,我就会收到文件无法读取的消息。路径必须正确,因为使用BinaryFileResponse类我可以在浏览器中成功查看.txt文件,这些文件位于与pdf文件相同的文件夹中。

如何实现pdf的可读性?对于我想要的任何pdf,都会出现此消息。

更新

我发现令人惊讶的是,我可以打开使用 FPDF 捆绑生成的PDF。这怎么可能?

1 个答案:

答案 0 :(得分:1)

这必须是许可问题。由于fopen()调用失败,引发了错误消息。因此,您可以尝试使用file_exists()is_readable()次调用进行调试。

此外,您需要将Output()调用更改为:

return new Response($pdf->Output('S'), 200, array(
        'Content-Type' => 'application/pdf'));

否则FPDF会发送看似不符合您计划的文件和标题。