Qt显示pdf系列1——序言,扯淡,选择相关库及方式等

  • Post author:
  • Post category:其他


前言:这一阵子都在研究qt下显示office和pdf相关方案,需求大致为从ftp上下载office或者pdf等文件,客户端界面上直接显示。大致分为这三个策略:上策直接像web端那样,直接将office诸如ppt,word,excel等直接嵌入过去,但不能让用户编辑和另存为;中策显示pdf,一样不能编辑不能复制另存为;下策就是直接从服务端下载图片,一张张显示(这就太那啥了,坚决不能考虑= =。)。



那么这篇先介绍下我的历程,以及开源库的选择等问题。


本系列预计会有以下几篇(每篇写完后会更换成相应url),后期可能会调整(因为懒直接写一块得了),以实际情况为准:

1、

Qt显示pdf系列1——序言,扯淡,选择相关库及方式等

2、

Qt显示pdf系列2——QAxWidget打开Office文件及pdf

3、

Qt显示pdf系列3——配置编译谷歌开源项目pdfium

4、

Qt显示pdf系列4——封装pdfium库为动态库,显示pdf


按照惯例介绍下本次开发环境:windows7+vs2013+vs2015(这是pdfium开源库的时候用到)+qt5.4。

一、尝试显示office:

最开始肯定是想实现上策方案,直接像是web端(比如qq邮箱)预览office文件的效果那样,那就爽歪歪了,然而现实总是残酷的,基本上,显示office方面的资料较少(可以百度google下看看),有的博客甚至写的不清不楚,有的干脆就不能用。

基本上, 所有的资料都指向一个——QAxwidget调用com组件显示office。

于是我去找了github,github上,qt相关的,大致我也看了下,比较合适的基本没有,上图感受下:

这里写图片描述

这就尴尬了,于是我就用QAxwidget来显示。发现需要安装office,并且其实本质上就是在qt界面上嵌入一个office软件,跟直接打开office文件一毛一样,那我何必嵌入你呢?直接调用进程不得了。。。当然,下篇还是会简单介绍下。

二、尝试打开pdf:

1、尝试打开pdf文件:

那么上策不行,我就只能选择中策了,反正office文件可以转pdf,这个过程不负责,而我需要的就是显示pdf,并且pdf内容格式本身也是开源的,所以估计网上会多一点资料。

嗯,果不其然,资料是多了点,但几乎都是用别的开源库,我搜索了下qt打开pdf文件,找出来的基本上都是通过开源库,诸如:mupdf,poppler等,然而这俩开源库基本很难找到编译好的lib,这就更尴尬了。

于是我又打开github上来搜,情况也不是很乐观,我也都下了下,能顺利使用的也就这个Archie3d/qpdf,但其依赖于webkit,本质上是嵌入一个浏览器在其中,且有诸多bug,最主要的是没法发布,所以也不是很理想。

这里写图片描述

同时,QAxwidget也可以打开pdf,但依赖于adobe软件,跟之前打开office文件类似,一样另存为,复制等操作没法屏蔽。

最后我搜索c++的pdf开源库,找到了福昕阅读器开源给谷歌的项目pdfium,本质是渲染成bit图片,听起来很符合我的需求啊。

2、选择开源库:

选择,其实上面也说了各项的优劣,pdfium,mupdf,poppler,这些个开源项目,可能是更适合的方式,但是这种开源项目,编译起来真是很费劲,相当折腾,甚至还不一定能编译出来,哎,算是开源项目的一个通病。

但活儿还是要干的,最后选择了谷歌的pdfium,一来很符合需求,二来公司同事也指点了不少,折腾了近一周,前后遇到各种问题(以后会慢慢道来),终于搞定了。

三、总结:

本次编译配置下来,最大的感受有以下几点:

1、c++的开源项目真牛(cao)逼(dan),一(zhe)点(teng)都(si)不(wo)折(le)腾(a),

2、好东西从来都不是免费的,这些核心功能资料都比较少

3、听闻wps是qt写的,嗯,不错。



版权声明:本文为zy19940906原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。