【问题标题】:Export more than one pdf generated one the fly as zip using the symfony framework使用 symfony 框架将多个生成的 pdf 导出为 zip
【发布时间】:2010-10-19 20:21:35
【问题描述】:

我目前正在开发一个 symfony 应用程序,它需要能够将一些文档输出为 pdf,使用 TCPDF 完全没有问题。

我现在尝试做的是生成一个 zip 文件,其中包含一个或多个动态生成的 pdf。我基本上做的是(使用 php 的)zip 库:

1.) 创建一个新的 zip 存档。 2.) 添加所有 PDF 3.) 输出生成的zip。

奇怪的是,当在不同的服务器上使用一些演示 pdf 时,这可以工作。但是,当我尝试导出自己的文档(由 url 指定,例如 url_dor('documents/pdf?id/1') )时,页面只会一直加载,直到达到最大时间...

说实话,我完全不知道为什么这不起作用。非常感谢任何帮助!

【问题讨论】:

    标签: pdf symfony1 zip


    【解决方案1】:

    压缩 pdf(或任何文件)所需的时间会因这些 PDF 的大小和数量而异。所以你应该问的第一个问题是处理这些需要多长时间?

    【讨论】:

    • 好吧,一个 pdf 的加载速度非常快,而且不会特别长或其他任何东西。除此之外,我正在测试这个只添加一个文档到存档,所以时间不应该是一个问题......
    • 并且在使用除 symfony 创建的 PDF 之外的任何 pdf 时,它都能完美运行...
    【解决方案2】:

    在测试时尝试使用非常小的 PDF 文件,如果仍然存在问题,请将 PHP 超时变量设置得更高以运行测试。

    【讨论】:

      【解决方案3】:

      这是我在动作类中的代码:

      $this->setLayout(false);
      $tmpFileName = tempnam("/tmp", "some_prefix_");
      $zip = new ZipArchive();
      $zip->open($tmpFileName, ZipArchive::CREATE);
      foreach ($files as $file) {
          $real_file = $file->getAbsoluteFilePath();
          $zip->addFile($real_file, 'sub_folder_name/' . $file->getTitle() . '.pdf');
      }
      $zip->close();
      $this->getResponse()->clearHttpHeaders();
      $this->getResponse()->setContent(file_get_contents($tmpFileName));
      unlink($tmpFileName);
      $this->getResponse()->setHttpHeader('Content-Type', 'application/zip');
      $this->getResponse()->setHttpHeader('Content-Disposition', 'attachment; filename=archive_name.zip');
      return sfView::NONE;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-27
        • 2014-06-25
        • 2010-11-07
        • 2014-05-17
        • 1970-01-01
        • 2020-12-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多