当前位置: 首页 > news >正文

qtpdfium的编译及读取pdf文件和一些简单操作

qtpdfium是谷歌的一款开源项目,它的内核是基于国内的福昕pdf,许可协议为 BSD 3-Clause,允许用于闭源商业行为

下载

我们可以从git上进行下载,github,如果嫌下载速度慢,可以从csdn进行下载csdn
下载完成之后我们可以看到有一份压缩文件。
在这里插入图片描述

编译

我们将下载完成的压缩包拷贝到一个空目录内进行编译
第一步,我们把压缩包进行解压,得到一个文件夹。
第二步,打开文件夹,打开pro文件
在这里插入图片描述
这里我们使用qtcreator进行打开,当然也可以使用vs进行打开。
使用qtcreator打开,会看到让你选择编译器界面,这个就是代表你需要编译哪个编译器下的库,不同编译器编译出来的库不能进行互通,也就是调用会报错哦。我这里使用的是qt5.15.2和msvc2019版本,所以我编译器选择的是 qt5.15.2 mscv2019 64
在这里插入图片描述
根据自己所需情况编译不同版本。最好是将shadow build勾选掉,这样编译出来的文件会在当前目录下,不然会编译到qt帮你创建的目录下。
第三步 点击编辑,选择到pdfium,点击编译
在这里插入图片描述
右击,选择构建,等待编译完成即可,最好是把debug和release都编译下。
第四步 编译完成之后,打开压缩的文件夹,可以看到有一个lib文件夹
在这里插入图片描述
点进去可以看到编译好的lib文件,我是debug和release都编译了
在这里插入图片描述

在项目中使用

我们只需要这2个文件,如果只编译debug或relese,只拿一个就行,把这2个文件拷贝出来
放到我们的项目目录下
注意:我们还需要头文件,打开QtPdfium_Build_Source-master文件夹
在这里插入图片描述
打开这个文件夹
在这里插入图片描述
将include文件夹拷贝到项目路径下。
在这里插入图片描述
然后我们打开我们的项目,以qtCreator为例,打开pro文件
在这里插入图片描述
加入这句话,$$PWD代表项目当前路径,你们在使用的时候换成自己的include路径即可,include存放的是头文件。
右击项目,选择添加库,选择外部库
在这里插入图片描述
在这里插入图片描述
将linux和mac勾选掉,选择windows,点击浏览库文件,选择lib文件,就是刚刚编译完成的lib文件
选择完成后会在pro文件内生成
在这里插入图片描述

使用就很简单了
首先加入头文件

#include "qpdfium.h"QPdfium m_pdf;
m_pdf.loadFile(i_path); //path为pdf路径
int pagenumber = m_pdf.pageCount();if(pagenumber<=0)return;for (int i= 0;i<pagenumber;i++) {QPdfiumPage page =  m_pdf.page(i);  //读取每一页pdfQImage image = page .image(1.0);  //将pdf转化为Qimage,后面的1.0代表显示比例}

可以看到这个库只是将pdf以图片的形式送给你,剩下的就是看你如何对图片操作,对了,我看了一下QPdfiumPage 的方法,他是支持读取pdf每一页的文字的,这个对划词很有帮助。

下面是我写的一个例子。我是以一页一页的方式进行显示的,支持翻页,可缩放。跳页的功能还没有完善。
代码

http://www.lryc.cn/news/235822.html

相关文章:

  • ClickHouse查看执行计划
  • 2023-11-17 VsCode使用makefile进行多文件编译
  • Network(四)NAT实现方式与VRRP概述
  • C#_键盘钩子
  • YOLO免费数据集网站收集
  • 拼图小游戏
  • 卷积神经网络(CNN)天气识别
  • Linux进程间通信之匿名管道
  • 【PTA题目】6-19 使用函数输出指定范围内的Fibonacci数 分数 20
  • 运行ps显示msvcp140.dll丢失怎么恢复?msvcp140.dll快速解决的4个不同方法
  • Java多线程(3)
  • Java线程周期
  • map与set的封装
  • mac无法向移动硬盘拷贝文件怎么解决?不能读取移动硬盘文件怎么解决
  • 基于Netty实现的简单聊天服务组件
  • 视频封面:从视频中提取封面,轻松制作吸引人的视频
  • CICD 持续集成与持续交付——gitlab
  • Linux - 驱动开发 - RNG框架
  • qsort使用举例和qsort函数的模拟实现
  • AttributeError: module ‘gradio‘ has no attribute ‘ClearButton‘解决方案
  • Kafka 集群如何实现数据同步?
  • 一本了解生成式人工智能
  • git 相关指令总结(持续更新中......)
  • windows 安装 Oracle Database 19c
  • 【数据结构】图的存储结构(邻接矩阵)
  • kubernetes--Pod控制器详解
  • 九、Linux用户管理
  • springboot项目中没有识别到yml文件解决办法
  • [管理与领导-125]:一个IT人的思考:职场中、人际交往中,不要为他人的不良行为和言语买单,不要让自己的情绪被外界影响或掌控。
  • 【FPGA】IP核