Qt三方库开发技术:Qt应用内部打开PDF文件
若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/99946795
各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究
红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中...(点击传送门)
Qt开发专栏:三方库开发技术(点击传送门)
前话
白板业务需求,需要内部兼容打开pdf。
PDF打开方案
- 方案一:调用外部应用打开pdf
该方案是调用外部exe,另起进程以命令行形式打开。
- 方案二:使用组件打开pdf
使用QAxwidget调用active控件,qt调用active的office控件不稳定性不推荐。
- 方案三:qt应用打开pdf
使用开源库mupdf调用
- 方案四:使用Pdfium
Pdfium是谷歌开源的祈福阅读器的部分代码。
- 方案五:qt应用使用QPdfium打开pdf(本篇使用)
使用QPdfium是封装了方案四的库
下载地址
官网git:
git clone –recursive https://github.com/paulovap/qtpdfium
CSDN:https://download.csdn.net/download/qq21497936/11587441
演示Demo
体验下载地址
CSDN免积分下载地址:https://download.csdn.net/download/qq21497936/14084585
QQ群下载地址:1047134658(点击“文件”搜索“pdf”,群内与博文同步更新)
编译qtpdfium
步骤一:移动到文件夹
步骤二:打开工程
步骤三:编译子工程pdfium
步骤四:出现错误”_Printf_format_string_”
编译出现错误,如下图:
修改源码如下:
步骤五:漫长的编译后,出现”error: kernel32.lib”等错误
这几个静态库是windows sdk有的,找到windows sdk路径,没有的自己装VS,然后装windows sdk,笔者是使用mingw编译,不是msvc
然后将所需要的库拷贝过去(以提供使用其他编译器编译时使用,省麻烦),
修改工程文件
步骤六:继续漫长的编译后(十几分钟吧),终于编译成功
Qt模块使用方法总结
之前写过qt模块的融入方法总结,一时找不到于是又总结一下使用的方法:
方法一:将该模块部署到本地Qt环境当中去
标准使用的方法。
方法二:将该模块当做第三方库使用,使用.h和dll库(笔者推荐)
建议使用该方法,笔者有多台电脑不适合单独配置环境,并且从协作开发的角度上来说,他人接手代码也不应改需要重新配置他自己的开发环境。
方法三:将源码当做工程源码直接编译到工程中
该方法是为了完全跨平台,跨编译器,跨版本,当然会导致编译时间较长。
方法四:将源码当做工程lib添加到工程中(优化方案三)
改方法是有方法三的优点,同时又不需要每次编译,手动编译一起lib,其他修改工程的时候不再编译就行。
封装QtPdfium模块
关键代码
打开pdf
bool PdfWidget::openFile(QString fileName, QString password)
{/*enum Status {NOT_LOADED = -1,SUCCESS = 0,FILE_ERROR = 1,FORMAT_ERROR = 2,PASSWORD_ERROR = 3,HANDLER_ERROR = 4,FILE_NOT_FOUND_ERROR = 5};* */QPdfium::Status status;status = _pPdfium->loadFile(fileName, password);if(status != QPdfium::Status::SUCCESS){qDebug() << "Failed to load file:" << fileName << "error:" << (int)status;return false;}qDebug() << "Succeed to load file:" << fileName << "total pages:" << _pPdfium->pageCount();_pageCount = _pPdfium->pageCount();showFirstPage();return true;
}
若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/99946795
Qt三方库开发技术:Qt应用内部打开PDF文件相关推荐
- Qt混合Python开发技术:Python介绍、混合过程和Demo
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/109474663 各位读者,知识无穷而人力有穷 ...
- QT三方库 Openssl Des 算法实现
QT三方库 Openssl Des 算法实现 ,可直接套用接口 DECcpp文件 //使用前请在pro文件中包含你的openssl三方库,路径为你openssl在电脑中的位置. //LIBS += - ...
- java me基础教程 pdf_Java ME手机应用开发技术与案例详解 PDF
资源名称:Java ME手机应用开发技术与案例详解 PDF Java ME手机应用开发技术与案例详解基于Java ME,系统描述了Java ME手机应用开发的各个方面.全书按照Java ME程序的开发 ...
- python常用库 自动化办公类 —— PyPDF2(处理pdf文件)
python常用库 自动化办公类 -- PyPDF2(处理pdf文件) 摘要 PyPDF库的安装 PyPDF库的常用功能 文字提取 合并pdf文件 旋转pdf页面 pdf文件加密 摘要 本文主要介绍了 ...
- Android用PdfRenderer类开发打开pdf文件的功能
PdfRenderer是Android官方用于开发打开pdf文件功能的类,今天介绍一下它的最基本的使用.Android官方有一个相关的Sample,项目名是PdfRendererBasic,大家也可以 ...
- linux 安装qt mysql库_Linux下QT平台Mysql数据库开发环境配置
This doucment is about how to add mysql driver into QT and about database connections 由于之前安装RedH ...
- Android 应用内部打开PDF、Excel、Word文档你们Get了么?
为什么需要在Android应用内打开PDF.Word.Excel等文档? 由于公司项目有一部分功能是能观看新闻,但是这些新闻的内容并不都是一个HTML或者链接直接可以使用Android WebView ...
- python 打开pdf文件_用Python开发的简易PDF阅读器
主要的库 PyQt5:UI的开发 fitz:与pdf文件相关的操作几乎都用的是它 这是一个用Python开发的pdf阅读器,是软A项目的附加软件(虽然现在主程序几乎可以说还没有开始:joy:,只完成了 ...
- GD32F303固件库开发(17)----内部Flash读写
概述 本例程主要讲解如何对芯片自带Flash进行读写,用芯片内部Flash可以对一些需要断电保存的数据进行保存,无需加外部得存储芯片,本例程采用的是GD32F303ZET6主控,512K大小的Flas ...
- c语言开发pdf渲染器,C语言开发技术详解 (戴建华) PDF扫描版70M
从C语言基础高级技术,全面.深入讲解C程序设计的精髓,通过实例,层层深入,彻底攻克C程序设计的重点和难点知识. 本书特色: 从入门到精通:上篇介绍C语言基础,下篇介绍C语言高级编程及技巧. 适用双操作 ...
最新文章
- git rebase用法
- ES failed shard on node[XXX]: failed recovery, failure RecoveryFailedException XXX Too many openfile
- linux搭建flask环境,Ubuntu 环境下搭建Flask框架
- Sleep() sleep() usleep()
- 修改mysql编码方式centos_CentOS下修改mysql数据库编码为UTF-8(附mysql开启远程链接和开放3306端口)...
- BZOJ.3990.[SDOI2015]排序(DFS)
- 复制和粘贴文本时剥离格式的5种方法(MacWindows)
- yum安装mysql具体步骤_CentOS7.0下使用yum安装MySQL的步骤教程
- switchHosts 介绍
- 秒杀奥数比赛,用Python暴力破解“智力游戏”
- [转载]WiFi有死角? 巧用旧无线路由器扩展覆盖
- STM32MP157移植Qt5.12.10
- 茶叶文化网站设计与实现 HTML+CSS学生网页设计作业源码
- 浅谈我国中小企业融资的问题及对策_毕业论文(20180404104959)
- 全国大学生软件测试大赛Web应用大赛常用测试语句
- 呕心沥血!open cv4.1.2添加contrib4.1.2扩展模块
- 【DEVOPS】基于禅道 - 重构研发协作流程
- 通过1997年拓荒者号飞行器事件理解优先级反转
- iOS开发 -- 一个被苹果下架的App,终于恢复上架
- linux系统安装时无线键盘吗,在Deepin系统中连接罗技蓝牙键盘K380的方法
热门文章
- office 2010 安装
- python:文件处理之TXT
- DB2入门(5)——DB2配置文件
- puttygen convert ppk file to xshell key file
- 5000+ 字解读 | 产品经理:如何做好元器件选型?
- c语言16qam,基于SIMULINK的OFDM-16QAM系统仿真与分析
- oracle asm的安装和配置,ORACLE安装之ASM安装
- dataload mysql_如何向eova中添加新的数据源呢
- 随机信号分析 matlab仿真实验,随机信号分析实验报告的(基于MATLAB语言).docx
- 加密卡华为怎么模拟_华为手机NFC模拟加密的门禁卡详细教程