QT5.15.2加载pdf为QGraphicsScene的背景

5.15.2使用pdf

必须要安装QT源码,可以看到编译器lib目录已经有pdf相关的lib文件,d是debug

1.找到源码目录:D:\soft\QT\5.15.2\Src\qtwebengine\include

复制这两个文件夹到编译器的包含目录中:D:\soft\QT\5.15.2\msvc2019_64\include

2.找到D:\soft\QT\5.15.2\Src\qtwebengine\src\pdf\api目录,将目录下的文件夹全部复制替换到D:\soft\QT\5.15.2\msvc2019_64\include\QtPdf中。

3.将D:\soft\QT\5.15.2\Src\qtwebengine\src\pdfwidgets以下文件复制替换到到D:\soft\QT\5.15.2\msvc2019_64\include\QtPdfWidgets中

4.修改pro文件,不用加入附加包含目录,只需要加入附加库目录和lib名称即可

cpp 复制代码
LIBS += -LD:/soft/Qt/5.15.2/msvc2019_64/lib

CONFIG(debug, debug|release){
    LIBS += -lQt5Pdfd
    LIBS += -lQt5PdfWidgetsd
}
else
{
    LIBS += -lQt5Pdf
    LIBS += -lQt5PdfWidgets
}

5.测试

cpp 复制代码
#include <QApplication>
#include <QtPdf/QPdfDocument>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QPdfDocument *doc = new QPdfDocument;
    doc->load("D:/1.pdf");
    QSizeF pageSize = doc->pageSize(0);
    QImage image = doc->render(0,pageSize.toSize());
    image.save("D:/1.png");
    return a.exec();
}

加载pdf为QGraphicsScene的背景

cpp 复制代码
#include <QApplication>
#include <QtPdf/QPdfDocument>
#include <QGraphicsScene>
#include <QGraphicsView>
class MyQGraphicsScene:public QGraphicsScene
{
public:
    MyQGraphicsScene(QObject *parent = nullptr):QGraphicsScene(parent)
    {
        doc = new QPdfDocument(this);
    }
    void drawBackground(QPainter *painter, const QRectF &rect) override
    {
        doc->load("D:/1.pdf");
        QSizeF pageSize = doc->pageSize(0);
        QImage image = doc->render(0,pageSize.toSize());
        painter->setPen(Qt::blue);
        painter->setBrush(image);
        painter->drawRect(sceneRect());
    }

private:
    QPdfDocument *doc = nullptr;
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // 创建自定义场景
    MyQGraphicsScene *scene = new MyQGraphicsScene();
    scene->setSceneRect(0,0,500,400);
    // 创建视图,并设置场景
    QGraphicsView *view = new QGraphicsView(scene);
    view->setFixedSize(800,600);
    view->show();
    return a.exec();
}

重写QGraphicsScene的drawBackground方法即可达到目的

相关推荐
asdzx674 小时前
使用 Python 快速提取 PDF 中的表格
python·pdf
南风微微吹7 小时前
2026英语六级作文模版万能句子PDF电子版
pdf·英语六级
又是被bug折磨的一天8 小时前
对多个pdf合同文件批量命名
pdf
郝学胜_神的一滴9 小时前
Qt 高级开发 021:零基础吃透 QVBoxLayout 垂直布局
c++·qt
南风微微吹9 小时前
2026年英语四级作文模版万能句子PDF电子版
pdf·英语四级
这是个假程序员12 小时前
PDF分色、智能PDF黑彩识别工具
pdf
夜勤月12 小时前
HarmonyOS 6.0 ArkWeb实战:PDF背景色自定义功能全解析(附完整代码+避坑指南)
华为·pdf·harmonyos
relis12 小时前
AI使用小技巧: 用zed和MinerU本地版,同时学习PDF文档的文字和图片
ai·pdf·大模型·agent
海盗123413 小时前
C#中PDF操作-QuestPDF页面设置与布局
java·pdf·c#
誰能久伴不乏14 小时前
libmodbus 在 Windows 环境下报 “Invalid argument“ 的排错记录
c++·qt·modbus