2010年6月11日 星期五

Free C/C++ library - Haru Free PDF Library

  免費 PDF Library - Haru  

  這次要介紹的是一個可以在 C++Builder 上使用的 PDF library - Haru Free PDF Library。選擇它的主要原因是它不但 Free、開放原始碼,而且可以在我所熟悉的 C++Builder 上使用。除此之外,也提供各式各樣的 sample code ,且附上每份 sample code 所產生出來的 PDF demo 檔案,讓人在使用它之前就先有了不少安全感。

Haru 的特色:
  1. 免費、跨平台且開放原始碼。
  2. 提供許多有用的說明、連結、範例程式及其結果。
  3. 以 ANSI C 編寫而成的,理論上可支援現代大多數的作業系統。
  4. 你可以使用它來增加 PDF 的特色而不必了解其內部繁雜的結構。

支援的功能:

  1. 可以在 PDF 文件上畫 lines, rectangles, circles, text, images (JPEG, PNG, RAW)
  2. 可以產生大綱 (outline)、文字註釋、連結註釋及投影片的效果。
  3. 可以嵌入 Type1 和 TrueType 字型。
  4. 可以使用 ISO8859 - 1~16,MSCP1250~1258,KOI8 - R 等字符集 (character sets)
  5. 支援中、日、韓 (CJK ) 字型及編碼。
  6. 可以產生出加密的 PDF 文件…等功能。

  在使用 Haru 之前要先到官網下載 source code 或 library (for MSVC),如果是下載 source code 就要自己編譯成 library。我是下載 libharu-2.1.0.tar.gz, 然後用 C++Builder 2010 編譯成 library,如果直接對 source code 編譯可能無法順利完成,原因有下列幾個:
  *1. include\hpdf_config.h.in 這個檔必需改為 hpdf_config.h。
  2. source code 裡面沒有附 png library 和 z library,如果會用到的話,要自己上網找。
  3. 依 hpdf_config.h 裡面提供的項目,看自己需不需要用到,逐一定義它們,若是不清楚如何定義的話,不妨下載 libharu-2.1.0-vc8.zip 參考 MSVC8 的設定值如何設定。
  *4. 若不使用 png 和 z library 的話,hpdf_config.h 要定義 #undef HAVE_LIBPNG#undef HAVE_LIBZ
  5. 若還是編譯不過的話,照著錯誤訊息 debug 一下,應該可以產生 libhpdf.lib。

  因為我之前有一段時間都在畫數位相機的 OSD (OnScreenDisplay),所以這套 library 用起來還滿順手的,只是 y 座標有時候會畫到反方向 (第一象限座標系)…接著談談利用它產生一份 PDF 檔的流程:

待續………