void draw_image (HPDF_Doc pdf, const char *filename, float x, float y, const char *text) { #ifdef __WIN32__ const char* FILE_SEPARATOR = "\\"; #else const char* FILE_SEPARATOR = "/"; #endif char filename1[255]; HPDF_Page page = HPDF_GetCurrentPage (pdf); HPDF_Image image; strcpy(filename1, "images"); strcat(filename1, FILE_SEPARATOR); strcat(filename1, filename); image = HPDF_LoadJpegImageFromFile (pdf, filename1); /* Draw image to the canvas. */ HPDF_Page_DrawImage (page, image, x, y, HPDF_Image_GetWidth (image), HPDF_Image_GetHeight (image)); /* Print the text. */ HPDF_Page_BeginText (page); HPDF_Page_SetTextLeading (page, 16); HPDF_Page_MoveTextPos (page, x, y); HPDF_Page_ShowTextNextLine (page, filename); HPDF_Page_ShowTextNextLine (page, text); HPDF_Page_EndText (page); }
JNIEXPORT void JNICALL Java_com_draekko_libharu_PdfImage_drawImage (JNIEnv *env, jobject obj, jfloat x, jfloat y, jfloat width, jfloat height) { haru_setup_error_handler(env, __func__); HPDF_Image image = get_HPDF_Image(env, obj); HPDF_Page page = HPDF_GetCurrentPage(current_pdf); HPDF_Page_DrawImage(page, image, x, y, width, height); haru_clear_error_handler(); }
JNIEXPORT void JNICALL Java_com_draekko_libharu_PdfImage_constructPng (JNIEnv *env, jobject obj, jobject document, jstring fileName) { haru_setup_error_handler(env, __func__); const char* file_str = env->GetStringUTFChars(fileName, 0); current_pdf = get_HPDF_Doc(env, document); current_page = HPDF_GetCurrentPage(current_pdf); HPDF_Image image = HPDF_LoadPngImageFromFile(current_pdf, file_str); set_HPDF_Image(env, obj, image); env->ReleaseStringUTFChars(fileName, file_str); haru_clear_error_handler(); }
WPdfImage::~WPdfImage() { beingDeleted(); if (myPdf_) { // clear graphics state stack to avoid leaking memory in libharu // see bug #3979 HPDF_Page page = HPDF_GetCurrentPage(pdf_); if (page) while (HPDF_Page_GetGStateDepth(page) > 1) HPDF_Page_GRestore(page); HPDF_Free(pdf_); } delete trueTypeFonts_; }