在C++中用ActiveX控件显示PDF文件

PDF介绍

PDF是“Portable Document Format 可移植文档格式”的缩写,它是Adobe公司开发的一种电子文档格式,已经成为国际通用的电子文档交换事实标准。PDF文件可以在各种平台下阅读、编辑、发布。该文件格式支持字体、图像、甚至任何附件的嵌入。

Adobe公司提供了两种软件用于处理PDF文档,分别是Acrobat及Acrobat Reader:前者功能强大,不仅能阅读,还可以创建或编辑PDF文档,但要收费;后者只具备阅读功能,为免费软件。

用ActiveX控件显示PDF文件

Acrobat(Reader)提供了一个ActiveX控件pdf.ocx(7.x版本为AcroPDF.dll),可以在用户程序中实现PDF文件的显示。对于老版本的软件(4.x及以前的版本),只需按照ActiveX控件的标准编程步骤即可:

(1)把控件pdf.ocx加入VC项目,并生成控件类

(2)把控件放置在对话框上,或者调用控件类的成员函数Create创建控件对象

(3)调用控件的属性或方法打开PDF文件

由于这不属于本文要讨论的内容,详情请参考《Visual C++技术内幕》中“使用ActiveX控件”一章,这里不再赘述。

但是对于新版软件(5.x/6.x/7.x),上述方法不再适用:新版控件不是一个完整意义上的ActiveX控件,它缺少生成控件类所必需的类型库信息,无法把控件加入VC项目。

在这种情况下,需要调用函数CWnd::CreateControl来创建控件对象,然后获取控件的IDispatch接口指针,通过该指针访问控件的属性及方法。

直接用IDispatch指针调用控件的属性及方法是一件极其繁琐的工作,好在新版软件提供了类型库,可以用它生成一个自动化组件驱动类(从COleDispatchDriver派生)。借助该类,可以大大简化对控件属性及方法的调用。

虽然可以用控件显示PDF文件,但它只是一个代理,真正的工作还是由Acrobat(Reader)完成的,因此必须安装这两种软件中的一个。

时间: 2024-12-01 10:01:19

在C++中用ActiveX控件显示PDF文件的相关文章

pdf在线阅读-C# axAcroPDF控件播放PDF文件问题

问题描述 C# axAcroPDF控件播放PDF文件问题 打开本地文件没问题,可以直接浏览,但是打开局域网共享pdf文件时,就无法显示,等了一会儿,以为是加载慢的问题,但是还是无法显示 private void PDFView_Load(object sender EventArgs e) { string fileName = MyOpenFileDialog(); axAcroPDF3.LoadFile(fileName); //axAcroPDF3.LoadFile(""C:Us

用vfp控件显示word文件的方式有哪些?

问题描述 用vfp控件显示word文件的方式有哪些? vfp中显示word文件(要求保留格式,又能在vfp控件中显示),除了webbrowse控件外,还有什么好的办法?求解!

activex-C#开发ActiveX控件调用dll文件时,dll文件放在什么位置,我的出错了

问题描述 C#开发ActiveX控件调用dll文件时,dll文件放在什么位置,我的出错了 通过c#谢了一个很简单的Activex控件,调用dll文件(dll文件是c++写的,并且dll文件不是com组件),在普通的容器中调用动态库都没问题,但是通过activex时就会出错,请问这是问什么,请留言,也可以加我qq:574225218 解决方案 在dll文件中调用VBA的命令 解决方案二: 是在IE中测试出错么?尝试把浏览器的安全等级设置全部调到最低,在客户端安装.net framework并且运行

delphi 用控件打开pdf文件无法读取pdf里的表单信息

问题描述 delphi 用控件打开pdf文件无法读取pdf里的表单信息 我用的delphi7 用的是破解版的foxit_ax_pro.ocx文件版本3.0.1.2506,用OpenFile打开一个包含表单的pdf文件,浏览正常,但用代码访问时出错(下面第二行,FNameMI存在): frm:=FoxitReaderSDK1.GetCurrentForm(); ShowMessage(frm.GetFieldByName('FNameMI').Value) ; 变成无法获取表单信息.另外单独打开该

ActiveX控件调用XML文件的问题

问题描述 我用ActiveX控件想调用XML文件在做安装文件的时候XML文件也放在了客户端,首先要获得XML文件的绝对路径,XML文件安装在默认的安装目录下但是以下方法却获取的是IE浏览器的绝对路径System.Environment.CurrentDirectoryApplication.StartupPath请问有什么办法获取ActiveX的安装目录或者在.NET的安装部署下,设置安装路径,并且用户不能修改,用什么办法来实现呢

在vs2005中用什么控件显示word文档中的内容

问题描述 我想在网页中显示word文档的内容,如果用DataView显示的话,显示出来的文字内容不规则,很乱,我想显示出的效果和word中的一样,我该怎么做呢?而且word文档中的还有表格,请大虾帮帮忙,最好能具体写些代码,做个例子 解决方案 解决方案二:浏览器控件

在winform中用ddvue控件显示dwg图纸以后,怎么解决有些文字不能正常显示的问题

问题描述 求各位大神帮助 解决方案

急!winform使用adobe pdf reader时报错:未能导入activeX控件,请确保它已经正确注册

问题描述 vs2012环境下使用adobepdfreader,一直报错:未能导入activeX控件.pdf文件单独注册又一直注册不成功.求高人指点! 解决方案 解决方案二:http://blog.csdn.net/wangqiulin123456/article/details/8136399这个文章的意思就是在低版本的VS2005或2008拖控件后,在objDebug里生成.dll文件,然后把拷到vs2010所对应的的相应文件夹下面,然后再添加以下引用就行了.解决方案三:@ajianchina

ActiveX控件实现

本文源码与文档下载 本章目标: 完成本章学习后,您将能够: Ø         了解什么是ActiveX控件 Ø         掌握如何编写基于MFC的ActiveX控件 Ø         掌握如何测试ActiveX控件 Ø         掌握如何测试ActiveX控件 Ø         了解ActiveX控件如何注册 重点:ActiveX控件的实现.测试及注册. 本章将介绍ActiveX控件的应用与工作原理.我们可以把ActiveX控件看做是一个极小的服务器应用程序,它不能独立运行,必