最近同事提出问题,在我来此公司之前,他们为客户做过一个打印管理系统,业务是这样的,需要打印的人员,需要先将打印的内容上传到服务器上,然后进行打印的申请,然后领导审批完成,可以进行打印,打印需要到专门的打印控制台,进行刷卡身份认证,然后就能看到被批复的那条可以打印的信息,以及需要被打印的文件,这个文件支持三种类型,word,excel,pdf。之前他们实现的时候,将word,excel全都转换成了pdf,然后统一使用pdf的静默打印,进行打印工作处理。然后如果待打印的文件不算小,那么转换成pdf这一过程是个不小的开销,果然,一天,同事来说,客户打印一个48页的word文档,后台转换程序死在那了。。。。。我问了她一下,为什么不直接打印,为什么要转换成pdf呢(之前的系统是C#的代码,其实可以直接操作word API进行打印控制)她说,之前也是直接打印,但是客户的一个word文档,内容有超出页边距的,打印的过程中,会弹出提示,问:页面超出页边距,是否要继续打印。这样的提示,无法去掉,需要人工进行干预才可以。 我这才明白原来是这样,其实也就是以前的开发人员,没有找到去掉word打印提示框的办法。或者说,并没有仔细的去研究。而放弃了,选择了一个不太明智的办法,转换成pdf。 我先是百度了一下,果然一百度就找到了相对应的帖子,按照帖子的说法,主要在于word的application对象的DisplayAlerts属性。这个属性为false就不会有弹出的任何提示,警告框,嗯,看这个属性的字面意思也是这个作用,于是,编写测试代码,验证一下,我对C#环境不熟悉,于是直接文本写VBS,其实一样的,只要VBS能干的事情,C#也好,C++也好,都能干,都是调的COM组件而已,下面是测试代码:

  1. printWord()
  2. Private sub printWord()
  3. Set wordObject = CreateObject("Word.Application")
  4. wordObject.Visible = False
  5. Set wordDocument = wordObject.Documents.Open("E:\超出打印区域.doc")
  6. wordObject.WordBasic.FilePrintSetup "778", 0
  7. wordObject.DisplayAlerts = False
  8. wordObject.PrintOut()
  9. wordObject.DisplayAlerts = True
  10. wordDocument.close
  11. set wordDocument = Nothing
  12. wordObject.Visible = True
  13. wordObject.Quit
  14. set wordObject = Nothing
  15. end Sub

将上面代码保存成后缀.vbs的文件,直接双击运行,得到以下效果:

很明显,wordObject.DisplayAlerts = False 没有达到预期效果。仔细查看msdn,找到下面这个链接:http://support.microsoft.com/kb/163574/zh-cn 上面写的很清楚,最重点的一句话:要防止出现边距错误,您必须禁用后台打印之前发出的命令,可在打印文档。要打印的命令完成后,您可以重新启用后台打印。增加禁用后台打印的代码:

  1. printWord()
  2. Private sub printWord()
  3. Set wordObject = CreateObject("Word.Application")
  4. wordObject.Visible = False
  5. Set wordDocument = wordObject.Documents.Open("E:\超出打印区域.doc")
  6. wordObject.WordBasic.FilePrintSetup "778", 0
  7. wordObject.Options.PrintBackground = False
  8. wordObject.DisplayAlerts = False
  9. wordObject.PrintOut()
  10. wordObject.DisplayAlerts = True
  11. wordObject.Options.PrintBackground = True
  12. wordDocument.close
  13. set wordDocument = Nothing
  14. wordObject.Visible = True
  15. wordObject.Quit
  16. set wordObject = Nothing
  17. end Sub

重点就是wordObject.Options.PrintBackground = False,也就是说只有在这句代码生效之后,wordObject.DisplayAlerts = False的作用才会对‘要防止出现边距错误’这个提示起作用。

转载于:https://blog.51cto.com/zhangtao911/1004707

程序控制打印word文档超出页边距的问题相关推荐

  1. Poi 操作Word文档设置页边距 解决CTPageMar类找不到

    Poi操作Word文档设置页边距 CTPageMar类找不到 已解决 在百度上搜了一顿,找到了相关的解决方案,但是缺失了一个类,在百度怎么也找不到! 给大家一个参考数据 1厘米≈567 CTSectP ...

  2. [办公软件word] 怎么逆序打印Word文档?逆序打印Word文档技巧

    转载请说明来源于"厦门SEO" 本文地址:http://www.96096.cc/Article/160970.html 办公软件word 大多数人在使用Word文档的时候都是只会 ...

  3. 为什么打印还要另存为_为什么打印机要打印Word文档的时候要出现另存为? 爱普生的...

    您好,发送打印命令后,打印机可以正62616964757a686964616fe4b893e5b19e31333337376434常进纸且打印动作正常,此时打印空白页或白色横纹,均是因为喷嘴堵塞造成, ...

  4. [实用][更新中]Java Apache POI 打印Word文档工具(含文本替换,动态表格功能)

    [实用][更新中]Java Apache POI 打印Word文档工具(含文本替换,动态表格功能) 基于Apache POI对Word进行操作 一.基于Apache POI封装的word文档工具V1. ...

  5. java jar 打印_Java 打印Word文档(二)

    通过使用Sprie.Doc for Java提供的PrinterSettings类可执行文档打印,具体可参见这篇文章中关于 使用 PrinterSettings来打印的方法.本文中将介绍使用Spire ...

  6. vue 打印 word文档的一些探索

    打印 Word 文档的一些探索 在开发中,我们经常会遇到需要将 Word 文档打印出来的需求.但是,由于浏览器对 Word 文档格式的支持不完善,因此打印 Word 文档这件事情就变得很麻烦.下面,我 ...

  7. java word打印_如何通过Java打印Word文档

    本文将介绍如何使用Java程序来打印Word文档.打印可分为两种方式:一是打印到物理打印机:二是打印到虚拟打印机. 使用工具:Spire.Doc for Java 测试环境: ●Intellij Id ...

  8. java打印word_Java jacob调用打印机打印word文档

    前面说了Java如何生成复杂的Word文档,今年记录下Java如何调用打印机打印word文档. 起初用的是自带的PrintJob,但是系统提供的打印机制并不成熟完整.网上的代码也是千篇一律,在我的打印 ...

  9. java poi打印word_Java 打印Word文档

    本文介绍如何在Java程序中通过物理打印机和虚拟打印机来打印Word文档的方法.文中使用了类库Spire.Doc for Java,可通过官网下载jar文件并导入程序或者直接通过maven仓库安装导入 ...

最新文章

  1. 【源码分析】极验验证官方SDK源码分析和实现思路
  2. sync是同步还是非同步_MySQL半同步复制你可能没有注意的点
  3. 安装php出现 “make: *** [ext/gd/libgd/gd_jpeg.lo] Error ”
  4. ajax 延迟显示加载中提示
  5. 最新综述:从多个角度介绍多模态对话信息搜索(MMCIS)任务
  6. 程序员面试金典——番外篇之下一个较大元素I
  7. Git 及 GitHub实用教程
  8. winrar加密分析
  9. 【翻译】CVPR2022: Pyramid Grafting Network for One-Stage High ResolutionSaliency Detection
  10. php防止恶意注册,WordPress防恶意注册-添加验证码功能 | 逗哥-架构师之路
  11. 【详解】jupyter 如何添加文字标题
  12. 【网络工程师配置篇】——OSPF汇总配置!
  13. MySQL 1054错误 Unknown column .... in 'on clause'
  14. 成功解决tensorflow.python.framework.errors_impl.InvalidArgumentError报错问题
  15. js对div取值与赋值
  16. echars省份地图(安徽地图地图加散点图)亮点展示
  17. 聚类算法中 K均值聚类(KMeans)的python实现
  18. Win11系统找不到dll文件怎么修复
  19. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第30讲:PHP多维数组
  20. 工业PDA的价格由哪些因素决定

热门文章

  1. qborn推出支持苹果Find My功能婴儿车,开启智能“遛娃”时代
  2. 日语音频转换成日文怎么弄?这几款软件轻松实现
  3. 【TL8266】向蓝牙模块发送AT指令的APP
  4. 用python画大白_Python turtle 画个大白
  5. html 字段類型控制,db2修改表字段类型
  6. SQL Server数据完整性全包含(用户自定义数据类型、使用规则、解除和删除规则)
  7. 卡西欧科学计算机寿命,卡西欧MTG寿命多少
  8. BAE Systems的空天部门计划采用Simufact 增材制造软件用于金属增材制造-20190328--【金属前沿001】
  9. 我的妈妈是我们家的家庭主妇
  10. 修改PDF中文字好用的软件,PDF编辑软件,adobe acrobat DC安装教程,adobe acrobat DC和 adobe acrobat pro的区别,