史上最强大Java Word文件打印方案

    客户要求Word必须支持高级功能(如支持打印份数、单双面打印),而我们又不能使用第三方插件,开源的包如poi、jacob对word打印的支持实在有些无奈,木有办法,搜索、查阅了无数资料,一直没有好的解决方案。

某日深夜,小手一抖,搜到一终极方案,特此分享:

This is probably not the most efficient method, but it works if you have MS Word. You can use this command to get Word print the file:

start /min winword <filename> /q /n /f /mFilePrint /mFileExit

Replace <filename> with
the filename. It must be enclosed in double-quotation marks if it contains spaces. (e.g. file.rtf"A
File.docx"
)

Here is a Java method and C++ function that takes the filename as an argument and prints the file:

Java

public void printWordFile(String filename){
  System.getRuntime().exec("start /min winword \"" + filename +
    "\" /q /n /f /mFilePrint /mFileExit");
}

C++

//Be sure to #include <string.h>    

void wordprint(char* filename){
  char* command = new char[64 + strlen(filename)];
  strcpy(command, "start /min winword \"");
  strcat(command, filename);
  strcat(command, "\" /q /n /f /mFilePrint /mFileExit");
  system(command);
  delete command;
}

Explanation of switches used

start
/min
 says to run the program that follows minimized. You must do this or Word will stay open after the file is opened.

winword tells
the start program
to run Microsoft Word.

/q tells
Word not to display the splash screen.

/n says
to open a new instance of Word so we don‘t interfere with other files the user has open.

/f says
to open a copy of the file to prevent modification.

/mFilePrint tells
Word to diplay its print dialog so the user can choose which printer they want to use and how many copies, etc.

/mFileExit says
to close as soon as everything else is done. This will not work unless Word is minimized.

原文地址:

http://stackoverflow.com/questions/2446721/how-to-get-print-out-of-a-ms-word-file-from-java-application

时间: 2024-11-13 09:04:31

史上最强大Java Word文件打印方案的相关文章

强烈推荐:Android史上最强大的自定义任务软件Tasker

强烈推荐:Android史上最强大的自定义任务软件Taskerhttp://bbs.mumayi.com/thread-28387-1-1.html(出处: 木蚂蚁手机乐园) Android上的Tasker绝对称得上是Android系统的神器之一,与Auto Memory Manager不同,Tasker不是加速型的软件,而是系统增强型的软件,由于有众多系统状态可控制,故使得Tasker一跃成为Android系统中最闪亮的明星.但Tasker也无疑是最难使用的软件,由于可以控制的地方太多,反而让

VC自绘 史上最强大且精简的记分点名软件

创意.诚意.潜力之作 史上最强大且精简的记分点名软件. 教育专家推荐的课堂软件,当老师的错过了,错过了肯定是您的损失. [一]个性开头白 唐诗.名言.英文.自定义 并可语音朗读出 [二]个性小组名 小组口号 并醒目显示 [三] 完善的积分机制 [四]  QQ管理界面 www.gudianxiaoshuo.com                

史上最强大的 Vim 代码补全引擎:YouCompleteMe

引言 自己之前Vim的代码补全插件都是使用 ctags + autotag + taglist + omnicppcompele 的组合,而且很多时候都没有提示或提示补全,而且每次打开一个新文件文件都需要创建一个 ctag 标签库,代码补全才能正能工作,十分的繁琐蛋疼.当时我就在想,既然源代码都有了,难道就没有一个 Vim 插件能的通过已有的源代码,实时构建语法书来提供代码补全提示吗?通过一番搜索,终于发现了她--YouCompleteMe,看了介绍,我开始迫不及待的试用了,顿时感觉从小米加步枪

成功率“99%”!截止目前史上最强大电信诈骗术

成功率“99%”!截止目前史上最强大电信诈骗术 本文转自:i春秋学院 这是截止目前看到的最强大诈骗手法,也是最有技术含量的诈骗术!比上次见到贿赂高官信封诈骗术不知道高到哪里去了!这骗术一般人最起码98%以上中标!诈骗技术含量实在太高太高!囡囡不得不把@越来越老的来来的经历分享给大家!  (注:大家请看这个短信的抬头,的确是95533,以下同,光就这步,估计很多人就要吓尿了)我们继续看:<ignore_js_op> (这位同学的防诈骗意识还是非常强大的,接下来就恐怖了) (认清电话来源是防止诈骗

JRoll 2 使用文档(史上最强大的下拉刷新,滚动,无限加载插件)

概述 说明 JRoll,一款能滚起上万条数据,具有滑动加速.回弹.缩放.滚动条.滑动事件等功能,兼容CommonJS/AMD/CMD模块规范,开源,免费的轻量级html5滚动插件. JRoll第二版是在JRoll第一版基础上重写JRoll滑动算法,基于时间运动,解决帧频降低时滑动缓慢的问题,更改垂直水平方向判断方法,使捕获垂直水平方向更准确灵敏. JRoll第二版增减了一些api不完全兼容JRoll第一版. 先睹为快 http://www.chjtx.com/JRoll/demos/ 运行示例

史上最全QC学习方案,值得收藏!

Quality Center是一个基于Web的强大的测试管理工具,可以组织和管理应用程序测试流程的所有阶段,**制定测试需求.计划测试.执行测试和跟踪缺陷.此外,通过Quality Center还可以创建报告和图来监控测试流程.合理的使用Quality Center可以提高测试的工作效率,节省时间,起到事半功倍的效果. Quality Center的前身就是大名鼎鼎的TD,也就是TestDirector,所以在很多测试资料中,大家看到的TD资料,其实也可以用作学习QC的参考啦! QC可以说是软件

史上最强大的40多个纯CSS绘制的图形

今天在国外的网站上看到了很多看似简单却又非常强大的纯 CSS 绘制的图形,里面有最简单的矩形.圆形和三角形,也有各种常见的多边形,甚至是阴阳太极和网站小图标,真的非常强大,分享给大家. Square (正方形) #square { width: 100px; height: 100px; background: red; } Rectangle (矩形) #rectangle { width: 200px; height: 100px; background: red; } Circle (圆形

Android之史上最强ListView优化方案

在android开发中Listview是一个很重要的组件,它以列表的形式根据数据的长自适应展示具体内容,用户可以自由的定义listview每一列的布局,但当listview有大量的数据需要加载的时候,会占据大量内存,影响性能. 本文的重点即是从如下几个方面介绍如何对ListView进行优化. 1.convertView重用 Android SDK中这样讲: the old view to reuse, if possible. Note: You should check that this v

可能是史上最强大的js图表库——ECharts带你入门

PS:之前的那篇博客Highcharts——让你的网页上图表画的飞起 ,评论中,花儿笑弯了腰 和 StanZhai 两位仁兄让我试试 ECharts ,去主页看到<Why ECharts ?>简单了解了一下之后,ECharts很快吸引了我.里面引自马云的那句话“互联网还没有搞清楚的时候,移动互联网来了,移动互联没有搞清楚的时候,大数据来了”我是第一次听到,实在震撼了我啊(孤陋寡闻...). 本来没打算写什么的.可是作为一个后端开发者,看了半天文档也迷迷糊糊,查了一堆资料也没搞懂Echarts那