qt 使用qtpdfium实现读取pdf文件

news2024/11/16 1:22:17

此处仅作为笔记和配置指导。

要想获取源码可Git hub上下载,这里推荐一个:QtPdfium_Build_Source: 基于Google pdfium 库,可编译和编译好的Qtpdfium 库,用于加载pdf文件进行预览 (gitee.com)

目前小编根据推荐的编译方法,没有成的编译出来一个库文件:先试用qt的msvc 进行qmake编译,之后使用mysys进行make编译,编译一直报错,如果有人知道此问题,请赐教一下,在此小编多谢了。

错误如下:

/bin/sh: -c: line 2: syntax error: unexpected end of file

make: *** [Makefile:62: sub-src-install_subtargets] Error 2

下面小编将介绍如何使用:

1、下载上面推荐的git hub下载源码,下载之后会有一个文件夹:QtPdfium_Build_Source\qtpdfiumBuild下,此文件夹中包含了别人编译成功的静态包。

2、讲文件夹中的bin、include、lib三个文件夹拷贝到自己的工程目录下。

3、在工程中的.pro文件中添加include和库文件的引用。

以下是工程目录:

 导入include文件

INCLUDEPATH += $$PWD/include

导入静态文件

点击项目主文件夹,点击鼠标左键选择添加库,打开只有如下图所示:

 选择外部库,点击打开。

 选择库文件,取消掉linux和Mac的勾选,选择静态库,取消下面所有的勾选点击下一步即可。

4、简单使用

4.1 引入头文件

#include "qpdfium.h"

4.2 代码实现

    QPdfium pdf("C:\\Users\\LANG\\Desktop\\789.pdf");
    qDebug() << pdf.isValid();
    int pagenumber = pdf.pageCount();
    for (int i= 0;i<pagenumber;i++) {
        QPdfiumPage page =  pdf.page(0);
        qDebug() << page.width();
        QImage image = page.image(1); //renders it 3 times bigger

        ui->label->setPixmap(QPixmap::fromImage(image));
        //QImage("C:\\Users\\LANG\\Desktop\\小芳.jpg"))
    }

此例子就是打开桌面文件789.pdf文件,之后将文件转化为QImage,之后可通过Qt的相关函数进行显。

4.3 代码实现

    QPdfium pdf("C:\\Users\\LANG\\Desktop\\789.pdf");
    qDebug() << pdf.isValid();
    int pagenumber = pdf.pageCount();
    QPdfiumPage page =  pdf.page(0);
    QString pageText = page.text();
    ui->label->setText(pageText);

此部分代码是读取pdf文件的文字内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/635048.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32F0实现数字化SPWM纯正弦波逆变器

一、理论基础 所谓SPWM&#xff0c;就是通过只有开关两个状态&#xff08;离散&#xff0c;数字的&#xff09;的PWM序列产生正弦波&#xff08;连续&#xff0c;模拟的&#xff09;的方法。其理论基础一句话就能说明白&#xff1a;冲量相等而形状不同的窄脉冲加在具有惯性的环…

golang语法的注意事项

目录 1.源文件以.go结尾2.过文件只能存在一个mian 函数 (入口函数)3. go严格区分大小写4. golang的每行代码是一个语句 默认存在 ; 不需要自己写了5. golang 是每一行每一行的执行的 不要把多个语句写在一行6. 定义变量 或是导入的包未使用 无法同过编译7. {} 都是成对出现 为了…

Xtrak 塔克小车巡线代码以及红绿灯识别相关小改动

做的小改动&#xff1a; 只更改了xtark_follow_line.py 增加了一次HSV分割来做红绿灯识别&#xff08;建议到时候用手机或者平板显示红色或者绿色图片&#xff09;&#xff0c;红绿图片&#xff1a; 将检测道路位置的方式从重心变为最接近屏幕中心的道路像素点。 检测不到道路之…

ubuntu 22.04部署dzzoffice及安装onlyoffice插件

目录 一、配置阿里源 二、安装数据库 三、安装依赖组件 &#xff08;一&#xff09;安装php7.4 &#xff08;二&#xff09;安装apache2 四、下载 dzzoffice 五、安装dzzoffice 六、安装onlyoffice插件 &#xff08;一&#xff09;从github下载小胡版onlyoffice替代原来…

如何学习及计算机编程,入门看这一篇就够了---以c语言为例

信息时代&#xff0c;计算机变成不再是专业性很强的一门学科&#xff0c;更多的是变成了一种工具 用计算机爬取信息&#xff08;爬虫&#xff09;进行数据分析&#xff0c;数据可视化&#xff08;大数据的某个方面&#xff09;处理海量的数据&#xff0c;如excel&#xff08;百…

声音生成项目(4)——从VariantAutoencoder(VAE)到VQ-VAE矢量量化变分编码器

文章目录 论文介绍步骤具体讲解自定义矢量量化层获取最近距离的码字的索引计算推导损失函数相关参考 矢量量化层的代码实现完整代码实现 论文介绍 不同于变分编码器和自动编码器&#xff0c;vq-vae中的latent space是离散的&#xff0c;并不是连续的&#xff0c;这能够避免后验…

第3章“程序的机器级表示”:理解指针

