VC++实现读取PDF文件,问题解决再加分

xiao452159568 2011-03-07 10:33:22
我参照如下资料http://edu.itbulo.com/200606/101343.htm的
但是这里m_drvPDF.AttachDispatch(lpDispatch);说AttachDispatch不是前者的成员函数,于是我在控件类加了个成员COleDispatchDriver dispatch;
然后这样m_drvPDF.dispatch.AttachDispatch(lpDispatch);可是可以了。不过在这里中断了
m_drvPDF.LoadFile(_T("D:\\masm\\Symbian+OS+C++.pdf"));
我调试断点跟踪进去,停在这里raise(SIGABRT);
信息如下,nCode = __crtMessageBox(szOutMessage,
_T("Microsoft Visual C++ Debug Library"),
MB_TASKMODAL|MB_ICONHAND|MB_ABORTRETRYIGNORE|MB_SETFOREGROUND);

/* Abort: abort the program */
if (IDABORT == nCode)
{
/* note that it is better NOT to call abort() here, because the
* default implementation of abort() will call Watson
*/

/* raise abort signal */
raise(SIGABRT);//就是停在这里的

/* We usually won't get here, but it's possible that
SIGABRT was ignored. So exit the program anyway. */
_exit(3);
}

/* Retry: return 1 to call the debugger */
if (IDRETRY == nCode)
return 1;

/* Ignore: continue execution */
return 0;
请各位高手帮一下我吧。。谢谢了
...全文
903 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ImJaden 2012-03-22
  • 打赏
  • 举报
回复
去年的帖子了?!我也想试用一下楼主的代码....
bobob 2011-03-08
  • 打赏
  • 举报
回复
晕死,我的回复居然不见了
xiao452159568 2011-03-08
  • 打赏
  • 举报
回复
�����˸�pdf7.0�������Ȼ���Ǹ��ļ����������ļ����µ���һ��ؼ��࣬���������⣬��¥���Ǹ�ͷ�ļ��Ļ��ͳ��ֺö���
向立天 2011-03-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xiao452159568 的回复:]

AcroPDF.dll这个是我自己下载的,我的Acrobat里面没有,邮箱912784431@qq.com谢谢了
[/Quote]
如果你acrobat的安装是正确的那应该在类似这个目录下
Program Files\Adobe\Acrobat 7.0\ActiveX
发过去了
你看一下
希望对你有帮助吧
xiao452159568 2011-03-08
  • 打赏
  • 举报
回复
AcroPDF.dll这个是我自己下载的,我的Acrobat里面没有,邮箱912784431@qq.com谢谢了
向立天 2011-03-08
  • 打赏
  • 举报
回复
我也测试了一下
没什么问题
你可以留个邮箱
我把例子给你发过去
我用的也是7.0
cuidx 2011-03-08
  • 打赏
  • 举报
回复
我这也有你贴的那个类,我粘贴的那个pdf接口类的生成方法:
创建自动化组件驱动类:打开类向导,点击“Add Class”按钮,在弹出的菜单中选择“From a type library”,用类型库文件AcroPDF.dll产生所需的组件类,该文件位于Acrobat软件安装目录下的ActiveX子目录。
cuidx 2011-03-08
  • 打赏
  • 举报
回复
我用到pdf是7.0的

#import "AcroPDF.dll" no_namespace
// CAcroAXDocShim 包装类

