LibHaru
PDF ドキュメント用のオープンソース C++ ライブラリ
オープンソースの C++ API を介して PDF ファイルを生成、編集、操作、変換します。
LibHaru は、ソフトウェア開発者が PDF ファイル形式を生成できるようにするオープン ソースの C++ ライブラリです。現在、この API では、既存の PDF ドキュメントを読み取ったり編集したりすることはできません。 API を使用すると、PDF ファイルを生成できます。テキスト、行、注釈を追加できます。さらに、ドキュメントに PNG および JPEG 形式の画像を追加することもできます。また、LibHaru では、deflate-decode 形式で PDF ドキュメントを圧縮し、暗号化された PDF ドキュメントを生成することもできます。
LibHaru は ANSI-C で書かれており、静的ライブラリと共有ライブラリの両方として機能します。 C++ プログラムで使用するには、任意の C++ コンパイラでコンパイルして、静的ライブラリとして使用できます。
LibHaruを始める
LibHaru は ANSI-C で書かれており、C++ で使用するために、準拠する C++ コンパイラでコンパイルできます。まず、最新バージョンの API をダウンロードして抽出できます。スクリプト ディレクトリには、コンパイラごとに数種類の makefile があります。適切なメイクファイルを使用してライブラリをビルドします。
スクリプト ディレクトリには、コンパイラごとに数種類の makefile があります。適切なメイクファイルを使用してライブラリをビルドします。
コンパイラ用のライブラリをビルドする
//Microsoft VC++ Compiler
NMAKE -f script/Makefile.msvc
//Borland C++ Compiler
make -f script/Makefile.BCC
PDF ファイル形式を生成する C++ ライブラリ
LibHaru は、ソフトウェア開発者が PDF ファイル形式を生成できるようにする一連の機能を提供しています。 API を使用すると、新しい PDF ドキュメントの作成、ドキュメント オブジェクト属性の設定、新しいページの作成、ページ オブジェクトの設定、ページの説明の設定、ドキュメントのファイルまたはメモリ ストリームへの保存を行うことができます。
C++ を使用して PDF に画像を埋め込む
LibHaru を使用すると、ソフトウェア開発者は JPEG および PNG 画像を PDF ドキュメントに埋め込むことができます。 API を使用すると、画像のサイズ、幅、高さ、コンポーネントあたりのビット数、色空間を取得できます。さらに、埋め込み画像にカラーマスクとマスク画像を設定できます。
C++ API を使用して暗号化された PDF ファイルを作成する
暗号化は、情報の真の意味を隠す秘密のコードに情報をエンコードできる非常に便利なメカニズムです。オープン ソース ライブラリ LibHaru を使用すると、ソフトウェア開発者は外部依存なしで暗号化された PDF ファイルを作成できます。
C++ で暗号化された PDF ファイルを作成する
const static char* text = "This is an encrypt document example.";
const static char* owner_passwd = "owner";
const static char* user_passwd = "user";
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, 1);
}
int
main (int argc, char **argv)
{
HPDF_Doc pdf;
HPDF_Font font;
HPDF_Page page;
char fname[256];
HPDF_REAL tw;
strcpy (fname, argv[0]);
strcat (fname, ".pdf");
pdf = HPDF_New (error_handler, NULL);
if (!pdf) {
printf ("error: cannot create PdfDoc object\n");
return 1;
}
if (setjmp(env)) {
HPDF_Free (pdf);
return 1;
}
/* create default-font */
font = HPDF_GetFont (pdf, "Helvetica", NULL);
/* add a new page object. */
page = HPDF_AddPage (pdf);
HPDF_Page_SetSize (page, HPDF_PAGE_SIZE_B5, HPDF_PAGE_LANDSCAPE);
HPDF_Page_BeginText (page);
HPDF_Page_SetFontAndSize (page, font, 20);
tw = HPDF_Page_TextWidth (page, text);
HPDF_Page_MoveTextPos (page, (HPDF_Page_GetWidth (page) - tw) / 2,
(HPDF_Page_GetHeight (page) - 20) / 2);
HPDF_Page_ShowText (page, text);
HPDF_Page_EndText (page);
HPDF_SetPassword (pdf, owner_passwd, user_passwd);
/* save the document to a file */
HPDF_SaveToFile (pdf, fname);
/* clean up */
HPDF_Free (pdf);
return 0;
}