LibHaru编译使用
最近公司准备在PDF方面发力了,我也要行动起来,就找到了LibHaru这个开源库
编译Libharu需要用到zlib库和libpng库,libpng库又依赖zlib库.
zlib 下载地址:http://www.zlib.net/
libpng下载地址:http://www.libpng.org/pub/png/libpng.html
libharu下载地址:http://libharu.org/
下载好后,最好放到一个单独的文件夹下,
进入目录 D:\Users\PDF\lpng\projects\visualc71 里面有VS的工程,根据自己的需求编译DLL或者LIb选择不同的编译选项,

设置libpng工程的zlib头文件路径,zlib工程和上图一样,编译后,生成libpng.lib和zlib.lib,2个静态库。
为了方便编译Libharu,将zlib和libpng的头文件与静态库,单独存放到各自的include和lib文件夹里。


修改D:\Users\PDF\libharu\script\Makefile.msvc文件,如下图所示的2处

管理员 运行 “VS2008命令提示” ,
cd /D D:\Users\PDF\libharu
nmake script/Makefile.msvc

至此,LibHaru编译完成。
创建win32命令行工程测试下。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <setjmp.h>
#include "hpdf.h" #ifndef HPDF_NOPNGLIB jmp_buf env; #ifdef HPDF_DLL
void __stdcall
#else
void
#endif
error_handler (HPDF_STATUS error_no,
HPDF_STATUS detail_no,
void *user_data)
{
printf ("ERROR: error_no=%04X, detail_no=%u\n", (HPDF_UINT)error_no,
(HPDF_UINT)detail_no);
longjmp(env, );
} void
draw_image (HPDF_Doc pdf,
const char *filename,
float x,
float y,
const char *text)
{
#ifdef __WIN32__
const char* FILE_SEPARATOR = "\\";
#else
const char* FILE_SEPARATOR = "/";
#endif
char filename1[]; HPDF_Page page = HPDF_GetCurrentPage (pdf);
HPDF_Image image; strcpy(filename1, "pngsuite");
strcat(filename1, FILE_SEPARATOR);
strcat(filename1, filename); image = HPDF_LoadPngImageFromFile (pdf, filename1); /* Draw image to the canvas. */
HPDF_Page_DrawImage (page, image, x, y, HPDF_Image_GetWidth (image),
HPDF_Image_GetHeight (image)); /* Print the text. */
HPDF_Page_BeginText (page);
HPDF_Page_SetTextLeading (page, );
HPDF_Page_MoveTextPos (page, x, y);
HPDF_Page_ShowTextNextLine (page, filename);
HPDF_Page_ShowTextNextLine (page, text);
HPDF_Page_EndText (page);
} int main (int argc, char **argv)
{
HPDF_Doc pdf;
HPDF_Font font;
HPDF_Page page;
char fname[];
HPDF_Destination dst; strcpy (fname, argv[]);
strcat (fname, ".pdf"); pdf = HPDF_New (error_handler, NULL);
if (!pdf) {
printf ("error: cannot create PdfDoc object\n");
return ;
} /* error-handler */
if (setjmp(env)) {
HPDF_Free (pdf);
return ;
} HPDF_SetCompressionMode (pdf, HPDF_COMP_ALL); /* create default-font */
font = HPDF_GetFont (pdf, "Helvetica", NULL); /* add a new page object. */
page = HPDF_AddPage (pdf); HPDF_Page_SetWidth (page, );
HPDF_Page_SetHeight (page, ); dst = HPDF_Page_CreateDestination (page);
HPDF_Destination_SetXYZ (dst, , HPDF_Page_GetHeight (page), );
HPDF_SetOpenAction(pdf, dst); HPDF_Page_BeginText (page);
HPDF_Page_SetFontAndSize (page, font, );
HPDF_Page_MoveTextPos (page, , HPDF_Page_GetHeight (page) - );
HPDF_Page_ShowText (page, "PngDemo");
HPDF_Page_EndText (page); HPDF_Page_SetFontAndSize (page, font, ); draw_image (pdf, "hand.png", , /*HPDF_Page_GetHeight (page)*/,
"1bit grayscale."); /* save the document to a file */
HPDF_SaveToFile (pdf, fname); /* clean up */
HPDF_Free (pdf); return ;
} #else /* HPDF_NOPNGLIB */ int main()
{
printf("WARNING: if you want to run this demo, \n"
"make libhpdf with HPDF_USE_PNGLIB option.\n");
return ;
} #endif /* HPDF_NOPNGLIB */

