在使用pdflib这个pdf二次开发库的时候,需要将word添加到pdf中,可是pdflib库支持图片和pdf文件的导入,不支持word文件的导入。想到word2007及以上的版本可以直接另存为pdf,所以动了使用word的转换为pdf的念头。开发环境:vs2008+winxp+office 2010

这里写了个测试小程序,下面说介绍下步骤:

1、创建MFC应用程序,默认unicode,无需修改工程类型

2、右键解决方案,添加类,MFC/TypeLib中的MFC类,添加,Microsoft Word 14.0 Object Library<8.5>,接口选择_Application、_Document、Documents,完成。这样就会添加三个头文件,编译一下,有错,注释掉每个头文件的//#import "C:\\Program Files\\Microsoft Office\\Office14\\MSWORD.OLB"

3、另存为pdf的核心代码:

BOOL SaveAsPdf(const CString& InFileName, const CString& OutFileName)
{::CoInitialize(NULL);CApplication TestWordDoc;   //定义一个WORD的应用对象if(!TestWordDoc.CreateDispatch(_T("Word.Application"))) //启动WORD{AfxMessageBox(_T("居然你连OFFICE都没有安装吗?"));return FALSE;}AfxMessageBox(_T("WORD 已经运行启动啦,你可以用Ctrl+Alt+Del查看"));TestWordDoc.put_Visible(VARIANT_TRUE);  //vc10+word07+win7AfxMessageBox(_T("现在你已经看到WORD的程序界面了吧"));//通过WORD宏可以知道,由于要使用Documents,于是我们定义一个并从TestWordDoc中取得CDocuments docs=TestWordDoc.get_Documents();///转换为pdfCComVariant Read(FALSE),AddToR(FALSE),Name(InFileName);CComVariant format(0);        //打开方式 0 为doc的打开方式COleVariant vTrue((short)TRUE), vFalse((short)FALSE);COleVariant varstrNull(_T(""));COleVariant varFalse(short(0),VT_BOOL);COleVariant vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);CDocument0 doc = docs.Open(&Name,varFalse,&Read,&AddToR,vOpt,vOpt,vFalse,vOpt,vOpt,&format,vOpt,vTrue,vOpt,vOpt,vOpt,vOpt);if(!doc.m_lpDispatch){//AfxMessageBox(_T("文件打开失败"));return FALSE;}CComVariant FileName(OutFileName);CComVariant FileFormat(17);doc.SaveAs(&FileName,&FileFormat,&vFalse,varstrNull,&vTrue,varstrNull,&vFalse,&vFalse,&vFalse,&vFalse,&vFalse,&vOpt,&vOpt,&vOpt,&vOpt,&vOpt);//AfxMessageBox(_T("WORD准备要退出啦"));CComVariant SaveChanges(false),OriginalFormat,RouteDocument;    //调用Quit退出WORD应用程序。当然不调用也可以,那样的话WORD还在运行着那TestWordDoc.Quit(&SaveChanges,&OriginalFormat,&RouteDocument);doc.ReleaseDispatch();docs.ReleaseDispatch();TestWordDoc.ReleaseDispatch(); //释放对象指针。切记,必须调用CoUninitialize();return TRUE;
}

4、现将测试程序以及所下载的参考文档,上传到CSDN: http://download.csdn.net/detail/jsjrj01/5783065

vs2008完整工程、VC++2010操作Word2010.docx、win7下VC10操作Wor07教程.docx

5、 上面的生成的3个头文件,可以添加到别的MFC工程,无需上面添加操作,下面的文献中有个封装WORD操作的。另外要提的是,这只是VS操作word的一种方式,直接使用COM方法也是可以的,最后两个微软文献,就说明了这点。

6、参考资料:

http://wenku.baidu.com/view/fc774ef1941ea76e58fa0492.html

http://blog.csdn.net/xiangjianbo127/article/details/8610413

http://www.360doc.com/content/11/1103/16/7992306_161389140.shtml

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word._document.saveas(v=office.14).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

http://msdn.microsoft.com/en-us/library/microsoft.office.tools.word.document.saveas(v=vs.90).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

欢迎,留言,拍砖。。。

C++ 讨论群:506八 790五

