繁体   English   中英

在用户桌面上动态创建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,但是我找不到文件! 请问最好的前进方向是什么?

谢谢 :)

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

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

示例:

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 applet或flash应用程序,它们可以访问你的本地文件系统。 它可以从服务器加载文档并保存到本地文件系统而无需重新加载页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM