最近公司准备在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编译使用的更多相关文章

  1. pdf生成库-libharu编译

    相关文章:libharu 源码编译 VS2010 1.首先下载libharu源码,libharu依赖于libpng和libzib,如果编译过libpng和libzib的话,直接拿过来用即可.否则需要自 ...

  2. libharu 源码编译 VS2010

    最近项目中接过了一个libharu PDF 开源库的锅,哈哈.于是就自己编译了一套libharu 的MFC下的静态库和动态库. 编译libharu需要用到zlib库和libpng库,libpng库又依 ...

  3. MinGW 编译zlib、libpng、libjpeg、libcurl等(全都是Qt项目)

    MinGW 这里使用的是Qt5自带的MinGw版本,将路径D:\Qt\Qt5.1.0\Tools\mingw48_32\bin加到"环境变量"→"系统变量"→& ...

  4. PODOFO编译

    由于LibHaru库只能创建PDF,所以只能换了. PODOFO项目的依赖项目有: FreeType2: https://sourceforge.net/projects/freetype/files ...

  5. TODO:macOS编译PHP7.1

    TODO:macOS编译PHP7.1 本文主要介绍在macOS上编译PHP7.1,有兴趣的朋友可以去尝试一下. 1.下载PHP7.1源码,建议到PHP官网下载纯净到源码包php-7.1.0.tar.g ...

  6. Centos6.5下编译安装mysql 5.6

    一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...

  7. CENTOS 6.5 平台离线编译安装 PHP5.6.6

    一.下载php源码包 http://cn2.php.net/get/php-5.6.6.tar.gz/from/this/mirror 二.编译 编译之前可能会缺少一些必要的依赖包,加载一个本地yum ...

  8. CENTOS 6.5 平台离线编译安装 Mysql5.6.22

    一.下载源码包 http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.22.tar.gz 二.准备工作 卸载之前本机自带的MYSQL 安装 cmake,编 ...

  9. Android注解使用之注解编译android-apt如何切换到annotationProcessor

    前言: 自从EventBus 3.x发布之后其通过注解预编译的方式解决了之前通过反射机制所引起的性能效率问题,其中注解预编译所采用的的就是android-apt的方式,不过最近Apt工具的作者宣布了不 ...

随机推荐

  1. MYSQL 总结——1

    目录 数据类型 1.数值型 2.日期/时间型 3.文本型 数据库 1.创建数据库 2.删除数据库 数据表 1.创建数据表 create 2.删除数据表 drop 3.修改数据表 4.修改表名 5.dr ...

  2. Ubuntu深度学习环境搭建 tensorflow+pytorch

    目前电脑配置:Ubuntu 16.04 + GTX1080显卡 配置深度学习环境,利用清华源安装一个miniconda环境是非常好的选择.尤其是今天发现conda install -c menpo o ...

  3. java把13位时间戳转换成"yyyy-MM-dd HH:mm:ss"格式,工具类

    public static void main(String[] args) { String time = System.currentTimeMillis();//获取当前时间精确到毫秒级的时间戳 ...

  4. 基于TcpListerer的web服务器 和 基于HttpListerer的web服务器

    摘自<Asp.Net 本质论>作者:郝冠军 /* 为了简化基于TCP协议的监听程序,.NET在System.Net.Sockets命名空间中提供了TcpListerer类,使用它,在构造函 ...

  5. 一步步构建iOS路由

    什么是移动端路由层: 路由层的概念在服务端是指url请求的分层解析,将一个请求分发到对应的应用处理程序.移动端的路由层指的是将诸如App内页面访问.H5与App访问的访问请求和App间的访问请求,进行 ...

  6. nginx配置location总结及rewrite规则写法(2)

    2. Rewrite规则 rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向.rewrite只能放在server{},location ...

  7. P标签莫名有了margin-top值的原因

    p标签默认 -webkit-margin-after: 1em; -webkit-margin-before: 1em;元素上下边距数值为1倍字体高度 设置-webkit-margin-after: ...

  8. Angular4.x 引入第三方 JS

    引入 Jquery 使用 angular-cli 新建 angular项目 1.安装 jquery npm install jquery --save 2..angular-cli.json 中引入 ...

  9. SourceInsight 4重启之后文件变只读无法编辑

    SourceInsight4.0在导入代码后,用起来没问题,第二天,再开启sourceInsight,结果所有文件变成只读了,不能编辑,标签前面也有了叹号. 百度一下,有人说是版本控制的问题,但是sv ...

  10. py 正在爬取第%d页的美眉图

    #coding=utf-8import reimport requestsfrom bs4 import BeautifulSoupnums = 1num = 1while True: url = & ...