【问题标题】:PDF file cannot be openedPDF 文件无法打开
【发布时间】:2016-02-01 08:56:33
【问题描述】:

我想在我的 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。这怎么可能?

【问题讨论】:

    标签: php symfony pdf fpdf fpdi


    【解决方案1】:

    这一定是权限问题。错误消息是由于 fopen() 调用完全失败而引发的。所以你可以尝试通过一些file_exists()is_readable() 调用来调试它。

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

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

    否则 FPDF 将发送似乎不是您计划的文档和标题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多