libharu 编译使用

来源:互联网 发布:hlsl知乎 编辑:程序博客网 时间:2024/05/21 10:39
libharu是c++一个处理生成pdf的一个开源项目,严格来说应该是C的,他所有的源码都是由C写的,主要支持pdf的生成,包括文字,绘图,字体编码都有涉及。但似乎是不支持读取pdf的(java itext支持读取),
git地址为:https://github.com/libharu/libharu 

从github上可以直接download到他的源码,之后编译即可得到所需文件。这里确实折腾了我一下,像我这样的菜鸟原来一向都是IDE上点几个按钮就编译完成了,现在直接给我一个makefile来编译有好多问题都无法解决。

首先去git上把东西全下载下来,这里面有一大堆东西,里面有一个INSTALL文件,打开里面写着怎么编译安装呢~,主要关注最后一句,see more detailed xxx,这里有一个详细安装教程的地址,里面有对各个不同平台编译的指令,其实就是在一个平台上选择一个与编译器对应的makefile文件然后执行一小段儿命令就完成了。

git上有这么一句话: In addition, ZLIB and PNGLIB are required   我在网上baidu一下有很多人碰到的问题其实都是缺少这两个相关文件而造成的错误,libharu有些功能依赖于这两个第三方库,ok,直接去网上下载了编译吧0.0  这里有一个不错的教程:http://www.cnblogs.com/Forever-Kenlen-Ja/p/5811063.html。编译好的zlib和libpng都会有对应lib文件,zlib会有一个zlib.h,linpbg还有会有一个libpng.dll。打开Makefile.msvc会看到这么两句话

!IFNDEF PNG_PREFIX
PNG_PREFIX   = ../../libpng
!ENDIF

!IFNDEF ZLIB_PREFIX
ZLIB_PREFIX   = ../../zlib
!ENDIF

LDFLAGS= /LIBPATH:$(PNG_PREFIX)\lib /LIBPATH:$(ZLIB_PREFIX)\lib 

我想这里大概就是这两个lib的放置位置,在对应位置建立文件夹然后把需要的东西丢进去就ok了(这里为了方便我把这两个路径改成了../libpng,../zlib)

搞定以后就可以编译libharu了,在script文件夹里有许多makefile文件,和你的应用平台以及需求有关,这里我是win下想要拿到lib文件,由于平时用的vs,就用了nmake,也就是直接使用了 Makefile.msvc。

1.打开vs的命令行工具,这里我找了小半天儿也没找着这个东西,所以我直接把vs2013(我用的这个)vc/bin加到环境变量,然后再cmd模式下直接nmake了,当然这样直接使用nmake报了很多莫名其妙的错误,究其原因是因为这里需要先运行一下对应vc/bin目录下的vcvars32.bat对环境进行一些设置然后才能正常使用。

2.切换到下载的libharu文件夹下,运行nmake -f script/Makefile.msvc   这里之后基本有什么错误都是提示缺少xx.h文件,其实这些头文件在zlib、libpng以及libharu中都能找到,把这些头文件统统copy到libharu的include文件下再重新编译就能在libharu文件下得到libhpdf.lib了

编译过程出了错误只要认真看error内容并顺藤摸瓜的思考基本都能解决问题。

使用:

把整个include文件夹加入工程

在文件头部加上:

#include "../lib/include/hpdf.h"
#pragma comment(lib,"../lib/libhpdf.lib")
#pragma comment(lib,"../lib/zlib.lib")
#pragma comment(lib,"../lib/libpng16.lib")

这里的路径是我自己的,放其他位置更换即可。

至于测试代码libharu自带了许多demo,随便搞一个改改就行了,git上有详细的文档。

最后在运行的时候可能会提示缺少libpng16.dll(因为我下载的是libpng16),只需要把这个dll放到工程目录下或者系统对应system文件夹下(systemwow64等,应该与操作系统有关,这里我是32bit程序运行在64bit下,有一个重定向,就放到systemwow64下了)就可以正常跑了。

libharu是个不错的可供c++使用的pdf工具,不过似乎不支持读取pdf,另外依赖于其他第三方库,有时确实不大方便,之前用java写的时候使用itext就方便多了,功能也十分齐全,不得不说c++在第三方开源库上相比java确实弱了些,好用的其他例如pdflib不是免费的,免费开源的功能又少了点儿。附上编译好的相关文件。http://download.csdn.net/detail/gldcpp/9649469

0 0
原创粉丝点击