通过VC实现word文档预览功能,即仅让浏览,不让复制、编辑和保存。

总体思路是:先调用office的ole接口,将word文档转换为pdf;再利用swtools将pdf转换为swf;最后利用VC自带的activeX控件shockwaveflash object(flash.ocx)来播放swf。

转换的过程稍微有一点点延迟,最后的浏览效果还是可以的。

之所以要这么转来转去的原因在于:

(1)在网上没有找到officeole接口的介绍,不知道能不能直接实现打开word文档禁止复制、编辑和保存,更不知道如何做;

(2)在网上找到了一个CPdf类可以在将Pdf播放器嵌入VC中,但是它需要安装adobeacrobat(或adobe acrobat reader)并且将它们的全部菜单都集成进来了,无法对其进行修改;

(3)网上面有人说类似百度文库的预览效果都是通过转换为flash实现的,于是研究了一下flash的实现效果,发现可行。但是在网上没有找到能够直接从word转换为swf的工具(也没有深入去找),找到了SWFTools,免费、体积很小,但只能实现pdf、jpg等少数几种格式的转换。

结合以上几点,最终形成了本文这种稍微有点繁琐的转换方案。

下面详细介绍一下实现过程(本文的编程环境为vs2003.net):

(一)利用office的ole接口实现word转pdf

(1)在类视图中点击鼠标右键,选择添加类。

(2)在弹出的“添加类”对话框中选择“类型库中的MFC类”

(3)点击“打开”,在弹出的“从类型库添加类向导”对话框中,选择“文件”,点击“位置”后的“…”按钮选择文件路径。

(4)选择MSWORD.OLB路径。我的环境是WinXP,office2010,对应的路径是:C:\ProgramFiles\Microsoft Office\Office14。

(5)在“从类型库添加类向导”对话框中,选中_Application、_Document和Documents接口,点击“>”按钮,生成CApplication、CDocument0和CDocuments类。点击完成,至此office的ole接口导入完成。

(6)编写转换代码

首先,在stdafx.h中添加对前述几个类的声明:

其次,在Capp类中添加启动ole服务的代码:

最后,在功能函数里添加如下转换代码:

至此,已经实现了word文档转换为pdf。

(二)利用SWFTools将pdf转换为swf

搜狗百科对SWFTools的介绍:SWFTools是一种实用工具与AdobeFlash文件(SWF文件)工作的集合。该工具集包括用于阅读的SWF文件,结合他们,和他们建立从其他内容(如图像,声音文件,视频或源代码)程序。 SWFTools是在GPL下发布的。

下载地址为:http://www.pc6.com/softview/SoftView_51612.html

它是一个软件合集,里面有jpg、avi、pdf等好几种格式转换为swf的工具,总共的体积容量为13.9M。实际上,我们只需要里面的pdf2swf.exe这个小软件,其大小为6.3M,位置在SWFTools的安装路径下(本文的路径为C:\ProgramFiles\SWFTools\pdf2swf.exe)。

调用pdf2swf实现pdf向swf转换的功能代码如下:

注意,由于Program Files文件夹名中有空格,WinExec命令不能识别,故将pdf2swf.exe文件拷贝到了C:\WINDOWS目录下了。

至此,实现了pdf向swf的转换。

(三)swf的显示

(1)插入一个对话框,专门用来显示文档的浏览效果。删除对话框上的所有控件。再对话框上点击鼠标右键,选择“插入ActiveX控件”。

(2)在弹出的“插入ActiveX控件”对话框中,选择“ShockwaveFlash Object”控件。该控件是VS2003.net自带的,在VC6.0中也有。添加控件后,调整控件尺寸。

(3)在ShockwaveFlash Object控件上点击鼠标右键,选择添加变量,添加一个m_flashPlayer变量。点击确定后,IDE自动生成一个CShockwaveflash1类。它对应一个.h和一个.cpp文件。

(4)添加显示swf文件的功能代码

至此,显示swf的功能实现了。

IDE生成的CShockwaveflash1类开放了全部的消息映射接口,用户可以完全自主地对其进行修改调整,比如禁用右键菜单、自定义右键菜单、设置播放模式等等等等。这也是为什么选择转换为swf格式进行显示的一个重要原因。

(完)

