添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Adobe PDF library 包含 APDFL  和DLI  APDFL  为Adobe PDF library ,DLI为Datalogics Interface (DLI) is a trademark of Datalogics Incorporated. Other

products mentioned hereinas Datalogics products are also trademarks or registered trademarks of Datalogics, Incorporated.

Adobe PDF library由 http://www.datalogics.com/ 维护

adobe atcrobat PDF library是一个面向 adobe atcrobat的sdk为adobe PDF library更为高级

adobe 两个pdf库,早其为 PDF  library 后其更为 Acrobat PDF library  但是必须安装Acrobat Reader 或 Adobe Reader

可供参考资料: http://baike.baidu.com/view/94004.htm

用Visual C++实现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)完成的,因此必须安装这两种软件中的一个。

实现步骤

以下以Acrobat(Reader)5.x/6.x为例,介绍如何用新版控件实现PDF文件的显示。

运行VC,新建一个基于对话框的MFC应用程序ViewPDF,在设置生成选项时,选中“ActiveX Controls”,其余使用缺省值即可。生成后,删除对话框中的所有控件。

接下来创建自动化组件驱动类:打开类向导,点击“Add Class”按钮,在弹出的菜单中选择“From a type library”,用类型库文件pdf.tlb产生所需的组件类,该文件位于Acrobat软件安装目录下的ActiveX子目录。

编辑ViewPDFDlg.h,为类CViewPDFDlg添加两个数据成员:

