【问题标题】:PHP(Zend) & Smarty - problems generating .doc file and http headersPHP(Zend) & Smarty - 生成 .doc 文件和 http 头的问题
【发布时间】:2011-10-14 09:16:32
【问题描述】:

我在一个项目中使用 Zend 框架和 Smarty 模板生成器,我是这项工作的新手,也是 ZF 和 Smarty 的新手。无论如何,在一个动作中,有一个可点击的链接用于生成 .doc 报告。单击后,它会通过此方法使用HtmlToDoc 类生成一个.doc 文件:

$htmltodoc_instance -> createDoc($body ,
                  'filename.doc',
                   TRUE);  
/* the last parameter TRUE means: download or save the file. it set the HTTP headers 
'Content-type: application/octet-stream' and 'Content-Disposition: attachment; 
 filename="..."', forcing the browser to open a download dialog for filename.doc

在此之前,它已经被

渲染为当前动作
 $this -> view -> obj_to_render = $obj_to_render.

obj_to_render 放在视图中,而 $obj_to_render 一般是 Smarty 模板引擎格式化的 html 代码。 我不知道这是否是原因,但似乎这导致了问题:.doc 下载对话框的标题以某种方式被视图渲染的下一个标题“覆盖”,因此 .doc 文件的输出不成功.我试图在 createDoc() 方法调用之后放置一个 exit(),但它确实有很大帮助。输出不同,但它仍然不显示我需要的信息。有人知道如何划分这两个操作然后获得正确的文件输出吗? 谢谢!

【问题讨论】:

    标签: php zend-framework http-headers content-type httpresponse


    【解决方案1】:
    public function h2dAction()
    {
        $content = '<strong>wow! it\'s alive!</strong>';
    
        $htmltodoc = new HTML_TO_DOC();
        $htmltodoc->docFile = 'wow.doc';
        @$htmltodoc->createDoc($content, $htmltodoc->docFile, true);
        die;
    }
    

    GDocs 可以很好地处理这个文件。无法在 MS Word 上测试,我没有 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-15
      • 1970-01-01
      • 2019-02-24
      • 2011-07-18
      • 2010-10-10
      • 1970-01-01
      • 2014-03-21
      相关资源
      最近更新 更多