1### 2## * << Haru Free PDF Library 2.0.0 >> -- jpfont_demo.c 3## * 4## * Copyright (c) 1999-2006 Takeshi Kanno <takeshi_kanno@est.hi-ho.ne.jp> 5## * 6## * Permission to use, copy, modify, distribute and sell this software 7## * and its documentation for any purpose is hereby granted without fee, 8## * provided that the above copyright notice appear in all copies and 9## * that both that copyright notice and this permission notice appear 10## * in supporting documentation. 11## * It is provided "as is" without express or implied warranty. 12## * 13## 14 15## port to python by Li Jun 16## http://groups.google.com/group/pythoncia 17 18import os, sys 19 20from ctypes import * 21up=2 22def setlibpath(up): 23 import sys 24 path=os.path.normpath(os.path.split(os.path.realpath(__file__))[0]+'\..'*up) 25 if path not in sys.path: 26 sys.path.append(path) 27 28setlibpath(up) 29 30from haru import * 31from haru.c_func import * 32from haru.hpdf_errorcode import * 33 34 35@HPDF_Error_Handler(None, HPDF_UINT, HPDF_UINT, c_void_p) 36def error_handler (error_no, detail_no, user_data): 37 global pdf 38 printf ("ERROR: %s, detail_no=%u\n", error_detail[error_no], 39 detail_no) 40 HPDF_Free (pdf) 41 sys.exit(1) 42 43def main(): 44 global pdf 45 46 detail_font=[None for i in range(16)] 47 PAGE_HEIGHT = 210 48 49 try: 50 f = open ("mbtext/sjis.txt", "rb") 51 except: 52 printf ("error: cannot open 'mbtext/sjis.txt'\n") 53 return 1 54 55 samp_text=f.read(2048) 56 f.close () 57 58 fname=os.path.realpath(sys.argv[0]) 59 fname=fname[:fname.rfind('.')]+'.pdf' 60 61 pdf = HPDF_New (error_handler, NULL) 62 if (not pdf): 63 printf ("error: cannot create PdfDoc object\n") 64 return 1 65 66 67 # configure pdf-document to be compressed. 68 HPDF_SetCompressionMode (pdf, HPDF_COMP_ALL) 69 70 # declaration for using Japanese font, encoding. 71 HPDF_UseJPEncodings (pdf) 72 HPDF_UseJPFonts (pdf) 73 74 detail_font[0] = HPDF_GetFont (pdf, "MS-Mincyo", "90ms-RKSJ-H") 75 detail_font[1] = HPDF_GetFont (pdf, "MS-Mincyo,Bold", "90ms-RKSJ-H") 76 detail_font[2] = HPDF_GetFont (pdf, "MS-Mincyo,Italic", "90ms-RKSJ-H") 77 detail_font[3] = HPDF_GetFont (pdf, "MS-Mincyo,BoldItalic", "90ms-RKSJ-H") 78 detail_font[4] = HPDF_GetFont (pdf, "MS-PMincyo", "90msp-RKSJ-H") 79 detail_font[5] = HPDF_GetFont (pdf, "MS-PMincyo,Bold", "90msp-RKSJ-H") 80 detail_font[6] = HPDF_GetFont (pdf, "MS-PMincyo,Italic", "90msp-RKSJ-H") 81 detail_font[7] = HPDF_GetFont (pdf, "MS-PMincyo,BoldItalic", 82 "90msp-RKSJ-H") 83 detail_font[8] = HPDF_GetFont (pdf, "MS-Gothic", "90ms-RKSJ-H") 84 detail_font[9] = HPDF_GetFont (pdf, "MS-Gothic,Bold", "90ms-RKSJ-H") 85 detail_font[10] = HPDF_GetFont (pdf, "MS-Gothic,Italic", "90ms-RKSJ-H") 86 detail_font[11] = HPDF_GetFont (pdf, "MS-Gothic,BoldItalic", "90ms-RKSJ-H") 87 detail_font[12] = HPDF_GetFont (pdf, "MS-PGothic", "90msp-RKSJ-H") 88 detail_font[13] = HPDF_GetFont (pdf, "MS-PGothic,Bold", "90msp-RKSJ-H") 89 detail_font[14] = HPDF_GetFont (pdf, "MS-PGothic,Italic", "90msp-RKSJ-H") 90 detail_font[15] = HPDF_GetFont (pdf, "MS-PGothic,BoldItalic", 91 "90msp-RKSJ-H") 92 93 # Set page mode to use outlines. 94 HPDF_SetPageMode(pdf, HPDF_PAGE_MODE_USE_OUTLINE) 95 96 # create outline root. 97 root = HPDF_CreateOutline (pdf, NULL, "JP font demo", NULL) 98 HPDF_Outline_SetOpened (root, HPDF_TRUE) 99 100 for i in range(16): 101 102 # add a new page object. 103 page = HPDF_AddPage (pdf) 104 105 # create outline entry 106 outline = HPDF_CreateOutline (pdf, root, 107 HPDF_Font_GetFontName (detail_font[i]), NULL) 108 dst = HPDF_Page_CreateDestination (page) 109 HPDF_Outline_SetDestination(outline, dst) 110 111 title_font = HPDF_GetFont (pdf, "Helvetica", NULL) 112 HPDF_Page_SetFontAndSize (page, title_font, 10) 113 114 HPDF_Page_BeginText (page) 115 116 # move the position of the text to top of the page. 117 HPDF_Page_MoveTextPos(page, 10, 190) 118 HPDF_Page_ShowText (page, HPDF_Font_GetFontName (detail_font[i])) 119 120 HPDF_Page_SetFontAndSize (page, detail_font[i], 15) 121 HPDF_Page_MoveTextPos (page, 10, -20) 122 HPDF_Page_ShowText (page, "abcdefghijklmnopqrstuvwxyz") 123 HPDF_Page_MoveTextPos (page, 0, -20) 124 HPDF_Page_ShowText (page, "ABCDEFGHIJKLMNOPQRSTUVWXYZ") 125 HPDF_Page_MoveTextPos (page, 0, -20) 126 HPDF_Page_ShowText (page, "1234567890") 127 HPDF_Page_MoveTextPos (page, 0, -20) 128 129 HPDF_Page_SetFontAndSize (page, detail_font[i], 10) 130 HPDF_Page_ShowText (page, samp_text) 131 HPDF_Page_MoveTextPos (page, 0, -18) 132 133 HPDF_Page_SetFontAndSize (page, detail_font[i], 16) 134 HPDF_Page_ShowText (page, samp_text) 135 HPDF_Page_MoveTextPos (page, 0, -27) 136 137 HPDF_Page_SetFontAndSize (page, detail_font[i], 23) 138 HPDF_Page_ShowText (page, samp_text) 139 HPDF_Page_MoveTextPos (page, 0, -36) 140 141 HPDF_Page_SetFontAndSize (page, detail_font[i], 30) 142 HPDF_Page_ShowText (page, samp_text) 143 144 p = HPDF_Page_GetCurrentTextPos (page) 145 146 # finish to print text. 147 HPDF_Page_EndText (page) 148 149 HPDF_Page_SetLineWidth (page, 0.5) 150 151 x_pos = 20 152 for j in range(len (samp_text) // 2): 153 HPDF_Page_MoveTo (page, x_pos, p.y - 10) 154 HPDF_Page_LineTo (page, x_pos, p.y - 12) 155 HPDF_Page_Stroke (page) 156 x_pos = x_pos + 30 157 158 HPDF_Page_SetWidth (page, p.x + 20) 159 HPDF_Page_SetHeight (page, PAGE_HEIGHT) 160 161 HPDF_Page_MoveTo (page, 10, PAGE_HEIGHT - 25) 162 HPDF_Page_LineTo (page, p.x + 10, PAGE_HEIGHT - 25) 163 HPDF_Page_Stroke (page) 164 165 HPDF_Page_MoveTo (page, 10, PAGE_HEIGHT - 85) 166 HPDF_Page_LineTo (page, p.x + 10, PAGE_HEIGHT - 85) 167 HPDF_Page_Stroke (page) 168 169 HPDF_Page_MoveTo (page, 10, p.y - 12) 170 HPDF_Page_LineTo (page, p.x + 10, p.y - 12) 171 HPDF_Page_Stroke (page) 172 173 HPDF_SaveToFile (pdf, fname) 174 175 # clean up 176 HPDF_Free (pdf) 177 178 return 0 179 180main()