#include "pdf.h" // 组件类的头文件
class CViewPDFDlg : public CDialog
{
protected:
_DPdf m_drvPDF; // PDF组件驱动对象,_DPdf是我们刚生成的组件类
CWnd m_wndPDF; // PDF控件窗口
... ...


在类成员函数CViewPDFDlg::OnInitDialog中插入下列语句:

// 为主窗口添加WS_CLIPCHILDREN风格,否则控件显示不正常
ModifyStyle(0, WS_CLIPCHILDREN);
// 获取对话框的客户区矩形
CRect rt;
GetClientRect(&rt);
// 利用CWnd::CreateControl创建PDF控件窗口
// Acrobat (Reader) 5.x/6.x的控件类ID为"PDF.PdfCtrl.5",7.x为"AcroPDF.PDF.1"
m_wndPDF.CreateControl("PDF.PdfCtrl.5", NULL, WS_CHILD | WS_VISIBLE, rt, this, 0);
// 获取IDispatch接口指针
LPUNKNOWN lpUnknown = m_wndPDF.GetControl Unknown();
LPDISPATCH lpDispatch;
lpUnknown->QueryInterface(IID_IDispatch, (void**)&lpDispatch);
// 把获得的接口指针传递给组件驱动对象m_drvPDF,通过它调用控件的属性和方法
// 当m_drvPDF销毁时,会自动释放接口指针
m_drvPDF.AttachDispatch(lpDispatch);
// 弹出一个“打开”对话框,选择要显示的PDF文件
CFileDialog dlg(TRUE);
if (dlg.DoModal() == IDOK)
// 利用控件的方法LoadFile读取并显示PDF文件
m_drvPDF.LoadFile(dlg.GetPathName());
else
OnCancel(); // 退出


编译运行程序,选择要显示的PDF文件,效果如图1所示。


对于Acrobat(Reader)7.x,实现步骤基本与上相同,区别在于:

(1) 使用AcroPDF.dll生成自动化组件驱动类,得到的类名为IAcroAXDocShim,头文件为acropdf.h。

(2) 创建控件窗口时,类ID为AcroPDF.PDF.1。

除了上面用到的LoadFile外,控件还提供了许多有用的方法,常见的有:

Print 打印文件
setZoom 设置页面的百分比
setShowToolbar 显示/隐藏工具栏
gotoFirstPage 跳转到第一页
gotoLastPage 跳转到最后一页
gotoNextPage 跳转到下一页
gotoPreviousPage 跳转到上一页

由于用法很简单,这里不再一一叙述。

JS调用实现PDF显示打印

acropdf or acropdf.dll <a href="javascript:PDF1.printWithDialog();">打印</a><hr> <object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" name="PDF1" width="950" height="633" border="0"> <param name="SRC" value="a.pdf"/> </object> <script language="JavaScript" type="text/javascript"> //显示工具栏(false为隐藏) PDF1.SetShowToolbar(true); </script> </body> </html> 使用JS检测浏览器是否安装Adobe Reader的ActiveX
 为了方便客户使用,也为了保证打印出的报表不至于太难看。随之想,使用代码检测IE中是否安装了Adobe Reader ActiveX控件。经过在Baidu和google的一番狂搜,终于在google中找到相应的方法,就是使用javascript代码检测是否安装Adobe Reader ActiveX。另外,若未安装直接跳转到adobe reader下载的页面,提示用户下载并安装。
       代码分享之,以便后用。
function Check_AdobeReader() {
            var displayString;
            var acrobat = new Object();
            acrobat.installed = false;
            acrobat.version = "0.0";
            if (navigator.plugins && navigator.plugins.length) {
                for (x = 0; x < navigator.plugins.length; x++) {
                    if (navigator.plugins[x].description.indexOf("Adobe Acrobat") != -1) {
                        acrobat.version = parseFloat(navigator.plugins[x].description.split("Version ")[1]);
                        if (acrobat.version.toString().length == 1) acrobat.version += ".0";
                        acrobat.installed = true;
                        displayString = "Acrobat Version: " + acrobat.version;
                        break;
                    } else if (navigator.plugins[x].description.indexOf("Adobe PDF Plug-In") != -1) {
                        acrobat.installed = true;
                        acrobat.version = "8+";
                        displayString = "Acrobat Version 8 or Above";
            } else if (window.ActiveXObject) {
                for (x = 2; x < 10; x++) {
                    try {
                        oAcro = eval("new ActiveXObject('PDF.PdfCtrl." + x + "');");
                        if (oAcro) {
                            acrobat.installed = true;
                            acrobat.version = x + ".0";
                            displayString = "Acrobat Version: " + acrobat.version;
                    catch (e) { }
                try {
                    oAcro4 = new ActiveXObject("PDF.PdfCtrl.1");
                    if (oAcro4) {
                        acrobat.installed = true;
                        acrobat.version = '4.0';
                        displayString = 'Acrobat Version: ' + acrobat.version;
                catch (e) { }
                try {
                    oAcro7 = new ActiveXObject('AcroPDF.PDF.1');
                    if (oAcro7) {
                        acrobat.installed = true;
                        acrobat.version = '7.0';
                        displayString = 'Acrobat Version: ' + acrobat.version;
                catch (e) { }
            return acrobat;

Adobe PDF library错误引导

http://livedocs.adobe.com/acrobat_sdk/10/Acrobat10_HTMLHelp/API_References/Acrobat_API_Reference/Error_Messages/PD_Layer.html

Adbe PDF 一个站点

http://mixnap.net/

PDF介绍  PDF是“Portable Document Format 可移植文档格式”的缩写,它是Adobe公司开发的一种电子文档格式,已经成为国际通用的电子文档交换事实标准。PDF文件可以在各种平台下阅读、编辑、发布。该文件格式支持字体、图像、甚至任何附件的嵌入。  Adobe公司提供了两种软件用于处理PDF文档,分别是AcrobatAcrobat Reader:前者功能强大,不仅能阅读,还可以创建或编辑PDF文档,但要收费;后者只具备阅读功能,为软件。用ActiveX控件显示PDF文件  Acrobat(Reader)提供了一个ActiveX控件pdf.ocx(7.x版本为AcroP
Adobe PDF  library   http://www.datalogics.com/ 可在此网站上下载,下载后还要设置lisence的环境变量, 试用密钥是客服代表通过电话联系发过来的。 The Evaluation release of APDFL is license-managed. You must either 1) Place the eval.lic file
链接:https://pan.baidu.com/s/13yqeX3nEIQN0s3AoFoboTg密码:nsua https://blog.csdn.net/qq_38458928/article/details/81627847 Visual C++网络编程案例实战pdf,需要解压密码 转载:请自行尝试 https://blog.csdn.net/u012213585/article/details/17121899 《Visual C++网络编程案例实战(附光盘)》共15章,分为3篇。 第1篇介绍了V