QT自带PDF库的使用

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的使用

引用头文件

cpp 复制代码
#include <QtPdf/qpdfdocument.h>

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

cpp 复制代码
        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

cpp 复制代码
QImage image = m_pdfImageList[m_CurrentPage];

	ui.labelImage->clear();
	ui.labelImage->setPixmap(QPixmap::fromImage(image));
  1. 测试效果
相关推荐
汉克老师1 分钟前
CSP-J 初赛(以满分为目标):第二十七课 《图的遍历——BFS广度优先搜索——像“水波纹”一样,一层一层地搜索》
c++·csp-j·小学生·学c++编程
闻缺陷则喜何志丹4 分钟前
【动态规划】P3609 [USACO17JAN] Hoof, Paper, Scissor G
c++·算法·动态规划·洛谷
汉克老师22 分钟前
CSP-J 初赛(以满分为目标):第二十六课 《图的遍历——DFS深度优先搜索——从“树的先序遍历”走进真正的图世界》
c++·csp-j·小学生·学c++编程
程序猿编码28 分钟前
基于GGML的C++17轻量化语音推理引擎:说话人识别与语音分析技术全解析
开发语言·c++·pytorch·深度学习·神经网络·大模型
影视飓风TIM1 小时前
C++哈希表深度剖析:冲突处理、rehash、迭代器与unordered容器封装
c++·哈希算法·散列表
秋田君1 小时前
Qt_QMediaPlayer类与QMediaPlaylist类
开发语言·qt
mengzhi啊1 小时前
QT程序界面自适应1080/2K/4K屏幕。qputenv或者setAttribute
qt
C++ 老炮儿的技术栈1 小时前
Qt5 使用 QPainter 绘制阿基米德螺线
开发语言·c++·windows·qt·代码化
xxwxx__2 小时前
深入理解 C++ STL:stack、queue 与 deque 从使用到底层实现全解析
开发语言·c++·算法
wuminyu2 小时前
JVM锁膨胀与Futex源码解析
java·linux·c语言·jvm·c++