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方法即可达到目的

相关推荐
Li Ming&5 小时前
Python办公自动化:利用Python批量将PDF转换为图片文件
python·pdf·pip
sycmancia7 小时前
Qt——多线程中的信号与槽(二)
jvm·qt
ji_shuke7 小时前
Vue3 前端批量打印 PDF/图片踩坑记:跨域、合并打印、对话框闪退与按钮一直 loading
前端·pdf·状态模式·pdf打印
Am-Chestnuts8 小时前
Mermaid流程图怎么导出Word/PDF?DS随心转批量保存AI多轮修改与源码
pdf·aigc·word·流程图
FL162386312910 小时前
pdf批量转ofd本地离线操作简单支持win10及以上系统
pdf
薛定猫AI11 小时前
【技术干货】大模型文档结构化提取实战:Python解析PDF发票并批量生成CSV
java·python·pdf
庖丁AI13 小时前
PDF 表格提取到 CSV 和 JSON 怎么做?复杂版式要先解决结构化解析
pdf·json
王莎莎-MinerU13 小时前
解析回归集:RAG 和 Agent 上线前,先把表格、公式、版面测清楚
人工智能·算法·数据挖掘·回归·pdf·ocr
复园电子16 小时前
企业级PDF批量盖章方案选型指南
数据库·pdf