Qt使用poppler读取pdf

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yinyuchen1/article/details/77979965
QT运行环境是QtCreater5.6 MinGW32位,先将编译好的poppler库文件放到项目目录下
将头文件include文件夹放入项目路径下

将头文件lib文件夹放入项目路径下

将dll文件放到release目录下,不然会crash的

然后链接外部库.a文件如下图

下面是MainWindow.cpp文件内容
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "poppler-qt5.h"

#include <QFileDialog>
#include <QPixmap>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

this->setWindowTitle(tr("灏夏星辰 - 打开pdf文件"));

this->setWindowIcon(QIcon(":/image/image/image.png"));

ui->scrollArea->setFrameShape(QFrame::NoFrame); //设置滑动区域无边框
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::on_actionOpenPdf_triggered()
{
/*********************************************************************************
* 思路:
* 将打开的pdf每页提取成图片,将每张图片放入一个label控件中,
* 设置一个垂直布局,将多个label控件垂直起来放入widget
* 然后将widget放入scrollArea控件中
* *******************************************************************************/
QString fileName = QFileDialog::getOpenFileName(this, tr("选择文件"), tr(""), tr("pdf文件 (*.pdf)"));

if(fileName.isNull() || !fileName.contains(".pdf")) return;

Poppler::Document * document = Poppler::Document::load(fileName); //将pdf文件加载进Document

QWidget * widget = new QWidget(this);

QVBoxLayout *vboxLayout = new QVBoxLayout(this);

for(int i = 0; i < document->numPages(); i ++) //根据获取到的pdf页数循环
{
QLabel * label = new QLabel(this);

QImage image = document->page(i)->renderToImage(216, 216); //截取pdf文件中的相应图片

label->setPixmap(QPixmap::fromImage(image)); //将该图片放进label中

vboxLayout->addWidget(label);
vboxLayout->setAlignment(widget,Qt::AlignCenter);
}
widget->setLayout(vboxLayout); //设置布局

ui->scrollArea->setWidget(widget); //设置widget
}
具体演示效果:


代码路径:http://download.csdn.net/download/yinyuchen1/9977532
展开阅读全文

没有更多推荐了,返回首页