Example #1
0
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();
}
Example #4
0
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;
}
Example #5
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;
}