当前位置: 首页 > news >正文

Qt 通过pdfium将网络上的pdf显示为图片

前言

遇到个需求,就是在qt客户端显示服务器上的pdf文档,文档以base64格式返回给客户端。以下是实现方法:

1、在pro文件增加以下代码:

INCLUDEPATH += $$PWD/PDFiumSDK/include/publicDEPENDPATH += $$PWD/PDFiumSDK/include/publicLIBS += -l$$PWD/PDFiumSDK/lib/x86/pdfium

2、pdf转图片
 

FPDF_InitLibrary();
// base64的数据要先转为二进制
QByteArray bytes = QByteArray::fromBase64(strBase64Code.toUtf8());
FPDF_DOCUMENT doc = FPDF_LoadMemDocument(bytes.data(), bytes.size(), "");
int pageCount = FPDF_GetPageCount(doc);
for (int t = 0; t < pageCount; t++)
{FPDF_PAGE page = FPDF_LoadPage(doc, t);int width = static_cast<int>(FPDF_GetPageWidth(page));int height = static_cast<int>(FPDF_GetPageHeight(page));FPDF_BITMAP bitmap = FPDFBitmap_Create(width, height, 0);FPDFBitmap_FillRect(bitmap, 0, 0, width, height, 0xFFFFFFFF);FPDF_RenderPageBitmap(bitmap, page, 0, 0, width, height, 0, 0);const char* buffer = reinterpret_cast<const char* >(FPDFBitmap_GetBuffer(bitmap));// 数据转图片,使用不同的Format可能会有图片失真的现象,要多试几次QImage image((uchar*)buffer, width, height, QImage::Format_RGB32);QLabel *label = new QLabel(this);label->setPixmap(QPixmap::fromImage(image));label->setFixedSize(width, height);// TODO addwidget(label);把label添加到显示控件中FPDF_ClosePage(page);count++;
}
FPDF_CloseDocument(doc);
FPDF_DestroyLibrary();

http://www.lryc.cn/news/311826.html

相关文章:

  • C语言数据结构与算法——深度、广度优先搜索(DFS、BFS)
  • Golang Channel 详细原理和使用技巧
  • CSS的浮动属性,web前端开发工程师
  • Dubbo的集群容错方案
  • 两天学会微服务网关Gateway-Gateway路由规则
  • three.js如何实现简易3D机房?(一)基础准备-下
  • Android高级工程师面试实战,三幅图给你弄懂EventBus核心原理
  • 消息队列-kafka-服务端处理架构(架构,Topic文件结构,服务端数据的一致性)
  • ES之API系列--index template(索引模板)的用法(有实例)
  • electron+vue3全家桶+vite项目搭建【28】封装窗口工具类【2】窗口组,维护窗口关系
  • docker安装ES和kibana
  • uniapp微信小程序获取当前位置
  • HarmonyOS创建项目和应用—设置数据处理位置
  • 3.1_2024ctf青少年比赛部分web题
  • Vue3:OptionsAPI 与 CompositionAPI的比较
  • Rust! 无VDom! 尤雨溪解析 Vue.js 2024 新特性
  • Windows上websocket客户端连接定时存储消息到文件并加载文件定时发送服务端工具实现
  • 【STM32+OPENMV】二维云台颜色识别及追踪
  • JavaScript基础3之面向对象关于面向过程、函数式编程、对比、构造函数、原型
  • 运用Tensorflow进行目标检测
  • 【源码】imx6ull实现触摸屏单点实验-移植tslib和qt
  • 【JSON2WEB】07 Amis可视化设计器CRUD增删改查
  • ThreeJs同一个场景多个相机的显示
  • Vue基础篇
  • 计算机视觉基础知识(十六)--图像识别
  • 数仓开发-2023/2/29
  • ipv6过渡技术-IPv4 over IPv6隧道示例
  • SpringBoot约定大于配置
  • DHCP自动获取IP地址实验(华为)
  • 探索Terraform实践:优化基础设施管理