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); }
/* * Class: org_libharu_PdfPage * Method: setTextLeading * Signature: (F)V */ JNIEXPORT void JNICALL Java_org_libharu_PdfPage_setTextLeading(JNIEnv *env, jobject obj, jfloat value) { jint page; /* Get mHPDFPagePointer */ page = (*env)->GetIntField(env, obj, mHPDFPagePointer); HPDF_Page_SetTextLeading((HPDF_Page) page, (HPDF_REAL) value); }
JNIEXPORT void JNICALL Java_com_draekko_libharu_PdfPage_setTextLeading (JNIEnv *env, jobject obj, jfloat value) { haru_setup_error_handler(env, __func__); HPDF_Page page = get_HPDF_Page(env, obj); HPDF_Page_SetTextLeading(page, value); haru_clear_error_handler(); }
int main(int argc, char **argv) { HPDF_Doc pdf; HPDF_Font font; HPDF_Page index_page; HPDF_Page page[9]; HPDF_Destination dst; char fname[256]; HPDF_Rect rect; HPDF_Point tp; HPDF_Annotation annot; HPDF_UINT i; const char *uri = "http://libharu.org"; 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); /* create index page */ index_page = HPDF_AddPage (pdf); HPDF_Page_SetWidth (index_page, 300); HPDF_Page_SetHeight (index_page, 220); /* Add 7 pages to the document. */ for (i = 0; i < 7; i++) { page[i] = HPDF_AddPage (pdf); print_page(page[i], font, i + 1); } HPDF_Page_BeginText (index_page); HPDF_Page_SetFontAndSize (index_page, font, 10); HPDF_Page_MoveTextPos (index_page, 15, 200); HPDF_Page_ShowText (index_page, "Link Annotation Demo"); HPDF_Page_EndText (index_page); /* * Create Link-Annotation object on index page. */ HPDF_Page_BeginText(index_page); HPDF_Page_SetFontAndSize (index_page, font, 8); HPDF_Page_MoveTextPos (index_page, 20, 180); HPDF_Page_SetTextLeading (index_page, 23); /* page1 (HPDF_ANNOT_NO_HIGHTLIGHT) */ tp = HPDF_Page_GetCurrentTextPos (index_page); HPDF_Page_ShowText (index_page, "Jump to Page1 (HilightMode=HPDF_ANNOT_NO_HIGHTLIGHT)"); rect.left = tp.x - 4; rect.bottom = tp.y - 4; rect.right = HPDF_Page_GetCurrentTextPos (index_page).x + 4; rect.top = tp.y + 10; HPDF_Page_MoveToNextLine (index_page); dst = HPDF_Page_CreateDestination (page[0]); annot = HPDF_Page_CreateLinkAnnot (index_page, rect, dst); HPDF_LinkAnnot_SetHighlightMode (annot, HPDF_ANNOT_NO_HIGHTLIGHT); /* page2 (HPDF_ANNOT_INVERT_BOX) */ tp = HPDF_Page_GetCurrentTextPos (index_page); HPDF_Page_ShowText (index_page, "Jump to Page2 (HilightMode=HPDF_ANNOT_INVERT_BOX)"); rect.left = tp.x - 4; rect.bottom = tp.y - 4; rect.right = HPDF_Page_GetCurrentTextPos (index_page).x + 4; rect.top = tp.y + 10; HPDF_Page_MoveToNextLine (index_page); dst = HPDF_Page_CreateDestination (page[1]); annot = HPDF_Page_CreateLinkAnnot (index_page, rect, dst); HPDF_LinkAnnot_SetHighlightMode (annot, HPDF_ANNOT_INVERT_BOX); /* page3 (HPDF_ANNOT_INVERT_BORDER) */ tp = HPDF_Page_GetCurrentTextPos (index_page); HPDF_Page_ShowText (index_page, "Jump to Page3 (HilightMode=HPDF_ANNOT_INVERT_BORDER)"); rect.left = tp.x - 4; rect.bottom = tp.y - 4; rect.right = HPDF_Page_GetCurrentTextPos (index_page).x + 4; rect.top = tp.y + 10; HPDF_Page_MoveToNextLine (index_page); dst = HPDF_Page_CreateDestination (page[2]); annot = HPDF_Page_CreateLinkAnnot (index_page, rect, dst); HPDF_LinkAnnot_SetHighlightMode (annot, HPDF_ANNOT_INVERT_BORDER); /* page4 (HPDF_ANNOT_DOWN_APPEARANCE) */ tp = HPDF_Page_GetCurrentTextPos (index_page); HPDF_Page_ShowText (index_page, "Jump to Page4 (HilightMode=HPDF_ANNOT_DOWN_APPEARANCE)"); rect.left = tp.x - 4; rect.bottom = tp.y - 4; rect.right = HPDF_Page_GetCurrentTextPos (index_page).x + 4; rect.top = tp.y + 10; HPDF_Page_MoveToNextLine (index_page); dst = HPDF_Page_CreateDestination (page[3]); annot = HPDF_Page_CreateLinkAnnot (index_page, rect, dst); HPDF_LinkAnnot_SetHighlightMode (annot, HPDF_ANNOT_DOWN_APPEARANCE); /* page5 (dash border) */ tp = HPDF_Page_GetCurrentTextPos (index_page); HPDF_Page_ShowText (index_page, "Jump to Page5 (dash border)"); rect.left = tp.x - 4; rect.bottom = tp.y - 4; rect.right = HPDF_Page_GetCurrentTextPos (index_page).x + 4; rect.top = tp.y + 10; HPDF_Page_MoveToNextLine (index_page); dst = HPDF_Page_CreateDestination (page[4]); annot = HPDF_Page_CreateLinkAnnot (index_page, rect, dst); HPDF_LinkAnnot_SetBorderStyle (annot, 1, 3, 2); /* page6 (no border) */ tp = HPDF_Page_GetCurrentTextPos (index_page); HPDF_Page_ShowText (index_page, "Jump to Page6 (no border)"); rect.left = tp.x - 4; rect.bottom = tp.y - 4; rect.right = HPDF_Page_GetCurrentTextPos (index_page).x + 4; rect.top = tp.y + 10; HPDF_Page_MoveToNextLine (index_page); dst = HPDF_Page_CreateDestination (page[5]); annot = HPDF_Page_CreateLinkAnnot (index_page, rect, dst); HPDF_LinkAnnot_SetBorderStyle (annot, 0, 0, 0); /* page7 (bold border) */ tp = HPDF_Page_GetCurrentTextPos (index_page); HPDF_Page_ShowText (index_page, "Jump to Page7 (bold border)"); rect.left = tp.x - 4; rect.bottom = tp.y - 4; rect.right = HPDF_Page_GetCurrentTextPos (index_page).x + 4; rect.top = tp.y + 10; HPDF_Page_MoveToNextLine (index_page); dst = HPDF_Page_CreateDestination (page[6]); annot = HPDF_Page_CreateLinkAnnot (index_page, rect, dst); HPDF_LinkAnnot_SetBorderStyle (annot, 2, 0, 0); /* URI link */ tp = HPDF_Page_GetCurrentTextPos (index_page); HPDF_Page_ShowText (index_page, "URI ("); HPDF_Page_ShowText (index_page, uri); HPDF_Page_ShowText (index_page, ")"); rect.left = tp.x - 4; rect.bottom = tp.y - 4; rect.right = HPDF_Page_GetCurrentTextPos (index_page).x + 4; rect.top = tp.y + 10; HPDF_Page_CreateURILinkAnnot (index_page, rect, uri); HPDF_Page_EndText (index_page); /* save the document to a file */ HPDF_SaveToFile (pdf, fname); /* clean up */ HPDF_Free (pdf); return 0; }
int main (int argc, char **argv) { HPDF_Doc pdf; HPDF_Page page; char fname[256]; HPDF_Font font; //float angle1; //float angle2; //float rad1; //float rad2; //HPDF_REAL page_height; HPDF_Rect rect; //int i; //const char* SAMP_TXT = "Дирк Мюллер: власть над миром принадлежит банкам"; 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; } //printf("%s\n",HPDF_GetCurrentEncoder (pdf)); /* add a new page object. */ page = HPDF_AddPage (pdf); HPDF_Page_SetSize (page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_LANDSCAPE); // HPDF_PAGE_PORTRAIT //print_grid (pdf, page); //page_height = HPDF_Page_GetHeight (page); //page_height += 0; font = HPDF_GetFont (pdf, "Courier", "CP1251"); HPDF_Page_SetTextLeading (page, 20); /* text_rect method */ /* HPDF_TALIGN_LEFT */ rect.left = 25; rect.top = 545; rect.right = 200; rect.bottom = rect.top - 20; //~ HPDF_Page_Rectangle (page, 200 , 300 , 300, 100); //~ HPDF_Page_Stroke (page); //~ HPDF_Page_BeginText (page); //~ HPDF_Page_SetFontAndSize (page, font, 10); //~ int cnt =0; //~ HPDF_Page_TextRect (page, 10 , 600, 50, 550, //~ "123 45 6789 123 45 6789", //~ HPDF_TALIGN_LEFT, &cnt); //~ printf("printed %d\n", cnt); //~ HPDF_Page_EndText (page); HPDF_Page_BeginText (page); HPDF_Page_SetFontAndSize (page, font, 11); //HPDF_Page_TextOut (page, rect.left, rect.top + 3, "Поставщик"); echo1(page, "Поставщик", "ООО «РЕКО»", 0); echo1(page, "ИНН", "4345363002", 1); echo1(page, "КПП", "434501001", 2); echo1(page, "Телефон/факс", "62-38-67, 78-88-58", 3); echo1(page, "Расчетный счет", "40702810200220090271", 4); echo1(page, "Корр. счет", "30101810100000000711", 5); echo1(page, "Банк", "ОАО КБ «Хлынов» г. Киров", 6); echo1(page, "БИК", "043304711", 7); echo1(page, "", "Счет № / от ", 8); echo1(page, "Плательщик: КОГКУ «Государственный архив социально-политической истории Кировской области»", "", 10); echo1(page, "Юр. г. Киров, ул. Казанская, 16а,", "", 11); echo1(page, "Факс: (8332) 35-75-56,", "", 12); echo1(page, "ИНН: 4345057460 ", "", 13); HPDF_Page_SetFontAndSize (page, font, 12); HPDF_Page_EndText (page); int collum_size[] = {40, 7, 10, 7, 12, 12, 12}; char* text[] = {"Наименование товара", "Ед.Изм.", "Количество", "Цена", "Сумма без НДС", "Сумма НДС", "Всего с НДС", "1. Оказание услуг хостинга с 01 апреля 2015г. по 30 июня 2015г.", "шт.", "1", "5100=00", "5100=00", "0", "5100=00", "Всего к оплате:", "", "", "", "5100=00", "0", "5100=00" }; table(page, font, 3, 7, 10, HPDF_Page_GetHeight(page)-20 - (17*10), 20, /*!*/ collum_size, text); draw_image (pdf, "shtamp2.png", 100, 0 , "8bit alpha."); int collum_size2[] = {50, 50}; char* text2[] = {"Итого: Пять тысяч сто рублей 00 копеек", "5100=00 ", "ООО «РЕКО» применяет упрощенную систему налогообложения", "", "Директор ООО «РЕКО» ______________ /Лажинцев П.В./ ", " Главный бухгалтер ______________/_________________/ " }; table(page, font, 3, 2, 10, HPDF_Page_GetHeight(page)-20 - (25*10), 20, /*!*/ collum_size2, text2); /* HPDF_TALIGN_RIGTH */ //~ rect.left = 220; //~ rect.right = 395; //~ //~ HPDF_Page_Rectangle (page, rect.left, rect.bottom, rect.right - rect.left, //~ rect.top - rect.bottom); //~ HPDF_Page_Stroke (page); //~ //~ HPDF_Page_BeginText (page); //~ //~ HPDF_Page_SetFontAndSize (page, font, 10); //~ HPDF_Page_TextOut (page, rect.left, rect.top + 3, "HPDF_TALIGN_RIGTH"); //~ //~ HPDF_Page_SetFontAndSize (page, font, 13); //~ HPDF_Page_TextRect (page, rect.left, rect.top, rect.right, rect.bottom, //~ SAMP_TXT, HPDF_TALIGN_RIGHT, NULL); //~ //~ //~ HPDF_Page_EndText (page); //~ /* HPDF_TALIGN_CENTER */ //~ rect.left = 25; //~ rect.top = 475; //~ rect.right = 200; //~ rect.bottom = rect.top - 40; //~ //~ HPDF_Page_Rectangle (page, rect.left, rect.bottom, rect.right - rect.left, //~ rect.top - rect.bottom); //~ HPDF_Page_Stroke (page); //~ //~ HPDF_Page_BeginText (page); //~ //~ HPDF_Page_SetFontAndSize (page, font, 10); //~ HPDF_Page_TextOut (page, rect.left, rect.top + 3, "HPDF_TALIGN_CENTER"); //~ //~ HPDF_Page_SetFontAndSize (page, font, 13); //~ HPDF_Page_TextRect (page, rect.left, rect.top, rect.right, rect.bottom, //~ SAMP_TXT, HPDF_TALIGN_CENTER, NULL); //~ //~ HPDF_Page_EndText (page); //~ //~ /* HPDF_TALIGN_JUSTIFY */ //~ rect.left = 220; //~ rect.right = 395; //~ //~ HPDF_Page_Rectangle (page, rect.left, rect.bottom, rect.right - rect.left, //~ rect.top - rect.bottom); //~ HPDF_Page_Stroke (page); //~ //~ HPDF_Page_BeginText (page); //~ //~ HPDF_Page_SetFontAndSize (page, font, 10); //~ HPDF_Page_TextOut (page, rect.left, rect.top + 3, "HPDF_TALIGN_JUSTIFY"); //~ //~ HPDF_Page_SetFontAndSize (page, font, 13); //~ HPDF_Page_TextRect (page, rect.left, rect.top, rect.right, rect.bottom, //~ SAMP_TXT, HPDF_TALIGN_JUSTIFY, NULL); //~ //~ HPDF_Page_EndText (page); //~ //~ //~ //~ /* Skewed coordinate system */ //~ HPDF_Page_GSave (page); //~ //~ angle1 = 5; //~ angle2 = 10; //~ rad1 = angle1 / 180 * 3.141592; //~ rad2 = angle2 / 180 * 3.141592; //~ //~ HPDF_Page_Concat (page, 1, tan(rad1), tan(rad2), 1, 25, 350); //~ rect.left = 0; //~ rect.top = 40; //~ rect.right = 175; //~ rect.bottom = 0; //~ //~ HPDF_Page_Rectangle (page, rect.left, rect.bottom, rect.right - rect.left, //~ rect.top - rect.bottom); //~ HPDF_Page_Stroke (page); //~ //~ HPDF_Page_BeginText (page); //~ //~ HPDF_Page_SetFontAndSize (page, font, 10); //~ HPDF_Page_TextOut (page, rect.left, rect.top + 3, "Skewed coordinate system"); //~ //~ HPDF_Page_SetFontAndSize (page, font, 13); //~ HPDF_Page_TextRect (page, rect.left, rect.top, rect.right, rect.bottom, //~ SAMP_TXT, HPDF_TALIGN_LEFT, NULL); //~ //~ HPDF_Page_EndText (page); //~ //~ HPDF_Page_GRestore (page); //~ //~ //~ /* Rotated coordinate system */ //~ HPDF_Page_GSave (page); //~ //~ angle1 = 5; //~ rad1 = angle1 / 180 * 3.141592; //~ //~ HPDF_Page_Concat (page, cos(rad1), sin(rad1), -sin(rad1), cos(rad1), 220, 350); //~ rect.left = 0; //~ rect.top = 40; //~ rect.right = 175; //~ rect.bottom = 0; //~ //~ HPDF_Page_Rectangle (page, rect.left, rect.bottom, rect.right - rect.left, //~ rect.top - rect.bottom); //~ HPDF_Page_Stroke (page); //~ //~ HPDF_Page_BeginText (page); //~ //~ HPDF_Page_SetFontAndSize (page, font, 10); //~ HPDF_Page_TextOut (page, rect.left, rect.top + 3, "Rotated coordinate system"); //~ //~ HPDF_Page_SetFontAndSize (page, font, 13); //~ HPDF_Page_TextRect (page, rect.left, rect.top, rect.right, rect.bottom, //~ SAMP_TXT, HPDF_TALIGN_LEFT, NULL); //~ //~ HPDF_Page_EndText (page); //~ //~ HPDF_Page_GRestore (page); //~ //~ //~ /* text along a circle */ //~ HPDF_Page_SetGrayStroke (page, 0); //~ HPDF_Page_Circle (page, 210, 190, 145); //~ HPDF_Page_Circle (page, 210, 190, 113); //~ HPDF_Page_Stroke (page); //~ //~ angle1 = 360 / (strlen (SAMP_TXT)); //~ angle2 = 180; //~ //~ HPDF_Page_BeginText (page); //~ font = HPDF_GetFont (pdf, "Courier-Bold", NULL); //~ HPDF_Page_SetFontAndSize (page, font, 30); //~ //~ for (i = 0; i < strlen (SAMP_TXT); i++) { //~ char buf[2]; //~ float x; //~ float y; //~ //~ rad1 = (angle2 - 90) / 180 * 3.141592; //~ rad2 = angle2 / 180 * 3.141592; //~ //~ x = 210 + cos(rad2) * 122; //~ y = 190 + sin(rad2) * 122; //~ //~ HPDF_Page_SetTextMatrix(page, cos(rad1), sin(rad1), -sin(rad1), cos(rad1), x, y); //~ //~ buf[0] = SAMP_TXT[i]; //~ buf[1] = 0; //~ HPDF_Page_ShowText (page, buf); //~ angle2 -= angle1; //~ } //~ //~ HPDF_Page_EndText (page); /* save the document to a file */ HPDF_SaveToFile (pdf, fname); /* clean up */ HPDF_Free (pdf); return 0; }