在用户桌面上动态创建doc / docx文档

时间:2012-03-12 06:19:46

标签: php javascript desktop docx doc

我的网站是使用AJAX调用服务器端PHP的HTML / Javascript。我希望允许用户单击一个图标并根据MySQL数据创建报告,然后将其保存在客户端的桌面,而不用进行页面重新加载。

我可以收集创建文档的选项,如下所示。 (我认为它需要在服务器端完成,而不是使用Javascript。)我不确定文件在每种情况下的结束位置。请随时纠正我的误解:)

方法1 - 仅在创建.doc文件时出现。我不确定文件放在哪里。

$fp = fopen("method1.doc", 'w+');
$str = "<B>This is the text for the word file created through php programming</B>";
fwrite($fp, $str);
fclose($fp);

方法2 - 这似乎也会创建一个.doc文件。

$word = new COM("word.application") or die ("couldnt create an instance of word");
echo "loaded , word version{$word->version}";
$word->visible = 1;
$word->Documents->Add();
$word->Selection->TypeText("Sample text.");
$word->Documents[1]->SaveAs("method2.doc");
$word->Quit();
$word->Release();
$word = null;

方法3 - 我认为也是.doc文件。

header('Content-type: application/vnd.ms-word');
header("Content-Disposition: attachment;Filename=method3.doc");

echo "<html>";
echo "<body>";
echo "<b>My first document</b>";
echo "</body>";
echo "</html>";

方法4 - PHPWord

方法5 - PHPDocx

我测试了1&amp; 2在我家的开发环境中,但我找不到文件!请问最好的前进方向是什么?

谢谢:)

顺便说一句,我知道有相关的帖子hereherehere,但没有人真正回答这个问题。

2 个答案:

答案 0 :(得分:2)

如果你想要一个图标,当点击图标时,它会在没有页面重新加载的情况下进行下载,那么你只需要创建一个图标链接,该图标会带来一个使用相应标题开始下载的脚本。

示例:

header ('Pragma: no-cache');
header('Content-Disposition: attachment; filename="'.$File.'"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: public');
header('Content-Description: File Transfer'); 
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.$Len);

执行此操作后,将开始下载,但用户点击的页面不会更改,也不会重新加载。

如果要生成要下载的动态DOCX文件,建议您使用OpenTBS。该库可以使用模板生成DOCX(和XLSX,PPTX,ODT,ODS ......)。它有一个功能,可以让你直接发送结果作为下载,没有临时文件,或者让你保存在服务器端。

答案 1 :(得分:1)

方法1&amp; 2在文件系统中的某个位置创建服务器端的文档(之后需要将其传输到客户端)。

方法3创建文档作为对客户端请求的响应 - 根据设置,浏览器将保存或在窗口中打开(或询问“保存/打开/取消?”)。

我个人会制作java applet或flash应用程序,它们可以访问你的本地文件系统。它可以从服务器加载文档并保存到本地文件系统而无需重新加载页面。