QT自带PDF库的使用

news2024/11/25 13:52:44

      QT自带PDF库可以方便的打开PDF文件,并将文件解析为QImage,相比网上提供的开源库,QT自带PDF库使用更方便,也更加可靠,然而,QT自带PDF库的使用却不同于其他通用库的使用,具备一定的技巧。

1. 安装

      QTPDF在QT中属于QWebEngine ,在安装时一定要选择“Qt WebEngine”和“Sources”

       安装完成后,在QT的安装目录lib下就多了QT PDF相关的静态库

2.  环境搭建

    由于QT pdf文件的头文件位于src目录下,所以要将相关的头文件拷贝到QT的Include目录下

将文件夹C:\Qt\5.15.0\Src\qtwebengine\src\pdf拷贝到C:\Qt\5.15.0\msvc2019_64\include

    为了QT头文件编译时能够通过,将C:\Qt\5.15.0\Src\qtwebengine\src拷贝到目录C:\Qt\5.15.0\Src下

3. 工程环境配置

    为了链接能够通过,需在工程中增加QT模块的设置和工程库

4. QPDFDocument的使用

      引用头文件

    

#include <QtPdf/qpdfdocument.h>

    利用QPdfDocument读取pdf文件并转化为QImage

        QString FileName = QFileDialog::getOpenFileName(this, nullptr, "E:/CAD files/PDF/", "PDF Files(*.*)");
		if (FileName.isEmpty())
		{
			return;
		}
		
		QPdfDocument* document = new QPdfDocument;
		document->load(FileName);
		int totalPage = document->pageCount();

		m_pdfImageList.clear();
		for (int page = 0; page < totalPage; page++)
		{
			QSizeF size = document->pageSize(page);
			QImage image = document->render(page, QSize(size.width(), size.height()));
			m_pdfImageList.push_back(image);
		}
		document->close();

显示QImage

QImage image = m_pdfImageList[m_CurrentPage];

	ui.labelImage->clear();
	ui.labelImage->setPixmap(QPixmap::fromImage(image));

5. 测试效果

 

 

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

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

相关文章

Namecheap 便宜域名注册使用,直接购买

FREENOM免费域名不能注册了&#xff0c;现在只能自己动手注册便宜的域名&#xff0c;前面我们也记录了不能注册FREENOM免费域名不能注册怎么办&#xff0c;不能注册FREENOM免费域名&#xff0c;怎么办&#xff0c;这里是解决方案&#xff01; 注册6元域名。 现在我们又多了一个…

机器学习深度学习——文本预处理

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——序列模型&#xff08;NLP启动&#xff01;&#xff09; &#x1f4da;订阅专栏&#xff1a;机器学习&am…

Blazor前后端框架Known-V1.2.11

V1.2.11 Known是基于C#和Blazor开发的前后端分离快速开发框架&#xff0c;开箱即用&#xff0c;跨平台&#xff0c;一处代码&#xff0c;多处运行。 Gitee&#xff1a; https://gitee.com/known/KnownGithub&#xff1a;https://github.com/known/Known 概述 基于C#和Blazo…

运维作业—5

一.基于 CentOS 7 构建 LVS-DR 群集 1.配置LVS 2.第一台real server&#xff08;192.168.100.139:80&#xff09; 手工在RS端绑定VIP 手工在RS端抑制ARP响应 3.第二台real server&#xff08;192.168.100.140:80&#xff09; 安装arptables并启动 使用arptables实现抑制 测试…

网卡内部的 DMA

前言 MCU、SOC 内部通常带有 DMA 控制器&#xff0c;要想使用 DMA 通常需要如下操作 选择通道配置传输方向&#xff08;内存到外设、内存到内存、外设到内存&#xff09;设置源地址、目的地址&#xff08;内存地址、外设地址&#xff09;设置源地址、目的地址是否自增设置位宽…

【Spring Cloud 】基于微服务架构的智慧工地监管平台源码带APP

智慧工地监管平台是一种利用物联网、云计算、大数据等技术手段实现工地信息化管理的解决方案。它通过数据采集、分析和应用&#xff0c;在实时监控、风险预警、资源调度等方面为工地管理者提供了全方位的支持&#xff0c;提高了工地管理的效率和质量。智慧监管平台还基于“云端…

Detector定位算法在FPGA中的实现——section1 原理推导

关于算法在FPGA中的实现&#xff0c;本次利用业余的时间推出一个系列章节&#xff0c;专门记录从算法的推导、Matlab的实现、FPGA的移植开发与仿真做一次完整的FPGA算法开发&#xff0c;在此做一下相关的记录和总结&#xff0c;做到温故知新。 这里以Detector在Global Coordina…

C++11 新特性 ---- 模板的优化

C11 模板机制:① 函数模板② 类模板模板的使用&#xff1a;① 范围&#xff1a;模板的声明或定义只能在全局或类范围进行&#xff0c;不可以在局部范围&#xff08;如函数&#xff09;② 目的&#xff1a;为了能够编写与类型无关的代码函数模板&#xff1a;- 格式&#xff1a;t…

