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文件内生成

使用就很简单了

首先加入头文件

cpp 复制代码
#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);  //读取每一页pdf
        QImage image = page .image(1.0);  //将pdf转化为Qimage,后面的1.0代表显示比例
    }

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

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

相关推荐
wljy14 小时前
二、进制状态转换
linux·运维·服务器·c语言·c++
云泽8085 小时前
笔试算法 -位运算篇(二):从唯一字符到消失数字
c++·算法·位运算
繁华落尽,倾城殇?5 小时前
[C++11] : atomic,nullptr,default/delete,enum class
开发语言·c++·c++11·nullptr·atomic·enum class·default/delete
代码村新手5 小时前
C++-二叉搜索树
开发语言·c++
智者知已应修善业6 小时前
【51单片机8位数码管动态显示日期小数点风格】2023-11-13
c++·经验分享·笔记·算法·51单片机
智者知已应修善业6 小时前
【51单片机有三个LED 分别第一个灯闪三下 再到第二个灯又闪三下 再到第三个灯又闪三下 就这样循环程序】2023-11-16
c++·经验分享·笔记·算法·51单片机
一然明月9 小时前
qt基本用法
开发语言·qt
玖釉-10 小时前
二叉树展开为链表:从先序遍历到原地指针重排
c++·windows·算法·leetcode·链表
Mister西泽11 小时前
C++ Primer Plus 第六版 编程练习题及详细答案
开发语言·c++·学习·visual studio
Qt程序员11 小时前
从上电到系统就绪:ARM+U-Boot 嵌入式 Linux 启动流程
linux·运维·c++·内核·设备树·嵌入式·ram