工程头文件目录
D:\Users\PDF\libharu\include;
D:\Users\PDF\lpng\include;
D:\Users\PDF\zlib\include;
D:\Users\PDF\libharu\win32\include
工程库文件目录
D:\Users\PDF\libharu;
D:\Users\PDF\lpng\lib
工程使用库
libhpdf.lib libpng.lib zlib.lib
LibHaru编译使用的更多相关文章
- pdf生成库-libharu编译
相关文章:libharu 源码编译 VS2010 1.首先下载libharu源码,libharu依赖于libpng和libzib,如果编译过libpng和libzib的话,直接拿过来用即可.否则需要自 ...
- libharu 源码编译 VS2010
最近项目中接过了一个libharu PDF 开源库的锅,哈哈.于是就自己编译了一套libharu 的MFC下的静态库和动态库. 编译libharu需要用到zlib库和libpng库,libpng库又依 ...
- MinGW 编译zlib、libpng、libjpeg、libcurl等(全都是Qt项目)
MinGW 这里使用的是Qt5自带的MinGw版本,将路径D:\Qt\Qt5.1.0\Tools\mingw48_32\bin加到"环境变量"→"系统变量"→& ...
- PODOFO编译
由于LibHaru库只能创建PDF,所以只能换了. PODOFO项目的依赖项目有: FreeType2: https://sourceforge.net/projects/freetype/files ...
- TODO:macOS编译PHP7.1
TODO:macOS编译PHP7.1 本文主要介绍在macOS上编译PHP7.1,有兴趣的朋友可以去尝试一下. 1.下载PHP7.1源码,建议到PHP官网下载纯净到源码包php-7.1.0.tar.g ...
- Centos6.5下编译安装mysql 5.6
一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...
- CENTOS 6.5 平台离线编译安装 PHP5.6.6
一.下载php源码包 http://cn2.php.net/get/php-5.6.6.tar.gz/from/this/mirror 二.编译 编译之前可能会缺少一些必要的依赖包,加载一个本地yum ...
- CENTOS 6.5 平台离线编译安装 Mysql5.6.22
一.下载源码包 http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.22.tar.gz 二.准备工作 卸载之前本机自带的MYSQL 安装 cmake,编 ...
- Android注解使用之注解编译android-apt如何切换到annotationProcessor
前言: 自从EventBus 3.x发布之后其通过注解预编译的方式解决了之前通过反射机制所引起的性能效率问题,其中注解预编译所采用的的就是android-apt的方式,不过最近Apt工具的作者宣布了不 ...
随机推荐
- CPU型号各个字母的含义
CPU 型号的含义 首先介绍 4 个数字的含义(以 i7-3540M) 第一位 3540M 中的 "3"代表:代, 3 表示第三代 第二位 3540M 中的 "5&quo ...
- 【其他】【navicat】【1】navicat导入txt文件中文乱码问题解决
正文: TXT文件默认编码为ANSI,另存为编码为UTF-8的文本文件即可 备注: 1,一般需要导入的数据都是一张excel表,需要将excel表另存为“文本文件(制表符分隔)(*.txt)”保存类型 ...
- display: flex的兼容性写法
display: -moz-box; /*firefox*/ display: -ms-flexbox; /*IE10*/ display: -webkit-box; /*Safari*/ displ ...
- 内存池、进程池、线程池介绍及线程池C++实现
本文转载于:https://blog.csdn.net/ywcpig/article/details/52557080 内存池 平常我们使用new.malloc在堆区申请一块内存,但由于每次申请的内存 ...
- 使用formData上传文件,ajax上传
项目是vue项目,直接贴部分代码了: html: <input type="file" name="fileTable" @change="ch ...
- Homebrew 安装mysql
在mac上安装软件,无疑安装一个brew是个很好的选择,关于brew是什么,怎么安装建议去brew官网查看, 附上地址:brew官网 还有一篇博文 http://www.cnblogs.com/xd ...
- 【LeetCode】Anagram
Anagram 指由颠倒字母顺序而构成的单词. e.g. 给出 ["eat", "tea", "tan", "ate", ...
- 牛客第二场A-run
链接:https://www.nowcoder.com/acm/contest/140/A 来源:牛客网 White Cloud is exercising in the playground. Wh ...
- TOR的十个最好的替代工具
TOR的十个最好的替代工具: 一.Comodo Dragon(基于Chromium) TOR基于Firefox,因为我们换个口味,首先推荐一个基于开源项目Chromium的Comodo Dragon, ...
- stream.map示例
引用1:https://blog.csdn.net/sanchan/article/details/70753645 引用2:https://www.ibm.com/developerworks/cn ...