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


Dynamic creation of a doc/docx document on the users desktop

我的网站是HTML/Javascript,AJAX调用服务器端PHP。我想允许用户点击一个图标,从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&2在我的home-dev环境中,但我找不到文件!请问最好的前进道路是什么?

谢谢:)

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

如果你想要一个图标,并且当点击该图标时,它会在不重新加载页面的情况下进行下载,那么你只需要创建一个指向该图标的链接,该链接将指向一个脚本,该脚本将使用适当的标题开始下载。

示例:

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&2在服务器端文件系统中的某个位置创建文档(之后您需要将其传输到客户端)。

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

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