VS2008操作Word2007 2010保存为PDF相关推荐

  1. python操作图片批量保存成PDF文件

    有个脚本需求: 就是把一个一个图片获取下来,并把图片拼接成一个PDF文档. 代码如下: # -*- coding: utf-8 -*- """ Created on Mo ...

  2. [Office 2010 易宝典]怎样直接将Office文档保存为PDF格式?

    大致内容 如何将Office文档保存问PDF格式: 通过菜单点击的方式把Microsoft Word文档另存为PDF文档. 操作步骤 1.点击"文件"菜单. 2.点击"另 ...

  3. CAD图纸编辑完成后保存成PDF格式怎么操作?

    平时在我们对CAD图纸的绘制过程中,经常需要对CAD图纸的格式进行转换,因为CAD格式的图纸在一般常见的看图软件中是无法打开的,需要在特定的环境中才可以打开,这就需要我们在图纸绘制完成后保存为易于查看 ...

  4. 计算机一级保存文件,计算机等级一级技巧:Word文档保存为PDF文件

    全国计算机等级考试(National Computer Rank Examination,简称NCRE)是由国家教育部考试中心主办,面向社会,用于考查应试人员计算机操作.理论应用知识与技能的全国性计算 ...

  5. 使用JavaScript将当前页面保存成PDF,支持图片和文字的保存

    前端开发的朋友们可能会遇到这个需求:将您负责开发的网页的全部内容,包括文字和图片,一起保存成一个PDF文件.如果采用屏幕截图的话,默认Windows操作系统的截图按钮无法完整截取超过一屏幕的屏幕内容. ...

  6. 爬取某位大佬简书上所有文章并保存为pdf

    点击上方"AirPython",选择"置顶公众号" 第一时间获取 Python 技术干货! 阅读文本大概需要 8 分钟. 1 目 标 场 景 现如今,我们处于一 ...

  7. CAD图纸怎么保存为PDF?几个步骤轻松掌握

    最近有个学习CAD画图的小伙伴咨询,平时设计出来的图纸都是直接保存下来的,格式都是默认的CAD文件格式.平时习惯将保存下来的图纸文件直接传输到手机上,但是在手机上没有CAD查阅工具就不能直接打开查看了 ...

  8. 关于poi操作word,word转换pdf预览,这边文章就够了

    最近公司一个项目中需要导出一个简历word版,对于实习生的我开始是无从下手的,后来通过搜索发现可以使用poi来操作. 话不多说,先引入依赖 <dependency><groupId& ...

  9. 如何在电脑/手机上将JPEG图片保存为PDF?

    文章来源:https://www.reneelab.com.cn/convert-jpeg-to-pdf.html 目录 一.JPEG与PDF 二.如何在计算机上将JPEG图片转PDF 1.使用都叫兽 ...

最新文章

  1. Docker入门六部曲——Stack
  2. IBM中国CTO程静:现代CTO是怎样炼成的
  3. 新版刷卡_有信用卡的注意了,新版征信即将上线,以后刷卡消费要当心了!
  4. GUI动画演示java_java – 使用JFrame的简单GUI动画
  5. 0224 2101循环笔记
  6. java list填入table_JavaFX从ObservableList填充TableView
  7. tensorflow 提示没有models库
  8. php网站后台修改主页,织梦网站后台主页页面修改
  9. va start linux头文件,va_start/va_end函数-linux
  10. 80c51单片机c语言程序,80C51单片机电子钟程序
  11. 邮件发送错了怎么办?TOM VIP邮箱如何撤回邮件
  12. linux运行office2016,CrossOver 17让您可以在Linux上安装Microsoft Office 2016
  13. 玩转无线路由之DD-WRT基础扫盲
  14. cocos shader 之 黑白滤镜
  15. layui tab用法大全,一键复制粘贴即可使用
  16. 热部署与定时任务冲突问题解决方案
  17. 近期一个称重设备微信端开发前端知识点,及使用插件遇到的常见问题
  18. 天润融通牵手葵网新保险电销青睐云呼叫
  19. 独家 度小满教育、医美分期不做直营了
  20. 雷电模拟器一直android正在启动,雷电模拟器启动失败卡在0-29%怎么解决 加载卡0-29%教程...

热门文章

  1. STL map使用
  2. 通达信数据接口可以获取股票行情
  3. 《科学美国人》杂志免费下载了
  4. iOS汇编基础(二)寄存器
  5. 安装了一个更好的抓图工具
  6. 机器学习系列|基于随机森林的生存分析模型-R实战
  7. python实现单机斗地主_随便写Python实现斗地主
  8. DIY XILINX 下载器
  9. 成为项目经理需要什么证书?你知道吗?
  10. composer 多版本切换