我有一个基于 J2EE 的 Web 应用程序,在其中单击一个按钮我需要从 Java 创建一个 word 文件。我希望能够将打印命令发送到该文件,以便在用户无需打开文档并手动执行的情况下打印该文件。
谁能告诉我这是否可行,如果可以,如何进行?
我有一个基于 J2EE 的 Web 应用程序,在其中单击一个按钮我需要从 Java 创建一个 word 文件。我希望能够将打印命令发送到该文件,以便在用户无需打开文档并手动执行的情况下打印该文件。
谁能告诉我这是否可行,如果可以,如何进行?
生成文件很容易。看看Apache POI,一个访问 Microsoft 格式文件的 Java API。该网站有很多例子。
关于打印它,我真的不知道这是否可能。我认为您总是需要在客户端打开它才能打印它。
您必须创建一个 ActiveX 来加载文档内容并触发打印命令。没有其他方法可以在客户端计算机中打开文件并触发命令。
编辑:如果你可以使用 HTML,你可以这样做
<script>
function load() {
window.print();
window.close();
}
</script>
和
<body onLoad="load()" ...>
在弹出窗口中打开文档并打印。然后关闭弹出窗口。
您可以使用只有 2 行的简单AutoIt代码。并完成您的工作,在您的程序中执行该代码文件。
http://www.autoitscript.com/site/autoit/
像这样的代码:
$sRTFfilename = "C:\t\t.rtf" ;Change this path to one of your own
ShellExecute('"' & $sRTFfilename & '"', "", @ScriptDir, "print", @SW_HIDE)
;-)
当您特别提到 Java 作为您的环境时,您可能希望将 OpenOffice 或 StarOffice 考虑在内 - 它们有一个 API,它比 ActiveX 或远程控制 Word 更容易通过 Java 进行对话。
它并不比 Word 更重量级。参考资料和文档应该很容易找到。
我在一家公司工作过,我们经常使用 Remote-controlled-Word,最后改用 StarOffice。这不是用于打印,而是用于文档转换(例如从 Word 到 HTML),但应该足够相似。
当然,我说的是“旧版本的 Word”,但我们通常会遇到 Word 锁定的问题,其中一些任意对话框要求确认 Word 找到的任何内容 - 我们的服务器(在后台运行,没有桌面联系人)显然是一项操作没能。改用 StarSuite 后情况好多了。
是否可以改为以 HTML 格式呈现文档?如果你能做到这一点,那么你就可以相当简单地允许用户通过浏览器进行打印。您可能还可以更轻松地使用 PDF,至少它会更容易跨不同平台访问。
如果你被迫使用 MS Word,那么你能做的将非常有限。正如Leonel所提到的,我认为 ActiveX 将是您唯一的选择,即使那样必须打开文档,您也可以从浏览器自动启动 Word。您甚至可以通过 ActiveX 将 Word 的实例嵌入到 IE 中,但我不能 100% 确定这一点。