1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C/C++ 调用Adobe Acrobat Reader DC实现PDF文件打印

C/C++ 调用Adobe Acrobat Reader DC实现PDF文件打印

时间:2020-08-27 22:27:39

相关推荐

C/C++ 调用Adobe Acrobat Reader DC实现PDF文件打印

C/C++ 调用Adobe Acrobat Reader DC实现PDF文件打印

由于近期项目开发需要,需要打印PDF文件。

前提需要下载软件Adobe Acrobat Reader DC。该打印方法是使用Adobe Acrobat Reader DC中提供的控件(OCX)来实现打印功能。

Adobe Acrobat Reader DC下载链接:下载 Adobe Acrobat Reader DC | 免费 PDF 浏览器 | Windows、Mac、iOS、Android

安装成功之后即可开始创建Demo来实现功能。

本人使用的开发环境为VS

新建一个MFC项目工程,命名为PrintPDF

项目创建成功之后,需要添加Adobe Acrobat Reader DC提供的ActiveX控件MFC类。

在类向导中,选择“添加类”->“ActiveX 控件中的MFC类(A)”,如下图所示:

之后按下图所示,完成CAcroAXDocShim类的添加。

在 PrintPDFDlg.cpp 源文件中添加上生成的 CAcroAXDocShim 类的头文件。

下图为我的界面设计。

现在就可以开始实现具体的打印方法。

1.添加定义

CAcroAXDocShim cPdf;

2.在按钮中实现具体功能,其中m_Path为路径控件变量,m_StartPage为打印页的起始页控件变量,m_EndPage为打印页的终止页控件变量。

(1)此为打印PDF文件

BOOL bRet = FALSE;char szPath[MAX_PATH] = {0x00};//获取PDF文件路径m_Path.GetWindowText(szPath, sizeof(szPath));bRet = cPdf.Create("", WS_VISIBLE , CRect(0, 0, 1, 1), AfxGetMainWnd(), 1050);if (!bRet){::AfxMessageBox("创建PDF失败");return;}bRet = cPdf.LoadFile(szPath);if (!bRet){::AfxMessageBox("打开PDF文件失败.");return;}//cPdf.printAll();//默认打印cPdf.printAllFit(TRUE);//自适应宽度

(2)指定PDF页数进行打印

BOOL bRet = FALSE;int nStartPage = 0;int nEndPage = 0;char szTemp[256] = {0x00};char szPath[MAX_PATH] = {0x00};//获取PDF文件路径m_Path.GetWindowText(szPath, sizeof(szPath));//获取打印页m_StartPage.GetWindowText(szTemp, sizeof(szTemp));nStartPage = atoi(szTemp);m_EndPage.GetWindowText(szTemp, sizeof(szTemp));nEndPage = atoi(szTemp);bRet = cPdf.Create("", WS_VISIBLE , CRect(0, 0, 1, 1), AfxGetMainWnd(), 1050);if (!bRet){::AfxMessageBox("创建PDF失败");return;}bRet = cPdf.LoadFile(szPath);if (!bRet){::AfxMessageBox("打开PDF文件失败.");return;}//cPdf.printPages(nStartPage, nEndPage);//默认打印cPdf.printPagesFit(nStartPage, nEndPage, TRUE);//自适应宽度

这样就能完成使用Adobe Acrobat Reader DC控件实现打印PDF的功能。

工程项目代码下载地址:

使用下载的项目前,需安装Adobe Acrobat Reader DC

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。