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工具的作者宣布了不 ...
随机推荐
- Django用户认证组件
用户认证 主要分两部分: 1.auth模块 from django.contrib import auth 2.User对象 from django.contrib.auth.models imp ...
- PHP const关键字
常量是一个简单的标识符.在脚本执行期间该值不能改变(除了所谓的魔术常量,他们其实不是常量).常量默认大小写敏感.通常常量标识符总是大写的. 可以用define()函数来定义常量.在php5.3.0以后 ...
- 『Python × C++』函数传参机制学习以及对比
一.Python函数传参 在python中,函数传参实际上传入的是变量的别名,由于python内在的变量机制(名称和变量值相互独立),只要传入的变量不可变(tuple中的元素也要是不可变的才行),那么 ...
- react-native run-ios时报错xcrun: error: unable to find utility "instruments", not a developer tool or in PATH
命令行运行react-native 项目时,报错:xcrun: error: unable to find utility "instruments", not a develop ...
- Alibaba Java Coding Guidelines
阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的<阿里巴巴Java开发规约>扫描插件!该插件由阿里巴巴P3C项目组研发.P3C是世界知名的反潜机,专门对付水下潜水艇,寓意是扫描出 ...
- iOS架构设计系列之解耦的尝试之变异的MVVM
最近一段时间,在思考如何合理的架构一个可扩展性良好的界面编程方式.这一部分的成果做成了一个叫ElementKit的库.目前功能在不断的完善中. 关于iOS的架构,看多了MVVM,VIPER,MVC,M ...
- 前端框架之Vue.js
前言: 前端主流框架有Vue.react.angular,目前比较火因为Vue比较容易学习,运营起来比较快速: Vue是什么呢? 是一个基于MVVM架构的,前端框架: 如果你之前已经习惯了用jQuer ...
- xinetd黑/白名单配置教程(以telnet为例)
对于诸如telnet等托管于xinetd的服务,当请求到来时由于是通过xinetd进行通知,所以可以直接在xinetd上配置白名单允许和拒绝哪些ip连接服务. 本文主要参考xinetd.conf的ma ...
- WebSphere安装教程(WAS6.1为例)
1.网络准备 我们选择图形界面安装,如果堡垒机是windows则要在目标机器安装桌面环境并开启vcnserver:如果堡垒机是Linux则在堡垒机安装桌面环境和vncserver,然后将目标机的DIS ...
- AdaBoost, LogitBoost and GradientBoosting
前向分步算法与加法模型(forward stagewise algorithm and additive model) (1) AdaBoost:前向分步算法中损失函数取指数损失函数 (2) Logi ...