LibHaru
مكتبة مفتوحة المصدر C ++ لمستندات PDF
إنشاء ملفات PDF وتحريرها ومعالجتها وتحويلها عبر Open Source C ++ API.
LibHaru هي مكتبة C ++ مفتوحة المصدر تمكن مطوري البرامج من إنشاء تنسيق ملف PDF ، حاليًا ، لا تسمح API بقراءة أو تحرير مستندات PDF الموجودة. باستخدام API ، يمكنك إنشاء ملف PDF - إضافة نص وخطوط وشروح فيه. علاوة على ذلك ، يمكنك أيضًا إضافة صور بتنسيق PNG و JPEG في المستند. يسمح LibHaru أيضًا بضغط مستند PDF بتنسيق انكماش فك الترميز وإنشاء مستندات PDF مشفرة.
LibHaru مكتوب ANSI-C ويمكنه العمل كمكتبة ثابتة ومكتبة مشتركة. لاستخدامه مع برنامج C ++ ، يمكنك تجميعه مع أي مترجم C ++ واستخدامه كمكتبة ثابتة.
الشروع في العمل مع 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;
}