ibHaru(Haru Free PDF Library)は、PDF文書を生成するためのオープンソースのライブラリです。C言語で記述されており、様々なプラットフォームで利用することができます。以下は、libHaruの主な特徴や機能についての概要です。
- PDF生成機能: libHaruは、PDF文書の生成をサポートしています。基本的な機能としては、テキスト、画像、図形、アノテーション(注釈)、リンクなどを含むPDFページの構築が可能です。
- フォントサポート: TrueTypeやOpenTypeなどのフォント形式をサポートしており、異なるフォントを使用したテキストの描画が可能です。また、フォント埋め込みもサポートされています。
- 図形やイメージの描画: libHaruは、線、円、矩形、パスなどの基本的な図形を描画するための機能を提供します。また、JPEGやPNGなどの画像を挿入して文書に組み込むこともできます。
- エンコーディングサポート: libHaruはさまざまなテキストエンコーディングをサポートしており、国際化対応が可能です。
- ドキュメントのメタデータ設定: PDF文書のメタデータ(作成者、タイトル、作成日時など)を設定するための機能が提供されています。
- アーキテクチャのポータビリティ: C言語で実装されているため、libHaruは多くのプラットフォームで利用できます。Linux、Windows、macOSなど、さまざまな環境でコンパイルおよび使用が可能です。
libHaru は、C/C++ で記述されたライブラリであるため、直接的には C/C++ でのみ使用できます。
しかし、C/C++ から他の言語へのインターフェースを提供するライブラリやフレームワークを利用することで、他の言語でも libHaru を使用できます。
具体的には、以下の言語で libHaru を使用できます。
- Python
- Ruby
- Java
- JavaScript
- PHP
libHaru ライブラリィとは
ibHaru ライブラリィの概要は上述しましたが、実はこのライブラリィは、日本人の菅野健氏により開発されたものです。
2005年度下期未踏ソフトウェア創造事業で採択されたフリーでクロスプラットフォームなPDF生成ライブラリとのことです。以下のURLを参照ください。
オープンソースPDFライブラリの作成 ―ライセンスフリーな高性能PDF出力エンジンの開発―
v2.3.0-RC2 以降のlibHaru ライブラリィ
v2.3.0-RC2 以降のlibHaru ライブラリィはコードの見直しがあったようで、Clangベースのbcc32cでコンパイルする必要があるようです。zlib, libpng も、bcc32c を使用したライブラリの作成方法についても説明します。
C++Builderで、libHaruライブラリィを使用する
C++Builderから、libHaruライブラリィを使用してみましょう。
libHaruライブラリィは、ZLIB, LINPNG を使用していますので、
のソースを入手(Github から)して、LIBファイルを作成して使用します。
libHaruライブラリィは、DLLの作成もできるようですが、静的リンクが出来るLIBファイルを作成します。
尚、libHaruライブラリィは、色々なプラットフォームで動作します。以下のプラットフォーム用のmakefileが用意されています。
Supporting platforms
- Supporting platforms
- Cygwin + GCC (Microsoft Windows)
- Cygwin + MinGW (Microsoft Windows)
- MSYS + MinGW (Microsoft Windows)
- Microsoft VC++ (Microsoft Windows)
- Borland C++ (Microsoft Windows)
- GCC (Linux, FreeBSD, NetBSD, Solaris…)
ソースファイルの解凍及びフォルダ名の変更
- 同一フォルダで、それぞれのZIPファイルを解凍します。
- zlib-develop.zip
- libpng-libpng16.zip
- libharu-2.4.4.zip
- フォルダ名の変更
- zlib-develop —> zlib
- libpng-libpng16 —> libpng
- libharu-2.4.4 変更してもしなくても良い
ZLIB のコンパイル
zlib フォルダの win32 フォルダに、C++Builder(正確には、BCC32)用の makefile: Makefile.bor があります。
このファイルを確認すると、以下のコメントがあり、make -f win32/Makefile.bor を実行すればよいことがわかります。
# Makefile for zlib
# Borland C++ for Win32
#
# Usage:
# make -f win32/Makefile.bor
RAD Studio(C++Builder)をインストールしていれば、makeファイルにパスが通っていると思いますので、 zlib フォルダで、コマンドプロンプト(DOS窓)から、以下のコマンドを実行します。
make -f win32/Makefile.bor
幾つか警告は出ますが、zlibフォルダに、zlib.lib ができます。
bcc32c でコンパイルするには
Makefile.bor を以下のように変更すれば、bcc32cでコンパイルできます。
- コンパイラを、bcc32c に変更
- CFLAGS に、パス(.\)を追加
CC = bcc32
AS = bcc32
LD = bcc32
CFLAGS = -a -d -k- -O2 $(LOC)
bcc32 を bcc32cに変更します。
CC = bcc32c
AS = bcc32c
LD = bcc32c
CFLAGS = -a -d -k- -O2 -I .\ $(LOC)
LIBPNG のコンパイル
libpng フォルダの scripts フォルダに、C++Builder(正確には、BCC32)用の makefile :makefile.bc32 があります。
このファイルを確認すると、以下のコメントがあり、make -f win32/Makefile.bor を実行すればよいことが分かります。
# Makefile for libpng
# 32-bit Borland C++ (Note: All modules are compiled in C mode)
# To build the library, do:
# "make -fmakefile.bc32"
#
# -------------------- 32-bit Borland C++ --------------------
コンパイルの手順
- makefile.bc32 ファイルを、libpng フォルダにコピーする
- libpng フォルダで、コマンドプロンプトを開き、make -fmakefile.bc32 を実行する
make -fmakefile.bc32
※ LIBPNG は、zlibのソースファイルを使用しています。zlibライブラリィのフォルダ名は、zlibに変更しておいてください。
幾つか警告は出ますが、libpng フォルダに、libpng.lib ができます。
bcc32c でコンパイルするには
makefile.bc32 のコンパイラーの指定を bcc32c に変更すれば、bcc32cでコンパイルできます。
CC=bcc32
LD=bcc32
以下のように、bcc32cに変更します。
CC=bcc32c
LD=bcc32c
libHaru のコンパイル
提供されているmakefileを少し修正する必要がありましたので、その点も含め説明します。
libHaru ライブラリィのソースファイルは、以下のHPから入手できます。
- Latest stable release: v2.3.0
- Latest development release: v2.3.0-RC3
- libharu(Github) v2.3.0-RC2
libharu-RELEASE_2_3_0(Latest stable release: v2.3.0)
bcc32 でコンパイル
コンパイル手順:
- script フォルダにあるメイクファイル Makefile.bcc32 を一つ上の解凍フォルダにコピーする。
- メイクファイル Makefile.bcc32 を修正する。
- zlib, libpng 用のパスを追加
- make -f Makefile.bcc32 を実行する
Makefile.bcc32 の修正内容:
CFLAGS=-WM -O2 -d -q -w-8057 -w-8012 -Iinclude -Iwin32\include -nsrc
以下のように、インクルードパスを追加します。
CFLAGS=-WM -O2 -d -q -w-8057 -w-8012 -Iinclude -Iwin32\include -I..\zlib -I..\zlib\contrib\minizip -I..\libpng -nsrc
bcc32c でコンパイル
コンパイル手順:
- script フォルダにあるメイクファイル Makefile.bcc32 を一つ上の解凍フォルダにコピーする。
- メイクファイル Makefile.bcc32を修正する。
- コンパイラーをbcc32c に変更する
- zlib, libpng 用のパスを追加
- make -f Makefile.bcc32 を実行する
Makefile.bcc32 の修正内容:
CC=bcc32
CFLAGS=-WM -O2 -d -q -w-8057 -w-8012 -Iinclude -Iwin32\include -nsrc
以下のように、インクルードパスを追加します。
CC=bcc32c
CFLAGS=-WM -O2 -d -q -w-8057 -w-8012 -Iinclude -Iwin32\include -I..\zlib -I..\zlib\contrib\minizip -I..\libpng -nsrc
libharu-master(v2.3.0-RC2), libharu-2.4.4(v2.4.4)
v2.3.0-RC2 以降のコードは、bcc32ではコンパイル出来ず、bcc32cでコンパイルする必要があるようです。それから、ライブラリ作成時にはエラーは出ないのですが、ソースファイルが2つ増えているのですが、Makefile.bcc32 には追加されていません。その2つのファイルをリンクリストに追加する必要があります。
コンパイル手順:
- script フォルダにあるメイクファイル Makefile.bcc32 を一つ上の解凍フォルダにコピーする。
- メイクファイル Makefile.bcc32 を修正する。
- コンパイラーをbcc32c に変更する
- zlib, libpng 用のパスを追加
- src\hpdf_direct.obj, src\hpdf_shading.obj をリンクリストに追加
- make -f Makefile.bcc32 を実行する
Makefile.bcc32 の修正内容:
CC=bcc32
CFLAGS=-WM -O2 -d -q -w-8057 -w-8012 -Iinclude -Iwin32\include -nsrc
以下のように修正します。
CC=bcc32c
CFLAGS=-WM -O2 -d -q -w-8057 -w-8012 -Iinclude -Iwin32\include -I ..\zlib -I ..\zlib\contrib\minizip -I ..\libpng -nsrc
src\hpdf_exdata.obj \
src\hpdf_direct.obj \ <--- 追加
src\hpdf_shading.obj \ <--- 追加
src\hpdf_u3d.obj
参考資料
ドキュメント
APIの説明や、サンプルコード等の情報は、ここにあります。
サンプルコード
ここに色々なサンプルがあります。
Hello, Haru Free PDF Library! にも、参考となるサンプルコードがありました。
参考プログ&HP
- 64ビットのライブラリィの作成方法を説明しているプログです。
- zlib 関係
- libpng 関係
- libHaru 関係
MakeFile, バッチファイルは、以下からダウンロード出来ます。
ファイル名 | 説明 |
---|---|
mk_bcc32.bat | bcc32用のバッチファイル |
mk_bcc32c.bat | bcc32c用のバッチファイル |
win32\Makefile.bor | bcc32用のMakeFile |
win32\Makefile.bcc32c | bcc32c用のMakeFile |
ファイル名 | 説明 |
---|---|
mk_bcc32.bat | bcc32用のバッチファイル |
mk_bcc32c.bat | bcc32c用のバッチファイル |
makefile.bc32 | bcc32用のMakeFile |
makefile.bc32c | bcc32c用のMakeFile |
ファイル名 | 説明 |
---|---|
mk_bcc32c.bat | bcc32c用のバッチファイル |
Makefile.bcc32c | bcc32c用のMakeFile |