class CAcroAXDocShim : public COleDispatchDriver
{
public:
CAcroAXDocShim(){} // 调用 COleDispatchDriver 默认构造函数
CAcroAXDocShim(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
CAcroAXDocShim(const CAcroAXDocShim& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}

// 属性
public:

// 操作
public:


// IAcroAXDocShim 方法
public:
CString get_src()
{
CString result;
InvokeHelper(0x1, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void put_src(LPCTSTR newValue)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x1, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
BOOL LoadFile(LPCTSTR fileName)
{
BOOL result;
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x2, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, fileName);
return result;
}
void setShowToolbar(BOOL On)
{
static BYTE parms[] = VTS_BOOL ;
InvokeHelper(0x3, DISPATCH_METHOD, VT_EMPTY, NULL, parms, On);
}
void gotoFirstPage()
{
InvokeHelper(0x4, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void gotoLastPage()
{
InvokeHelper(0x5, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void gotoNextPage()
{
InvokeHelper(0x6, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void gotoPreviousPage()
{
InvokeHelper(0x7, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void setCurrentPage(long n)
{
static BYTE parms[] = VTS_I4 ;
InvokeHelper(0x8, DISPATCH_METHOD, VT_EMPTY, NULL, parms, n);
}
void goForwardStack()
{
InvokeHelper(0x9, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void goBackwardStack()
{
InvokeHelper(0xa, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void setPageMode(LPCTSTR pageMode)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0xb, DISPATCH_METHOD, VT_EMPTY, NULL, parms, pageMode);
}
void setLayoutMode(LPCTSTR layoutMode)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0xc, DISPATCH_METHOD, VT_EMPTY, NULL, parms, layoutMode);
}
void setNamedDest(LPCTSTR namedDest)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0xd, DISPATCH_METHOD, VT_EMPTY, NULL, parms, namedDest);
}
void Print()
{
InvokeHelper(0xe, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void printWithDialog()
{
InvokeHelper(0xf, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void setZoom(float percent)
{
static BYTE parms[] = VTS_R4 ;
InvokeHelper(0x10, DISPATCH_METHOD, VT_EMPTY, NULL, parms, percent);
}
void setZoomScroll(float percent, float left, float top)
{
static BYTE parms[] = VTS_R4 VTS_R4 VTS_R4 ;
InvokeHelper(0x11, DISPATCH_METHOD, VT_EMPTY, NULL, parms, percent, left, top);
}
void setView(LPCTSTR viewMode)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x12, DISPATCH_METHOD, VT_EMPTY, NULL, parms, viewMode);
}
void setViewScroll(LPCTSTR viewMode, float offset)
{
static BYTE parms[] = VTS_BSTR VTS_R4 ;
InvokeHelper(0x13, DISPATCH_METHOD, VT_EMPTY, NULL, parms, viewMode, offset);
}
void setViewRect(float left, float top, float width, float height)
{
static BYTE parms[] = VTS_R4 VTS_R4 VTS_R4 VTS_R4 ;
InvokeHelper(0x14, DISPATCH_METHOD, VT_EMPTY, NULL, parms, left, top, width, height);
}
void printPages(long from, long to)
{
static BYTE parms[] = VTS_I4 VTS_I4 ;
InvokeHelper(0x15, DISPATCH_METHOD, VT_EMPTY, NULL, parms, from, to);
}
void printPagesFit(long from, long to, BOOL shrinkToFit)
{
static BYTE parms[] = VTS_I4 VTS_I4 VTS_BOOL ;
InvokeHelper(0x16, DISPATCH_METHOD, VT_EMPTY, NULL, parms, from, to, shrinkToFit);
}
void printAll()
{
InvokeHelper(0x17, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void printAllFit(BOOL shrinkToFit)
{
static BYTE parms[] = VTS_BOOL ;
InvokeHelper(0x18, DISPATCH_METHOD, VT_EMPTY, NULL, parms, shrinkToFit);
}
void setShowScrollbars(BOOL On)
{
static BYTE parms[] = VTS_BOOL ;
InvokeHelper(0x19, DISPATCH_METHOD, VT_EMPTY, NULL, parms, On);
}
VARIANT GetVersions()
{
VARIANT result;
InvokeHelper(0x1a, DISPATCH_METHOD, VT_VARIANT, (void*)&result, NULL);
return result;
}
void setCurrentHightlight(long a, long b, long c, long d)
{
static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 ;
InvokeHelper(0x1b, DISPATCH_METHOD, VT_EMPTY, NULL, parms, a, b, c, d);
}
void setCurrentHighlight(long a, long b, long c, long d)
{
static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 ;
InvokeHelper(0x1c, DISPATCH_METHOD, VT_EMPTY, NULL, parms, a, b, c, d);
}

// IAcroAXDocShim 属性
public:

};

xiao452159568 2011-03-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cuidx 的回复:]
我用的是Adobe Reader7.0,没有问题的
可能是你生成pdf控件类时生成错了吧
类CAcroAXDocShim 是从COleDispatchDriver继承下来的,不用自己加COleDispatchDriver成员
class CAcroAXDocShim : public COleDispatchDriver
[/Quote]
不对啊,我的不加,他就说AttachDispatch这个函数不是它的成员,下面是我生成的控件类的头文件,其中COleDispatchDriver dispatch;是我加的,能麻烦您把您生成的控件类头文件发给我吗?
#pragma once
#include "Afxdisp.h"
/////////////////////////////////////////////////////////////////////////////
// CAcroAXDocShim

class CAcroAXDocShim : public CWnd
{
protected:
DECLARE_DYNCREATE(CAcroAXDocShim)
public:
COleDispatchDriver dispatch;
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0xCA8A9780, 0x280D, 0x11CF, { 0xA2, 0x4D, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0 } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{
return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID);
}

BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd,
UINT nID, CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{
return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey);
}

// 特性
public:

// 操作
public:

CString get_src()
{
CString result;
InvokeHelper(0x1, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void put_src(LPCTSTR newValue)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x1, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
BOOL LoadFile(LPCTSTR fileName)
{
BOOL result;
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x2, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, fileName);
return result;
}
void setShowToolbar(BOOL On)
{
static BYTE parms[] = VTS_BOOL ;
InvokeHelper(0x3, DISPATCH_METHOD, VT_EMPTY, NULL, parms, On);
}
void gotoFirstPage()
{
InvokeHelper(0x4, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void gotoLastPage()
{
InvokeHelper(0x5, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void gotoNextPage()
{
InvokeHelper(0x6, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void gotoPreviousPage()
{
InvokeHelper(0x7, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void setCurrentPage(long n)
{
static BYTE parms[] = VTS_I4 ;
InvokeHelper(0x8, DISPATCH_METHOD, VT_EMPTY, NULL, parms, n);
}
void goForwardStack()
{
InvokeHelper(0x9, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void goBackwardStack()
{
InvokeHelper(0xa, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void setPageMode(LPCTSTR pageMode)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0xb, DISPATCH_METHOD, VT_EMPTY, NULL, parms, pageMode);
}
void setLayoutMode(LPCTSTR layoutMode)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0xc, DISPATCH_METHOD, VT_EMPTY, NULL, parms, layoutMode);
}
void setNamedDest(LPCTSTR namedDest)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0xd, DISPATCH_METHOD, VT_EMPTY, NULL, parms, namedDest);
}
void Print()
{
InvokeHelper(0xe, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void printWithDialog()
{
InvokeHelper(0xf, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void setZoom(float percent)
{
static BYTE parms[] = VTS_R4 ;
InvokeHelper(0x10, DISPATCH_METHOD, VT_EMPTY, NULL, parms, percent);
}
void setZoomScroll(float percent, float left, float top)
{
static BYTE parms[] = VTS_R4 VTS_R4 VTS_R4 ;
InvokeHelper(0x11, DISPATCH_METHOD, VT_EMPTY, NULL, parms, percent, left, top);
}
void setView(LPCTSTR viewMode)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x12, DISPATCH_METHOD, VT_EMPTY, NULL, parms, viewMode);
}
void setViewScroll(LPCTSTR viewMode, float offset)
{
static BYTE parms[] = VTS_BSTR VTS_R4 ;
InvokeHelper(0x13, DISPATCH_METHOD, VT_EMPTY, NULL, parms, viewMode, offset);
}
void setViewRect(float left, float top, float width, float height)
{
static BYTE parms[] = VTS_R4 VTS_R4 VTS_R4 VTS_R4 ;
InvokeHelper(0x14, DISPATCH_METHOD, VT_EMPTY, NULL, parms, left, top, width, height);
}
void printPages(long from, long to)
{
static BYTE parms[] = VTS_I4 VTS_I4 ;
InvokeHelper(0x15, DISPATCH_METHOD, VT_EMPTY, NULL, parms, from, to);
}
void printPagesFit(long from, long to, BOOL shrinkToFit)
{
static BYTE parms[] = VTS_I4 VTS_I4 VTS_BOOL ;
InvokeHelper(0x16, DISPATCH_METHOD, VT_EMPTY, NULL, parms, from, to, shrinkToFit);
}
void printAll()
{
InvokeHelper(0x17, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void printAllFit(BOOL shrinkToFit)
{
static BYTE parms[] = VTS_BOOL ;
InvokeHelper(0x18, DISPATCH_METHOD, VT_EMPTY, NULL, parms, shrinkToFit);
}
void setShowScrollbars(BOOL On)
{
static BYTE parms[] = VTS_BOOL ;
InvokeHelper(0x19, DISPATCH_METHOD, VT_EMPTY, NULL, parms, On);
}
VARIANT GetVersions()
{
VARIANT result;
InvokeHelper(0x1a, DISPATCH_METHOD, VT_VARIANT, (void*)&result, NULL);
return result;
}
void setCurrentHightlight(long a, long b, long c, long d)
{
static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 ;
InvokeHelper(0x1b, DISPATCH_METHOD, VT_EMPTY, NULL, parms, a, b, c, d);
}
void setCurrentHighlight(long a, long b, long c, long d)
{
static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 ;
InvokeHelper(0x1c, DISPATCH_METHOD, VT_EMPTY, NULL, parms, a, b, c, d);
}
void postMessage(VARIANT strArray)
{
static BYTE parms[] = VTS_VARIANT ;
InvokeHelper(0x1d, DISPATCH_METHOD, VT_EMPTY, NULL, parms, &strArray);
}
VARIANT get_messageHandler()
{
VARIANT result;
InvokeHelper(0x1e, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, NULL);
return result;
}
void put_messageHandler(VARIANT newValue)
{
static BYTE parms[] = VTS_VARIANT ;
InvokeHelper(0x1e, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, &newValue);
}
void execCommand(VARIANT strArray)
{
static BYTE parms[] = VTS_VARIANT ;
InvokeHelper(0x1f, DISPATCH_METHOD, VT_EMPTY, NULL, parms, &strArray);
}
};
cuidx 2011-03-08
  • 打赏
  • 举报
回复
我用的是Adobe Reader7.0,没有问题的
可能是你生成pdf控件类时生成错了吧
类CAcroAXDocShim 是从COleDispatchDriver继承下来的,不用自己加COleDispatchDriver成员
class CAcroAXDocShim : public COleDispatchDriver
xiao452159568 2011-03-08
  • 打赏
  • 举报
回复
问题解决了,可是不知道怎么加分,老是多给不了,和百度不同诶,真抱歉。
xiao452159568 2011-03-08
  • 打赏
  • 举报
回复
结贴了,我把你的头文件复制过去,其实楼上那个也是对的,发现我就多了一个CAcroAXDocShim.cpp我把他删了就好了,真是奇了怪了,很无语诶。。。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