qt 使用qtpdfium实现读取pdf文件

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

要想获取源码可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文件的文字内容。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Qt中可以使用QPdfDocument类来读取PDF文件,并且可以使用QPainter类来在界面或窗口中显示PDF页面。 下面是一个简单的Qt程序,演示如何读取PDF文件并显示: 1. 创建一个新的Qt Widgets Application项目,并添加一个QPushButton和一个QLabel控件。 2. 在QPushButton的clicked信号中,添加读取PDF文件并显示的代码: ```cpp void MainWindow::on_pushButton_clicked() { QString fileName = QFileDialog::getOpenFileName(this, tr("Open PDF"), "", tr("PDF Files (*.pdf)")); if (fileName.isEmpty()) { QMessageBox::warning(this, tr("Warning"), tr("Cannot open PDF file!")); return; } QPdfDocument pdfDoc(fileName); if (!pdfDoc.isInitialised()) { QMessageBox::warning(this, tr("Warning"), tr("PDF document cannot be initialized!")); return; } if (pdfDoc.numPages() <= 0) { QMessageBox::warning(this, tr("Warning"), tr("PDF document contains no pages!")); return; } int pageNum = 1; QImage img = pdfDoc.pageImage(pageNum - 1, 300, 300); ui->label->setPixmap(QPixmap::fromImage(img)); } ``` 3. 运行程序,点击按钮选择一个PDF文件,程序将显示第一页的PDF页面。 说明: (1)首先使用QFileDialog来选择PDF文件,如果选择的文件名为空,则给出错误提示并返回。 (2)创建QPdfDocument对象,并检查是否初始化成功,如果错误则给出错误提示并返回。 (3)检查PDF文件是否包含页面,如果不包含则给出错误提示并返回。 (4)通过调用QPdfDocument的pageImage方法来返回一个QImage对象,然后将其转换为QPixmap对象并在QLabel控件中显示。 (5)注意在QPdfDocument的构造函数中传入的文件名要使用QString类型。 (6)在本例中我们只显示第一页,如果想要显示其他页,只需要设置pageNum变量即可。 以上代码只是演示了如何在界面中显示PDF文件,如果需要更多的功能,比如支持缩放、翻页、搜索、文本提取等,则需要使用更多的Qt组件和API。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值