poppler 心得 windows下的mfc应用和非mfc

来源:互联网 发布:时时彩源码程序出售 编辑:程序博客网 时间:2024/03/29 18:57
poppler基于XPDF是一个免费开源的软件,用于显示PDF文件,应用起来比XPDF要难些

poppler现在官网的最新版本为0.15多了,我现在说得是0.12.4这个版本
,因为这个版本有windows下的环境编译

前面有一篇文章,介绍了poppler的编译,我就不废话了,编译好了以后生成的一个exe文件,其实对于开发者来说作用很小,因为我们是developer, 下面我就来说说poppler如何应用到windows
 

首先先编译poppler,如果没有编译成功,就请去下我放在CSDN上的编译
 好的库,地址在上一篇文章poppler的编译里

应用于非mfc,也就是如控制台等简单win32程序
 

1,
 
看makefile.vc文件,这个文件是从官网下载来的,解压后在poppler0.12.4文件夹里,

请看此句
 
PERFTEST_EXE=$(O)\perftest.exe
PERFTEST_PDB=$(O)\perftest.pdb
PERFTEST_OBJS=$(OBJS) $(O)\perf-test.obj $(O)\perf-test-preview-win.obj

这个句子应该在
makefile.vc后面了,用于生成perftest.exe文件 
发现这个exe用到了
$(OBJS) $(O)\perf-test.obj $(O)\perf-test-preview-win.obj其中$(OBJS)有包含了大部分的obj;
再往下找,看这句
$(PERFTEST_EXE): $(PERFTEST_OBJS)
$(LD) $(LDFLAGS) /OUT:$@ \
/PDB:$(PERFTEST_PDB) \
$** $(LIBS) \
/SUBSYSTEM:CONSOLE /MACHINE:X86
exe的生成还包含了很多$(LIBS),如zlib_s.lib等,ext文件内

现在我们知道了,这个perftest.exe包含了什么,下面就该创建工程了

2,
 
我用的的XP+vs2008(VC9) 的环境
向导建个控制台程序

把字符集设置多字节,预编译头取消,然后再link里把那些lib zlib_s.lib jpeg_s.lib freetype231mt.lib包含进来,一定要注意路径
 
在c++里的附加目录设置好,要不然找不到.h文件

3,
 
把poppler,fofi,goo,splash文件夹下的.h和.c添加进来,通过project->add exist items,包含所需要的.h.cc文件(根据obj),对照一下makefile.vc的那些OBJ
没有在makefile.vc里的那些文件,不要包含进来
把perf-test-preview-win.cc和perf-test.cc,合成到自己的main里

4,
 
编译生成出的exe就是
perftest.exe


如果应用于非mfc成功,请看应用于mfc
 
第一步,根据前面的第二条设置,只不过向导不创建控制台,而创建单文档程序
设置好后

第二步,
把poppler,fofi,goo,splash文件夹下的.h 和.c添加进来,通过project->add exist items,包含所需要的.h.cc文件(根据obj),对照一下makefile.vc的那些OBJ
没有在makefile.vc里的那些文件,不要包含进来
把perf-test-preview-win.cc和perf-test.cc,合成到自己的view里

之后编译

第三步,cmap错误是重定义错误,取消微软的cmap定义
 


第四步,参考perf-test-preview-win.cc和perf-test.cc,里面也有main函数
 
把其中的某些类提取出来生成.h.cpp,添加到自己的工程中
主要是splashbitmaptoHBitmap方法等方法

第五步,编译
 
hbitmap就可以显示在view中了

这个只是我用到poppler的总结,和XPDF类似,
 如处理cmap,
我的方法是直接把mfc自带的cmap给改了

我觉得如果要显示PDF,XPDF应用稍微简单些,如果XPDF掌握的差不多了,再考虑用poppler

我自己写的ocx1.0版基于XPDF,可应用于CS/BS,可以试用一下
http://download.csdn.net/source/2775232
 
ocx1.1版基于XPDF
http://download.csdn.net/source/2790019

源码我放在

http://item.taobao.com/auction/item_detail.htm?item_num_id=9210657397

我会一直更新ocx,把XPDF的功能,全部发挥出来

 

如果觉得显示效果不好,也可看看我的mupdf文章,也许会有帮助

 


ocx介绍
1,显示本地PDF文件;
2,得到PDF总页码;
3,设置视野大小;
4,工具栏界面设置;
5,当前显示的页码;
6,有使用说明;
7,只要机器安装vs2008,就可进行完全编译,配置环境非常简单,最多2步;
8,有cab包;
9,源码存在试用期,自己注释掉即可; 增加项:
10,输入pdf的URL网址,显示PDF,客户机没有任何痕迹;
11,增加当前显示PDF另存为功能;
12,SavePdfToPicFile,保存PDF当前页为任意图片;
13,GetPdfCurPageText根据显示的当前页面,返回显示当前页面的所有文字信息,此返回值也拷到剪切板一份,支持中文;
14,GetPdfCurPageTextRect根据显示当前页面的画框,返回画框区域内的文字信息,此返回值也拷到剪切板一份,需要SetPdfViewDrawRect开启画框取字功能 ,支持中文;
15,PrintPdfPage 增加打印功能; 修正上一版的支持中文问题
16,支持导出微软mdi格式
17,支持导出微软xps格式

0 0