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
เริ่มต้นกับ 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;
}