指针是 C 语言的一个重要特色。它们提供一种统一方式&#xff0c;能够远程访问数据结构。 指针基本的概念其实非常简单&#xff0c;下面的代码说明了许多这样的概念&#xff1a; struct str { /* Example Structure */int t;char v; };union uni { /* Example Union */int t;…

大厂C++面试基础题第1辑——虚函数七题精讲之一

> “虚函数的作用” 是面向对象的C编程最基础也最核心的知识点&#xff0c;如果不能无法正确回答本题&#xff0c;则只此一题&#xff0c;不管大厂还是小厂&#xff0c;都铁定无缘了。 概述 “虚函数” 是 C面向对象三最&#xff1a;最基础、最重要、最关键的知识点。我们从…

什么是Vue的Vite构建工具?如何使用Vite进行项目开发

什么是Vue的Vite构建工具&#xff1f;如何使用Vite进行项目开发 介绍 Vite是一个由Vue.js核心团队开发的构建工具。它的目标是提供一种快速的开发体验&#xff0c;同时保持生产环境的稳定性和可靠性。Vite使用了ES模块作为开发环境的原生模块格式&#xff0c;通过在开发服务器…

C++11中的关键字constexpr

文章目录 1、constexpr修饰普通变量2、constexpr修饰函数3、constexpr修饰类的构造函数 constexpr 关键字的功能是使指定的常量表达式获得在程序编译阶段计算出结果的能力&#xff0c;而不必等到程序运行阶段。C 11 标准中&#xff0c;constexpr 可用于修饰普通变量、函数&…

【Leetcode】DP | 序列及子数组问题

300 最长递增子序列 求数组最长严格递增子序列的长度。 D [ i ] D[i] D[i]代表以 n u m s [ i ] nums[i] nums[i]结尾的最长递增子序列的长度。 D [ i ] max ⁡ j < i , n u m s [ i ] > n u m s [ j ] ( D [ j ] 1 ) D[i] \max_{j < i,\ nums[i]>nums[j]}(D[…

什么是Vue的UI框架?

什么是Vue的UI框架&#xff1f; Vue.js 是一款流行的 JavaScript 框架&#xff0c;用来构建现代的单页面应用程序&#xff08;SPA&#xff09;。Vue.js 提供了丰富的功能和 API&#xff0c;但是在构建应用程序时&#xff0c;我们还需要使用一些 UI 组件来实现复杂的交互和界面…

【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

02- 输入、输出及运算符(C语言)

一 输入、输出 1.1 输出函数 printf 函数是一个可变参数函数&#xff0c;参数的个数不定&#xff1a;int printf(const char *format, ...) printf("%d\n", x); printf("%d %d\n", x, y); 1.2 输入函数 1.2.1 scanf函数&#xff1a;int scanf(const …

利用AI点亮副业变现:5个变现实操案例的启示

AI变现副业实操案例 宝宝起名服务AI科技热点号头像壁纸职业头像收徒&#xff1a;萌娃头像定制头像平台挂载 小说推广号流量营销号百家号AI共创计划公众号流量主 知识付费知识星球小报童&#xff1a; 整体思维导图&#xff1a; 在这里先分享五个实操案例: 宝宝起名服务AI科技热…

[MySQL]一文带你学明白数据库控制语言——DCL

前言 嗨咯&#xff0c;小伙伴大家好呀&#xff01;好几天没见了&#xff0c;周末过得怎么样啊&#xff01;之前学过的SQL语句不会都忘了吧。如果忘了的话大家可以看一下前几期的文章。本期要学习的是SQL语句中的数据库控制语句——DCL&#xff0c;学习完毕之后MySQL中的SQL语句…

探索ll-hls低延迟直播协议

HLS全称为HTTP Live Streaming&#xff0c;其中m3u8作为描述协议&#xff0c;指向一系列切片文件。支持多码流与自适应码率&#xff0c;支持广告无缝播放&#xff0c;支持CMAF协议的低延时直播&#xff0c;也支持CDN动态选择。 我们先看下HLS整体架构&#xff0c;由三部分构成…

存储技术3 数据保护: RAID

Why RAID 性能限制了磁盘驱动单独的驱动存在预期的使用寿命 MTBF测量若一个驱动器的MTBF是750 000小时&#xff0c; 阵列中有100个驱动&#xff0c; 阵列的MTBF会变成 750000 / 100 7500小时 RAID用于减缓这个问题RAID特点 增大容量高可用性增强的性能 RAID implementation…

仿微信我的列表功能菜单按钮 我的个人中心页面功能菜单

前端vue自定义仿微信我的列表功能菜单按钮 我的个人中心页面功能菜单, 下载完整代码请访问https://ext.dcloud.net.cn/plugin?id12990 效果图如下: #### 使用方法 使用方法 <!-- leftTitle:标题 icon&#xff1a;左边图标 click&#xff1a;点击事件 --> <ccMe…

【java】IO流

IO流 原理 分类 字节流与字符流 节点流与包装流 Java IO详解&#xff08;五)------包装流 - YSOcean - 博客园 (cnblogs.com)JAVA I/O流 字符流和字节流、节点流和处理流(包装流、过滤流)、缓冲流_过滤流和缓冲流,字节流的关系_X-Dragon烟雨任平生的博客-CSDN博客 字符流 i…