QT开发中文网

poppler qt5 页面跳转

要实现页面跳转,可以使用 Poppler 库提供的 Page 类和 Document 类。具体步骤如下:

  1. 加载 PDF 文档并获取 Document 对象。
Poppler::Document *doc = Poppler::Document::load(fileName);
  1. 获取目标页码对应的 Page 对象。
int targetPageNum = 5; // 目标页码
Poppler::Page *targetPage = doc->page(targetPageNum - 1); // 注意:页码从0开始编号
  1. 获取目标页码对应的矩形区域,并将其设置为当前视图区域。
QRectF targetRect = targetPage->pageRect(); // 以点为单位的矩形范围
QPointF targetTopLeft = targetRect.topLeft(); // 矩形左上角的坐标
view->setRenderHint(QPainter::Antialiasing); // 设置渲染选项
view->fitInView(QRectF(targetTopLeft, view->viewport()->size()), Qt::KeepAspectRatio); // 将目标区域缩放到视图大小,并保持宽高比例不变

以下是一个完整的示例代码:

#include <poppler/qt5/poppler-qt5.h>
#include <QMainWindow>
#include <QVBoxLayout>
#include <QPushButton>
#include <QGraphicsView>

class MainWindow : public QMainWindow {
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) {
        QWidget *centralWidget = new QWidget(this);
        setCentralWidget(centralWidget);

        QVBoxLayout *layout = new QVBoxLayout(centralWidget);
        QPushButton *button = new QPushButton("Jump to page 5", centralWidget);
        layout->addWidget(button);

        QGraphicsView *view = new QGraphicsView(centralWidget);
        view->setRenderHint(QPainter::Antialiasing);
        layout->addWidget(view);

        connect(button, &QPushButton::clicked, [=]() {
            // 加载PDF文档
            QString fileName = "test.pdf";
            Poppler::Document *doc = Poppler::Document::load(fileName);

            // 获取目标页码对应的Page对象
            int targetPageNum = 5;
            Poppler::Page *targetPage = doc->page(targetPageNum - 1); // 页码从0开始编号

            // 获取目标页码对应的矩形区域,并将其设置为当前视图区域
            QRectF targetRect = targetPage->pageRect();
            QPointF targetTopLeft = targetRect.topLeft();
            view->fitInView(QRectF(targetTopLeft, view->viewport()->size()), Qt::KeepAspectRatio);

            // 释放资源
            delete targetPage;
            delete doc;
        });
    }
};

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    MainWindow win;
    win.show();
    return app.exec();
}

运行后,点击按钮即可跳转到第五页,并将该页缩放到视图大小。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=1048

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?