/src/3rdPartyLibraries/libharu-2.1.0/demo/jpfont_demo.c
https://bitbucket.org/bathtub/rose · C · 197 lines · 137 code · 38 blank · 22 comment · 5 complexity · 6bb219f9cdc23b8fc8d56a6b250c2137 MD5 · raw file
- /*
- * << Haru Free PDF Library 2.0.0 >> -- jpfont_demo.c
- *
- * Copyright (c) 1999-2006 Takeshi Kanno <takeshi_kanno@est.hi-ho.ne.jp>
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation.
- * It is provided "as is" without express or implied warranty.
- *
- */
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include <setjmp.h>
- #include "hpdf.h"
- 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;
- char fname[256];
- HPDF_Font title_font;
- HPDF_Font detail_font[16];
- char samp_text[2048];
- HPDF_Outline root;
- HPDF_UINT i;
- const HPDF_UINT PAGE_HEIGHT = 210;
- #ifdef __WIN32__
- FILE* f = fopen ("mbtext\\sjis.txt", "rb");
- #else
- FILE* f = fopen ("mbtext/sjis.txt", "rb");
- #endif
- if (!f) {
- printf ("error: cannot open 'mbtext/sjis.txt'\n");
- return 1;
- }
- fgets (samp_text, 2048, f);
- fclose (f);
- 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;
- }
- /* configure pdf-document to be compressed. */
- HPDF_SetCompressionMode (pdf, HPDF_COMP_ALL);
- /* declaration for using Japanese font, encoding. */
- HPDF_UseJPEncodings (pdf);
- HPDF_UseJPFonts (pdf);
- detail_font[0] = HPDF_GetFont (pdf, "MS-Mincyo", "90ms-RKSJ-H");
- detail_font[1] = HPDF_GetFont (pdf, "MS-Mincyo,Bold", "90ms-RKSJ-H");
- detail_font[2] = HPDF_GetFont (pdf, "MS-Mincyo,Italic", "90ms-RKSJ-H");
- detail_font[3] = HPDF_GetFont (pdf, "MS-Mincyo,BoldItalic", "90ms-RKSJ-H");
- detail_font[4] = HPDF_GetFont (pdf, "MS-PMincyo", "90msp-RKSJ-H");
- detail_font[5] = HPDF_GetFont (pdf, "MS-PMincyo,Bold", "90msp-RKSJ-H");
- detail_font[6] = HPDF_GetFont (pdf, "MS-PMincyo,Italic", "90msp-RKSJ-H");
- detail_font[7] = HPDF_GetFont (pdf, "MS-PMincyo,BoldItalic",
- "90msp-RKSJ-H");
- detail_font[8] = HPDF_GetFont (pdf, "MS-Gothic", "90ms-RKSJ-H");
- detail_font[9] = HPDF_GetFont (pdf, "MS-Gothic,Bold", "90ms-RKSJ-H");
- detail_font[10] = HPDF_GetFont (pdf, "MS-Gothic,Italic", "90ms-RKSJ-H");
- detail_font[11] = HPDF_GetFont (pdf, "MS-Gothic,BoldItalic", "90ms-RKSJ-H");
- detail_font[12] = HPDF_GetFont (pdf, "MS-PGothic", "90msp-RKSJ-H");
- detail_font[13] = HPDF_GetFont (pdf, "MS-PGothic,Bold", "90msp-RKSJ-H");
- detail_font[14] = HPDF_GetFont (pdf, "MS-PGothic,Italic", "90msp-RKSJ-H");
- detail_font[15] = HPDF_GetFont (pdf, "MS-PGothic,BoldItalic",
- "90msp-RKSJ-H");
- /* Set page mode to use outlines. */
- HPDF_SetPageMode(pdf, HPDF_PAGE_MODE_USE_OUTLINE);
- /* create outline root. */
- root = HPDF_CreateOutline (pdf, NULL, "JP font demo", NULL);
- HPDF_Outline_SetOpened (root, HPDF_TRUE);
- for (i = 0; i <= 15; i++) {
- HPDF_Page page;
- HPDF_Outline outline;
- HPDF_Destination dst;
- HPDF_REAL x_pos;
- HPDF_Point p;
- HPDF_UINT j;
- /* add a new page object. */
- page = HPDF_AddPage (pdf);
- /* create outline entry */
- outline = HPDF_CreateOutline (pdf, root,
- HPDF_Font_GetFontName (detail_font[i]), NULL);
- dst = HPDF_Page_CreateDestination (page);
- HPDF_Outline_SetDestination(outline, dst);
- title_font = HPDF_GetFont (pdf, "Helvetica", NULL);
- HPDF_Page_SetFontAndSize (page, title_font, 10);
- HPDF_Page_BeginText (page);
- /* move the position of the text to top of the page. */
- HPDF_Page_MoveTextPos(page, 10, 190);
- HPDF_Page_ShowText (page, HPDF_Font_GetFontName (detail_font[i]));
- HPDF_Page_SetFontAndSize (page, detail_font[i], 15);
- HPDF_Page_MoveTextPos (page, 10, -20);
- HPDF_Page_ShowText (page, "abcdefghijklmnopqrstuvwxyz");
- HPDF_Page_MoveTextPos (page, 0, -20);
- HPDF_Page_ShowText (page, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
- HPDF_Page_MoveTextPos (page, 0, -20);
- HPDF_Page_ShowText (page, "1234567890");
- HPDF_Page_MoveTextPos (page, 0, -20);
- HPDF_Page_SetFontAndSize (page, detail_font[i], 10);
- HPDF_Page_ShowText (page, samp_text);
- HPDF_Page_MoveTextPos (page, 0, -18);
- HPDF_Page_SetFontAndSize (page, detail_font[i], 16);
- HPDF_Page_ShowText (page, samp_text);
- HPDF_Page_MoveTextPos (page, 0, -27);
- HPDF_Page_SetFontAndSize (page, detail_font[i], 23);
- HPDF_Page_ShowText (page, samp_text);
- HPDF_Page_MoveTextPos (page, 0, -36);
- HPDF_Page_SetFontAndSize (page, detail_font[i], 30);
- HPDF_Page_ShowText (page, samp_text);
- p = HPDF_Page_GetCurrentTextPos (page);
- /* finish to print text. */
- HPDF_Page_EndText (page);
- HPDF_Page_SetLineWidth (page, 0.5);
- x_pos = 20;
- for (j = 0; j <= strlen (samp_text) / 2; j++) {
- HPDF_Page_MoveTo (page, x_pos, p.y - 10);
- HPDF_Page_LineTo (page, x_pos, p.y - 12);
- HPDF_Page_Stroke (page);
- x_pos = x_pos + 30;
- }
- HPDF_Page_SetWidth (page, p.x + 20);
- HPDF_Page_SetHeight (page, PAGE_HEIGHT);
- HPDF_Page_MoveTo (page, 10, PAGE_HEIGHT - 25);
- HPDF_Page_LineTo (page, p.x + 10, PAGE_HEIGHT - 25);
- HPDF_Page_Stroke (page);
- HPDF_Page_MoveTo (page, 10, PAGE_HEIGHT - 85);
- HPDF_Page_LineTo (page, p.x + 10, PAGE_HEIGHT - 85);
- HPDF_Page_Stroke (page);
- HPDF_Page_MoveTo (page, 10, p.y - 12);
- HPDF_Page_LineTo (page, p.x + 10, p.y - 12);
- HPDF_Page_Stroke (page);
- }
- HPDF_SaveToFile (pdf, fname);
- /* clean up */
- HPDF_Free (pdf);
- return 0;
- }