Glass指纹识别工具,多线程Web指纹识别工具-Chunsou

Glass指纹识别工具&#xff0c;多线程Web指纹识别工具-Chunsou。 Glass指纹识别工具 Glass一款针对资产列表的快速指纹识别工具&#xff0c;通过调用Fofa/ZoomEye/Shodan/360等api接口快速查询资产信息并识别重点资产的指纹&#xff0c;也可针对IP/IP段或资产列表进行快速的指…

chrome插件开发实例05-拦截页面请求

目录 功能 演示 源代码下载 manifest.json devtools.html devtools.js background.js 功能 拦截任意打开页面的请求信息&#xff0c;包括&#xff1a;URL&#xff0c;参数&#xff0c;请求方式method, 返回status&#xff0c;返回体大小&#xff0c;返回原始内容 演示 源…

【工程实践】解决Synonyms无法下载词向量文件

1.前言 使用EDA(Easy Data Augmentation)做数据增强时&#xff0c;需要借助Synonyms库&#xff0c;完成同义词的提取。 Synonyms 是一个中文近义词工具包&#xff0c;它可用于如文本对齐、推荐算法、相似度计算、语义偏移、关键字提取、概念提取、自动摘要、搜索引擎等很多自然…

FFmpeg常见命令行(三):FFmpeg转码

前言 在Android音视频开发中&#xff0c;网上知识点过于零碎&#xff0c;自学起来难度非常大&#xff0c;不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》。本文是Android音视频任务列表的其中一个&#xff0c; 对应的要学习的内容是&#xff1a;如何使…

移动硬盘不显示盘符简单处理方法

通常情况下&#xff0c;将移动硬盘连接到电脑后会被赋予一个特定的盘符&#xff0c;以便用户可以访问和操作其中的文件和文件夹。然而&#xff0c;如果移动硬盘不显示盘符&#xff0c;意味着操作系统无法根据该硬盘的文件系统和存储信息识别出其所对应的盘符&#xff0c;这将导…

[LeetCode - Python]167.两数之和 II (Medium);125. 验证回文串(Easy)

1.题目&#xff1a; 167.两数之和 II &#xff08;Medium&#xff09; 1.代码&#xff1a; class Solution:def twoSum(self, numbers: List[int], target: int) -> List[int]:#由于数组是已按非递减顺序排列&#xff0c;因此可以对撞双指针&#xff1b;le , ri 0 , len…

JWT的使用

文章目录 前言一、在yml文件中配置参数二、创建JwtUtil.java三、创建JwtProperties.java四、创建JwtClaimsConstant.java五、创建JwtTokenAdminInterceptor.java六、注册到WebMvcConfiguration1.4.3 ThreadLocal 前言 一、在yml文件中配置参数 sky:jwt:# 设置jwt签名加密时使…

骨传导耳机是怎么工作的?骨传导耳机是智商税产品吗?

骨传导耳机是怎么工作的&#xff1f;骨传导耳机是智商税产品吗&#xff1f; 骨传导耳机是怎么工作的&#xff1f; 骨传导耳机的传声方式跟传统耳机完全不同&#xff0c;骨传导耳机就是利用骨传导的原理是直接将人体骨结构作为传声介质&#xff0c;通过颅骨来进行声音传播的&am…

物联网与5G引领智慧城市时代的到来

智慧城市需要依赖于多种技术&#xff0c;这些技术的应用将城市转变为高效、智能、可持续发展的现代化城市。智慧城市是基于信息技术、物联网和大数据等先进技术的融合&#xff0c;旨在提升城市的运行效率、资源利用效率和居民生活质量。以下是智慧城市需要依赖的主要技术&#…

GD32F103VE深度睡眠与唤醒

GD32F103VE深度睡眠与唤醒&#xff0c;执行WFI指令或执行1次WFE指令&#xff0c;命令CPU进入深度睡眠模式。 电源管理单元有3种省电模式:睡眠模式&#xff0c;深度睡眠模式和待机模式&#xff1b; 进入深度睡眠的步骤如下&#xff1a; 1,配置SLEEPDEEP1 2,配置STBMOD0 3,执行W…

[K8S:命令执行:权限异常:解决篇]:通过更新kubeconfig配置相关信息

文章目录 一&#xff1a;场景复现&#xff1a;1.1&#xff1a;关键信息&#xff1a;1.2&#xff1a;全异常日志输出&#xff1a; 二&#xff1a;解决流程&#xff1a;2.1&#xff1a;更新 kubeconfig&#xff1a;2.1.1&#xff1a;执行命令&#xff1a; 2.2&#xff1a;再次执行…

Android平台一对一音视频通话方案对比:WebRTC VS RTMP VS RTSP

一对一音视频通话使用场景 一对一音视频通话都需要稳定、清晰和流畅&#xff0c;以确保良好的用户体验&#xff0c;常用的使用场景如下&#xff1a; 社交应用&#xff1a;社交应用是一种常见的使用场景&#xff0c;用户可以通过音视频通话进行面对面的交流&#xff1b;在线教…