libHaru在windows下的编译

来源:互联网 发布:windows grub rescue 编辑:程序博客网 时间:2024/06/05 02:42

主机环境:Windows 10

开发环境:CodeBlocks 16.01mingw

好久没更新了,之前私人笔记本坏掉了一直没去弄,跟了我有6年多了,想想也该退役了,一狠心买了一个新的本本,之前在讨论群了看到有人在询问使用c语言生成pdf文档的事情,一时好奇就去网上度娘了一下相关的文档,在github上就看到了一个开源的使用c语言生成pdf文档的代码--libHaru,看了一下很久没有更新了,目前最新版本是V2.3.0,文档的地址如下:http://libharu.org/ 代码的下载地址如下:https://github.com/libharu/libharu 这里做下在windows下的编译笔记,方便自己学习,该pdf库有以下特性:

   1. Generating PDF files with lines, text, images.   2. Outline, text annotation, link annotation.   3. Compressing document with deflate-decode.   4. Embedding PNG, Jpeg images.   5. Embedding Type1 font and TrueType font.   6. Creating encrypted PDF files.   7. Using various character set (ISO8859-1~16, MSCP1250~8, KOI8-R).   8. Supporting CJK fonts and encodings.
在使用时如果需要用到压缩特性或需嵌入png图片,该库就需要依赖zlib以及pnglib,因此需要去网上下载相应的代码,zlib的官网地址如下:http://www.zlib.net/ zlib最新版本是zlib 1.2.11 pnglig的官网下载地址如下:https://sourceforge.net/projects/libpng/files/ 最新版本是lpng1628 下载最新的代码到本地解压,如下:


由于lpng库也依赖于zlib库,因此我们先编译zlib库,进入到zlib-1.2.11源文件目录,执行以下命令


之后就会生成libz.a文件,拷贝libz.a库文件到mingw安装路径下的lib目录,在codeblocks安装目录下可以看到

之后把zlib.h和zconf.h两个头文件拷贝到mingw路径下的include目录下。

接下来编译pnglib库,跟之前的流程类似,进入lpng1628源码目录,执行mingw32-make -f scripts/makefile.gcc命令,出现了错误,如下:


可以看到是拷贝操作出现了问题,这里执行手动拷贝操作,然后再执行该命令就可以在当前目录下生成所需要的库文件libpng.a了,

拷贝libpng.a库文件到mingw路径下的lib目录中,并且把png.h、pngconf.h、pnglibconf.h文件拷贝到mingw路径下的include目录中,接下来就可以开始编译我们的libharu库了,进入到源码目录中,执行mingw32-make -f script/makefile.mingw命令,结果产生了错误,如下:


提示未识别的命令行选项 ‘-mno-cygwin’,打开script/makefile.mingw文件

在第21行和22行各有一处 -mno-cygwin定义,这里把这两个定义删除,再次执行make命令,就可以看到生成了libhpdf.a库文件,拷贝该文件到mingw的lib目录中,并且把libharu目录中include路径下的hpdf.h和hpdf_conf.h文件拷贝到mingw下的include目录中,最后再把win32/include目录下的hpdf_config.h文件也拷贝到mingw下的include目录中,至此,基本的编译工作就算完成了,libharu库还提供了一些demo代码来测试所编译的库,因此,这里再编译一下demo测试代码,执行以下命令,mingw32-make -f script/makefile.mingw demo,产生了一个失败,如下:


再次打开script/makefile.mingw文件,在文件的最后面把所有的cd demo/ ;./*.exe语句去掉,如下所示:


修改完成之后再次执行make命令,就可以编译成功,在demo目录下生成了各自对应的exe文件,如下:


在此,我们双击一下image_demo.exe程序,会在本目录下生成一个名为image_demo.exe.pdf的文件,打开它就可以发现该文件跟image_demo.pdf文件一样,说明我们编译的libharu库是成功的,如下:


至此,就可以根据demo示例以及libharu文档来学习一下如何用c语言来生成pdf文件了。

参考链接:http://kingsz1.iteye.com/blog/543787


0 0
原创粉丝点击