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 2010

新建一个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

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

  1. 永久关闭Adobe Acrobat Reader DC右侧的侧边栏(实测)

    最近更新了Adobe Acrobat Reader DC,说实话新版本的其他效果不错,但是有一个让人很蛋疼的毛病,就是每次打开一个PDF的时候,右侧的侧边栏(注释栏)总是会默认打开,而且找遍了各种设定 ...

  2. 在IE浏览器中,使用Adobe Acrobat Reader dc插件来在线加载PDF,PDF会出现在最前端,并挡住其它需要弹出的窗口

    问题描述 在IE11环境下,使用Adobe Acrobat Reader dc插件来在线加载PDF,PDF加载在一个iframe页面中,此时PDF所在的iframe会有很高的优先级,在原父页面上的其他 ...

  3. Adobe Acrobat Reader DC 2019 (19.8)

    软件名称:Adobe Acrobat Reader DC 软件版本:19.8.20071.41678 官方网站:https://www.adobe.com 产品主页:https://acrobat.a ...

  4. Adobe Acrobat Reader DC

    Acrobat Reader 是Adobe公司旗下免费PDF阅读软件.Adobe Acrobat Reader DC软件是行业权威信任的标准,可用于查看.打印.签名和批注PDF.它可以打开所有类型PD ...

  5. 如何获取Adobe Acrobat Reader DC的离线安装包

    Adobe Acrobat Reader DC是现在市面上用的最广泛的PDF阅读器,但是如何我们直接去官网下载的话,得到的是一个在线的安装包,需要联网才能安装,这对于企业IT人员来说是非常不方便的.其 ...

  6. 关闭Adobe Acrobat Reader DC右侧的侧边栏

    在 C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroApp\CHS 文件夹下,只需要将Viewer.aapp文件里面下列内容删掉就可 ...

  7. Adobe Acrobat Reader DC 安装时出现初始化错误

    系统自动删除 Adobe Acrobat Reader DC 安装包 原因 操作系统认为该安装包存在病毒,强制删除 即便在系统尚未删除该安装包的情况下开始了安装也会出现初始化错误 解决方案 1 打开控 ...

  8. Adobe Acrobat Reader DC 离线安装包

    https://blog.csdn.net/qqduxingzhe/article/details/77876336 ***************************************** ...

  9. 【电子签名】如何使用Adobe Acrobat Pro DC给PDF文件添加自己的电子签名、选项勾选和日期填写

    如何使用Adobe Acrobat Pro DC给PDF文件添加自己的电子签名.选项勾选和日期填写 在疫情时代,线上办公逐步成为趋势,经常面临着需要给PDF文件添加自己的电子签名和选项勾选. 具体步骤 ...

最新文章

  1. java sqlmap_sqlmap 学习指南
  2. CentOS 搭建Postfix+Dovecot简单邮件系统
  3. 3-8 基于SpringBoot连接数据库与配置MyBatis实操 创建表sql
  4. 5.Java 面试题整理(JDBC ,JDO 方面)
  5. Python Cookbook(第3版)pdf
  6. 50以内的质数顺口溜_【停课不停学】学习妙招|小学数学学习中的顺口溜,记住了事半功倍!...
  7. *第八周*数据结构实践项目一【建设顺序串算法库】
  8. SpringBoot2 Spring Cloud consul 分布式配置中心使用教程
  9. 弹幕服务器维护,分布式弹幕服务架构
  10. matlab 画x a的直线方程式,matlab画如x=a和y=b这种水平线和垂线的命令是什么,谢谢...
  11. 机械设备维修报修小程序开发制作功能介绍
  12. html显示统计图数据模板_博客统计信息显示模板
  13. 认认真真推荐9个高质量公众号
  14. ECCV 2020 论文大盘点-手势估计篇
  15. hyper v设置虚拟机动态内存,内存最大最小值
  16. python思维导图
  17. SSD与HDD、HHD的区别
  18. 10.前端JavaScript之【函数】【全局变量与局部变量】
  19. 投影仪幕布的开关在哪里_不可错过的智能投影仪幕布处理方法
  20. python写入excel表格数据绘制图表,Python对数据写入Execl文件并生成图表

热门文章

  1. ODBC、OLEDB、ADO、ADO.NET之间的关系
  2. python 百度网盘 群组 文件_py实现百度云批量生成文件共享链接
  3. 属实8错的电饭煲蛋糕
  4. 要有努力把片段拼接完整的勇气
  5. 在html中使用fontIcon 的图标
  6. 那些成功学和鸡汤文不会告诉你的
  7. app安装失败,安装冲突
  8. 2023世界人工智能大会 | 智能媒体计算专题论坛
  9. python爬虫实例——基于python实现有道云翻译接口
  10. JAVA 格式化英文日期