LibHaru

 
 

ไลบรารี C++ โอเพ่นซอร์สสำหรับเอกสาร PDF

สร้าง แก้ไข จัดการ และแปลงไฟล์ PDF ผ่าน Open Source C++ API

LibHaru เป็นไลบรารี C++ แบบโอเพ่นซอร์สที่ช่วยให้นักพัฒนาซอฟต์แวร์สามารถสร้างรูปแบบไฟล์ PDF ได้ ขณะนี้ API ไม่อนุญาตให้อ่านหรือแก้ไขเอกสาร PDF ที่มีอยู่ เมื่อใช้ API คุณสามารถสร้างไฟล์ PDF - เพิ่มข้อความ บรรทัด และคำอธิบายประกอบ นอกจากนี้ คุณยังสามารถเพิ่มรูปภาพในรูปแบบ PNG และ JPEG ในเอกสารได้อีกด้วย LibHaru ยังอนุญาตให้บีบอัดเอกสาร PDF ด้วยรูปแบบ deflate-decode และสร้างเอกสาร PDF ที่เข้ารหัส

LibHaru เขียนด้วย ANSI-C และสามารถทำงานได้ทั้งแบบสแตติกไลบรารีและไลบรารีที่ใช้ร่วมกัน ในการใช้งานกับโปรแกรม C++ คุณสามารถคอมไพล์ด้วยคอมไพเลอร์ C++ และใช้เป็น static-library

Previous Next

เริ่มต้นกับ LibHaru

LibHaru เขียนด้วย ANSI-C และเพื่อใช้กับ C++ คุณสามารถคอมไพล์ด้วยคอมไพเลอร์ C++ ที่เข้ากันได้ ก่อนอื่น คุณสามารถดาวน์โหลดและแยกเวอร์ชันล่าสุดของ API ได้ makefile มีหลายประเภทสำหรับคอมไพเลอร์ทุกตัวในไดเร็กทอรีสคริปต์ สร้างไลบรารีด้วย makefile ที่เหมาะสม

makefile มีหลายประเภทสำหรับคอมไพเลอร์ทุกตัวในไดเร็กทอรีสคริปต์ สร้างไลบรารีด้วย makefile ที่เหมาะสม

สร้างไลบรารีสำหรับคอมไพเลอร์

 //Microsoft VC++ Compiler 
NMAKE -f script/Makefile.msvc
//Borland C++ Compiler
make -f script/Makefile.BCC

ไลบรารี C++ เพื่อสร้างรูปแบบไฟล์ PDF

LibHaru ได้จัดเตรียมชุดคุณลักษณะที่ช่วยให้นักพัฒนาซอฟต์แวร์สามารถสร้างรูปแบบไฟล์ PDF ได้ การใช้ API คุณสามารถสร้างเอกสาร PDF ใหม่ ตั้งค่าแอตทริบิวต์ของวัตถุเอกสาร สร้างหน้าใหม่ ตั้งค่าวัตถุของหน้า ตั้งค่าคำอธิบายหน้า และบันทึกเอกสารลงในไฟล์หรือสตรีมหน่วยความจำ

ฝังรูปภาพใน PDF โดยใช้ C++

LibHaru ช่วยให้นักพัฒนาซอฟต์แวร์สามารถฝังภาพ JPEG และ PNG ในเอกสาร PDF เมื่อใช้ API คุณจะได้รับขนาดภาพ ความกว้าง ความสูง จำนวนบิตต่อส่วนประกอบ และปริภูมิสี นอกจากนี้ คุณสามารถตั้งค่ามาสก์สีและภาพมาสก์สำหรับรูปภาพที่ฝังไว้

สร้างไฟล์ PDF ที่เข้ารหัสโดยใช้ C++ API

การเข้ารหัสเป็นกลไกที่มีประโยชน์มากที่ช่วยให้การเข้ารหัสข้อมูลเป็นรหัสลับที่ซ่อนความหมายที่แท้จริงของข้อมูล ไลบรารีโอเพนซอร์ส LibHaru ช่วยให้นักพัฒนาซอฟต์แวร์สร้างไฟล์ PDF ที่เข้ารหัสโดยไม่ต้องพึ่งพาภายนอก

สร้างไฟล์ PDF ที่เข้ารหัสผ่าน C++

 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;
}
        
 ไทย