若该文为原创文章,转载请注明原文出处
本文章博客地址: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文件相关推荐

  1. Qt混合Python开发技术:Python介绍、混合过程和Demo

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/109474663 各位读者,知识无穷而人力有穷 ...

  2. QT三方库 Openssl Des 算法实现

    QT三方库 Openssl Des 算法实现 ,可直接套用接口 DECcpp文件 //使用前请在pro文件中包含你的openssl三方库,路径为你openssl在电脑中的位置. //LIBS += - ...

  3. java me基础教程 pdf_Java ME手机应用开发技术与案例详解 PDF

    资源名称:Java ME手机应用开发技术与案例详解 PDF Java ME手机应用开发技术与案例详解基于Java ME,系统描述了Java ME手机应用开发的各个方面.全书按照Java ME程序的开发 ...

  4. python常用库 自动化办公类 —— PyPDF2(处理pdf文件)

    python常用库 自动化办公类 -- PyPDF2(处理pdf文件) 摘要 PyPDF库的安装 PyPDF库的常用功能 文字提取 合并pdf文件 旋转pdf页面 pdf文件加密 摘要 本文主要介绍了 ...

  5. Android用PdfRenderer类开发打开pdf文件的功能

    PdfRenderer是Android官方用于开发打开pdf文件功能的类,今天介绍一下它的最基本的使用.Android官方有一个相关的Sample,项目名是PdfRendererBasic,大家也可以 ...

  6. linux 安装qt mysql库_Linux下QT平台Mysql数据库开发环境配置

    This doucment is about how to add mysql driver into QT and about database connections     由于之前安装RedH ...

  7. Android 应用内部打开PDF、Excel、Word文档你们Get了么?

    为什么需要在Android应用内打开PDF.Word.Excel等文档? 由于公司项目有一部分功能是能观看新闻,但是这些新闻的内容并不都是一个HTML或者链接直接可以使用Android WebView ...

  8. python 打开pdf文件_用Python开发的简易PDF阅读器

    主要的库 PyQt5:UI的开发 fitz:与pdf文件相关的操作几乎都用的是它 这是一个用Python开发的pdf阅读器,是软A项目的附加软件(虽然现在主程序几乎可以说还没有开始:joy:,只完成了 ...

  9. GD32F303固件库开发(17)----内部Flash读写

    概述 本例程主要讲解如何对芯片自带Flash进行读写,用芯片内部Flash可以对一些需要断电保存的数据进行保存,无需加外部得存储芯片,本例程采用的是GD32F303ZET6主控,512K大小的Flas ...

  10. c语言开发pdf渲染器,C语言开发技术详解 (戴建华) PDF扫描版70M

    从C语言基础高级技术,全面.深入讲解C程序设计的精髓,通过实例,层层深入,彻底攻克C程序设计的重点和难点知识. 本书特色: 从入门到精通:上篇介绍C语言基础,下篇介绍C语言高级编程及技巧. 适用双操作 ...

最新文章

  1. git rebase用法
  2. ES failed shard on node[XXX]: failed recovery, failure RecoveryFailedException XXX Too many openfile
  3. linux搭建flask环境,Ubuntu 环境下搭建Flask框架
  4. Sleep() sleep() usleep()
  5. 修改mysql编码方式centos_CentOS下修改mysql数据库编码为UTF-8(附mysql开启远程链接和开放3306端口)...
  6. BZOJ.3990.[SDOI2015]排序(DFS)
  7. 复制和粘贴文本时剥离格式的5种方法(MacWindows)
  8. yum安装mysql具体步骤_CentOS7.0下使用yum安装MySQL的步骤教程
  9. switchHosts 介绍
  10. 秒杀奥数比赛,用Python暴力破解“智力游戏”
  11. [转载]WiFi有死角? 巧用旧无线路由器扩展覆盖
  12. STM32MP157移植Qt5.12.10
  13. 茶叶文化网站设计与实现 HTML+CSS学生网页设计作业源码
  14. 浅谈我国中小企业融资的问题及对策_毕业论文(20180404104959)
  15. 全国大学生软件测试大赛Web应用大赛常用测试语句
  16. 呕心沥血!open cv4.1.2添加contrib4.1.2扩展模块
  17. 【DEVOPS】基于禅道 - 重构研发协作流程
  18. 通过1997年拓荒者号飞行器事件理解优先级反转
  19. iOS开发 -- 一个被苹果下架的App,终于恢复上架
  20. linux系统安装时无线键盘吗,在Deepin系统中连接罗技蓝牙键盘K380的方法

热门文章

  1. office 2010 安装
  2. python:文件处理之TXT
  3. DB2入门(5)——DB2配置文件
  4. puttygen convert ppk file to xshell key file
  5. 5000+ 字解读 | 产品经理:如何做好元器件选型?
  6. c语言16qam,基于SIMULINK的OFDM-16QAM系统仿真与分析
  7. oracle asm的安装和配置,ORACLE安装之ASM安装
  8. dataload mysql_如何向eova中添加新的数据源呢
  9. 随机信号分析 matlab仿真实验,随机信号分析实验报告的(基于MATLAB语言).docx
  10. 加密卡华为怎么模拟_华为手机NFC模拟加密的门禁卡详细教程