基于qt与mupdf库的pdf阅读器开发
pdf阅读器
- 下载mupdf源码
- 编译mupdf源码
- qt工程链接mupdf源码静态库
- 参照 mupdf/docs/examples/example.c 开发
mainwindows.ui
mainwindows.h
#include "mainwindow.h"
#include "ui_mainwindow.h"#include <QMessageBox>
#include <QDebug>
#include <QImage>
#include <QPixmap>
#include <QLabel>#include "mupdf/fitz.h"
#include "mupdf/pdf.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);char *input = const_cast< char* >("/home/kevin/Desktop/桌面 快捷方式/labview实验/《计算机虚拟仪器技术》实验指导书(肖).pdf"); float zoom, rotate;int page_number, page_count;fz_context *ctx;fz_document *doc;fz_pixmap *pix;fz_matrix ctm;//第一页为0int x, y;page_number=0;//100%缩放比zoom=100;//旋转为0rotate=0;//创建上下文ctx = fz_new_context(NULL, NULL, FZ_STORE_UNLIMITED);if (!ctx){qDebug()<<stderr<<"cannot create mupdf context";return;}//注册文档控制fz_try(ctx)fz_register_document_handlers(ctx);fz_catch(ctx){qDebug()<<stderr<<"cannot register document handlers:"<< fz_caught_message(ctx);fz_drop_context(ctx);return;}//打开文档fz_try(ctx)doc = fz_open_document(ctx, input);fz_catch(ctx){qDebug()<<stderr<< "cannot open document:"<< fz_caught_message(ctx);fz_drop_context(ctx);return;}//取得总的页数fz_try(ctx)page_count = fz_count_pages(ctx, doc);fz_catch(ctx){qDebug()<<stderr<< "cannot count number of pages:"<< fz_caught_message(ctx);fz_drop_document(ctx, doc);fz_drop_context(ctx);return;}QString str;str = str.setNum(page_count);ui->textlabel->setText(str);if (page_number < 0 || page_number >= page_count){qDebug()<<stderr<< "page number out of range: "<< page_number + 1<<"page count:"<<page_count;fz_drop_document(ctx, doc);fz_drop_context(ctx);return;}//计算缩放以及旋转ctm=fz_scale(zoom / 100, zoom / 100);ctm=fz_pre_rotate(ctm, rotate);//渲染pixmapfz_try(ctx)pix = fz_new_pixmap_from_page_number(ctx, doc, page_number, ctm, fz_device_rgb(ctx), 0);fz_catch(ctx){qDebug()<<stderr<< "cannot render page: %s\n"<< fz_caught_message(ctx);fz_drop_document(ctx, doc);fz_drop_context(ctx);return;}//渲染成图片//unsigned char *samples = fz_pixmap_samples(ctx, pix);unsigned char *samples = pix->samples;int width = fz_pixmap_width(ctx, pix);int height = fz_pixmap_height(ctx, pix);str = str.setNum(width);QString wid;wid=wid.setNum(width);ui->widthlabel->setText("width: "+wid);QString hei;hei=hei.setNum(height);ui->heightlabel->setText("height: "+hei);QImage image(samples, width, height,pix->stride,QImage::Format_RGB888);QLabel *label=new QLabel;label->setPixmap(QPixmap::fromImage(image));ui->layout->addWidget(label); // if (!image.save("a.png")) { // return; // } //回收内存ui->textlabel->setText("Pdf open success");fz_drop_pixmap(ctx, pix);fz_drop_document(ctx, doc);fz_drop_context(ctx);}MainWindow::~MainWindow()
{delete ui;
}
基于qt与mupdf库的pdf阅读器开发相关推荐
- android pdf阅读器开发_如何在 Windows 10 中将 Firefox 设置为默认 PDF 阅读器
PDF 作为办公一族中的必备文档,很多人都会编辑或者创建 PDF 文档,而在 Windows 系统中并没有默认的 PDF 阅读器.而在新版的 Microsoft Edge微软已在开始提供有真正的高级 ...
- android pdf阅读器开发_PDF to EPUB Converter Mac(PDF转EPUB转换器)
EPUB to PDF Converter Mac特别版是专为Mac用户设计的一款PDF转EPUB转换器,尽管PDF是使用最广泛的电子文档格式,并且具有很多优点,但由于PDF不可重排,因此无法很好地适 ...
- 开源 Android pdf 阅读器开发总结
前段时间项目涉及到 pdf 阅读,因此我开始找了些源码阅读比较,现在贴出各实现方案的对比.希望对大家有帮助.方便大家的阅读,我将自己认为最好的排在最前. Vudroid Google code:htt ...
- android pdf阅读工具,android pdf 阅读器开发, pdf demo, pdf第三方控件
Activity调用的方法 public class PDFActivity extends Activity implements OnPageChangeListener { public sta ...
- android开发 pdf阅读器 第三方可,android pdf 阅读器开发, pdf demo, pdf第三方控件
demo library 下载 Activity调用的方法 public class PDFActivity extends Activity implements OnPageChangeListe ...
- QT开发的pdf阅读器资料
详细说明:基于QT的一款建议pdf阅读器,可以进行移植,可以再pc上运行.-Recommendations based on QT' s a pdf reader, can be transplant ...
- 基于MuPDF和Qt的PDF阅读器的开发
基于MuPDF和Qt的PDF阅读器的开发 一.引言 设备上要渲染显示PDF文档,类似Adobe Reader.福昕阅读器等软件.如何去实现?Handling PDF这篇文档讨论介绍了在Qt应用程序中各 ...
- 基于MuPDF库实现PDF文件转换成PNG格式图片
背景 之所以会接触MuPDF是因为,有位群友在Q群里提问,如何将PDF保存为.PNG图片格式.我一看到这个问题,就蒙了,因为我没有接触过类似的项目或程序.但是,作为一群之主的我,还是要给初学者一个答复 ...
- iOS 中使用Mupdf教程 pdf阅读器
转载注明出处:http://blog.csdn.net/hongqifeiwu/article/details/46009095 浩宇提供:若有疑问可以相互探讨,邮箱1223556769@qq.com ...
最新文章
- iOS 项目中用到的一些开源库和第三方组件
- EXP 7 网络欺诈防范 20164303 景圣
- (网络编程)UDP实现聊天
- ubuntu 以太网已连接但是无法联网_工业以太网有多“牛X”?两个案例告诉你
- 【Flink】Flink 与数据库的集成最佳实践 【视频笔记】
- 为什么我旗帜鲜明的反对前后端分离
- word文档图标变成白纸_word文档图标显示异常怎么办
- 决策树一CART算法(第一部分)
- 网络空间安全 渗透 攻防5(文件共享服务器)
- 苹果手机怎么用计算机隐藏应用,iphone怎么隐藏应用功能 iphone隐藏应用功能方法【详解】...
- linux+记账软件下载,快速记账软件下载-快速记账appv3.11.0-Linux公社
- python实现目标检测voc格式标签数据增强
- 解决win10一开机内存(8G)就占用70%多,查看任务管理器并没有占用内存很高的进程的问题
- Android11 SystemUI启动流程源码分析(一)——SystemUIApplication的创建
- 1688图片搜索API接口
- CDR 无法安装,解决办法
- PHP:POST 方法上传
- Python视网膜光学相干断层扫描病理学分类
- Android无障碍强制关闭软件,安卓手机后台程序不能彻底关闭?试试这个强制关闭的功能!...
- python实现黄金分割搜索算法+动态展示