定制网站建设服务商,网站项目设计流程案例,c 做的网站怎么上传,图片的制作方法《一、QT的前世今生》
《二、QT下载、安装及问题解决(windows系统)》《三、Qt Creator使用》
《四、Qt 的第一个demo-CSDN博客》
《五、带登录窗体的demo》
《六、新建窗体时#xff0c;几种窗体的区别》
《七、Qt 信号和槽》 《八、Qt C 毕业设计》
《九、Qt … 《一、QT的前世今生》
《二、QT下载、安装及问题解决(windows系统)》《三、Qt Creator使用》
《四、Qt 的第一个demo-CSDN博客》
《五、带登录窗体的demo》
《六、新建窗体时几种窗体的区别》
《七、Qt 信号和槽》 《八、Qt C 毕业设计》
《九、Qt C 数据库开发》
《十、Qt 操作PDF文件-CSDN博客》
一、下载Poppler开源库
使用Poppler第三方开源库下载地址Poppler我下载的是最新版的poppler-24.01.0
poppler-24.01.0压缩包文件下载后需要自行编译生成可用的类库。如果Poppler解析出来的PDF文件无法正常显示中文需要将poppler-data-0.4.12包里的相关文件拷贝到指定目录下才能正常显示中文。我的中文显示正常所以我没有下载poppler-data-0.4.12包。 也可以下载从Poppler Win32 download | SourceForge.net 下载windows下直接可用的dll库但是上边的poppler-24.01.0压缩包还是需要下载的因为头文件在此包中。 二、搭建环境
在程序目录下新建poppler文件夹我把公用的类库都放到了CommDEV文件夹下 将poppler-24.01.0压缩包中的 \qt5\src 文件夹下的所有文件拷贝到上边新建的poppler文件夹中。因为像poppler-qt5.h对应的是poppler-qt5.dll在写程序时都要用到。 将poppler-0.39.0-win32包解压缩后的libpoppler.dlllibpoppler-qt5.dll和lib文件夹下的libpoppler.dll.alibpoppler-qt5.dll.a 这4个dll拷贝到程序所在的目录下的poppler文件夹内。 以上步骤操作大家仔细看别把文件放错了地方。
三、配置pro文件 以下标红的地方需要注意我们是在windows系统下开发没有用的咱们不选。 再按以上的步骤添加另一个dll 添加完的pro文件里多出了以下这些代码
表示添加成功。 四、开始写代码
引用头文件
#include poppler-qt5.h 编写代码 QString filenameQFileDialog::getOpenFileName(this,QString::fromUtf8(打开),,pdf file (*.pdf));//获取pdf文件路径
if(filename.isEmpty()){
return;//如果文件路径为空则返回
}
Poppler::Document* document Poppler::Document::load(filename);//加载pdf文件
if (!document || document-isLocked()) {
QMessageBox::information(this,提示,QString::fromUtf8(无法打开文件:%1).arg(filename));//如果加载不成功输出错误信息并返回
delete document;
return;
}
//再次检查document是否可用
if (document 0) {
// ui-label_message-setText(QString::fromUtf8(文件内无内容:%1).arg(filename));//不可用则输出错误信息并返回
return;
}
//将PDF文档的每一页输出为QImage
// for(int pageNumber0;pageNumbernumPages();pageNumber){
//获取指定页码的页面页码从0开始
Poppler::Page* pdfPage document-page(0);
if (pdfPage 0) {
qDebug()
return;
}
//将页面内容转换为QImage
QImage image pdfPage-renderToImage();
// double xres72.0, yres72.0; int x-1, y-1, width-1, height-1;
// QImage image pdfPage-renderToImage(xres, yres, x, y, width, height);
// if (image.isNull()) {
// qDebug()
// return;
// }
// 在QLabel中显示QImage
QLabel *label new QLabel(this);
label-setPixmap(QPixmap::fromImage(image));
ui-horizontalLayout-addWidget(label);
//使用完后记得释放掉Poppler::Page* pdfPage
delete pdfPage;
// }
delete document;
如果在编译程序时出现错误缺少poppler-export.h可从以下连接下载
https://download.csdn.net/download/zhouhui1982/88747128
运行效果 目前只能显示第一页的pdf内容在下一章节中我们再来细化pdf的相关操作比如滚动条下一页上一页按钮等。以前打包依赖库支持可以单独运行的程序。