利用VC实现Word预览功能相关推荐

  1. JS - 实现word预览功能

    前端实现word预览功能 一. 文档地址要求 二. 调用方法 1. html方式 2. script方式 XDOC文档预览云服务:http://view.xdocin.com/ 重要的事情说三遍: 注 ...

  2. word转图片 java_Java 利用LibreOffice将Office文档转换成 PDF,进而转图片,实现在线预览功能...

    项目中需要将 Office 文档上传并实现在线预览,用到了 LibreOffice 将 Office 文档转换为 PDF 文档,然后再用 pdfbox 将 PDF 转为图片. 本文介绍借助 Libre ...

  3. 实现一下类似百度网盘的预览功能:支持Word、Excel、Ppt

    本人技术小白一枚,前些天老大让我写一个office在线预览的一个功能,跟百度网盘类似,各种找资料,总结一下我觉得比较好用的方法. 网上大概有这几种office在线预览的方法. # 第一种 利用offi ...

  4. java 根据预览图片上传_JavaSctit 利用FileReader和滤镜上传图片预览功能

    filereader 对象允许web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 file或 blob对象指定要读取的文件或数据. 1.filereader接口的方法 fi ...

  5. 快速实现word、excel、ppt、txt等办公文件在线预览功能(Java版)

    点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/weixin_40986713/ article/details/109527294 java实现办公文件在线预览功能是一个大家 ...

  6. Java 实现word、excel、ppt、txt等办公文件在线预览功能!

    大家好,我是宝哥! 如何用 Java 实现word.excel.ppt.txt等办公文件在线预览功能?本文告诉你答案! java 实现办公文件在线预览功能是一个大家在工作中也许会遇到的需求,网上些公司 ...

  7. 手把手教你用 Java 实现word、excel、ppt、txt等办公文件在线预览功能!

    如何用 Java 实现word.excel.ppt.txt等办公文件在线预览功能?本文告诉你答案! java 实现办公文件在线预览功能是一个大家在工作中也许会遇到的需求,网上些公司专门提供这样的服务, ...

  8. 前端ppt\word等等文件实现在线预览功能

    前端ppt\word等等文件实现在线预览功能 方法1:https://view.xdocin.com/view?src=你的文档地址 10天免费 方法2:https://view.officeapps ...

  9. 前端【vue】实现文档在线预览功能,在线预览pdf、word、xls、ppt等office文件

    前端江太公 前端实现文档在线预览功能 最直接的就是使用XDOC 文档云服务 XDOC可以实现预览以DataURI表示的DOC文档,此外XDOC还可以实现文本.带参数文本.html文本.json文本.公 ...

最新文章

  1. LightOJ1032 Fast Bit Calculations(数位DP)
  2. 无处不在的智能设备与边缘计算时代即将来临
  3. BZOJ3566 [SHOI2014]概率充电器 (树形DP概率DP)
  4. 我司那产品经理丨第二期
  5. Flex CursorManager
  6. mysql导入多条数据语句_MySQL插入多条记录和REPLACE语句
  7. Django框架——模型(数据库操作)
  8. 在服务器上安装anaconda遇到的问题总结
  9. Nginx原子操作及自旋锁实现
  10. 关于android系统集成其他传感器
  11. android开发GPS定位测试(附效果图和示例)【转】
  12. Affinity Designer 查询面板渐变颜色
  13. [翻译]Visual Odmetry from scratch - A tutorial for beginners
  14. Volley,OkHttp,Retrofit网络请求及封装
  15. 游戏开发中的基本数学与物理
  16. distribute-list分发列表 转自 红茶三杯sina blog
  17. sap批量创建盘点凭证以及盘点凭证过账
  18. 多协议充电桩平台系统小程序方案
  19. 旅游流的概念_国内旅游流综述
  20. 机器学习模型设计准则:“无免费午餐”定理和“奥卡姆剃刀”原则

热门文章

  1. 网络推广如何做? 弋推这里有一份独家秘笈!
  2. VS2015卸载与系统盘扩展
  3. 算法-4-经典算法-汇总(持续更新)-目录呈现
  4. librtmp 源码分析笔记 WriteN
  5. 使用JEECG框架项目在linux 系统下启动及运行缓慢的问题追踪和解决办法
  6. 安装驱动,提示文件找不到 error=2
  7. 纯前端网站的上传(3free免费空间)教程
  8. [附源码]SSM计算机毕业设计同德佳苑物业管理系统论文JAVA
  9. 混合开发Hybrid App有哪些优势和不足?
  10. ipv4 报文格式中文描述