OSDN Git Service

binding with libharu.
[putex/putex.git] / src / texsourc / lib / libhpdf / if / python / demo / ttfont_demo_jp.py
1 ###
2 ## * << Haru Free PDF Library 2.0.0 >> -- ttfont_demo_jp.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
18 import os, sys
19
20 from ctypes import *
21 up=2
22 def 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
28 setlibpath(up)
29
30 from haru import *
31 from haru.c_func import *
32 from haru.hpdf_errorcode import *
33
34
35 @HPDF_Error_Handler(None, HPDF_UINT, HPDF_UINT, c_void_p)
36 def 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
43
44 def main ():
45     global  pdf
46
47     if (len(sys.argv) < 2):
48         printf ("ttfont_jp_demo <ttf-font-filename> [-E]\n")
49         printf ("ttfont_jp_demo <ttc-font-filename> <index> [-E]\n")
50         return 1
51
52     try:
53         f = open ("mbtext/sjis.txt", "rb")
54     except:
55         printf ("error: cannot open 'mbtext/sjis.txt'\n")
56         return 1
57
58
59     SAMP_TXT=f.read(2048)
60     f.close()
61
62     fname=os.path.realpath(sys.argv[0])
63     fname=fname[:fname.rfind('.')]+'.pdf'
64
65     pdf = HPDF_New (error_handler, NULL)
66     if (not pdf):
67         printf ("error: cannot create PdfDoc object\n")
68         return 1
69
70
71     # declaration for using Japanese encoding.
72     HPDF_UseJPEncodings (pdf)
73
74     HPDF_SetCompressionMode (pdf, HPDF_COMP_ALL)
75
76     # load ttc file
77     if len(sys.argv) == 4 and sys.argv[3]=="-E":
78         detail_font_name = HPDF_LoadTTFontFromFile2 (pdf, sys.argv[1],
79                 int (sys.argv[2]), HPDF_TRUE)
80     elif len(sys.argv) == 3 and sys.argv[2]=="-E":
81         detail_font_name = HPDF_LoadTTFontFromFile (pdf, sys.argv[1], HPDF_TRUE)
82     elif len(sys.argv) == 3:
83         detail_font_name = HPDF_LoadTTFontFromFile2 (pdf, sys.argv[1],
84                 int (sys.argv[2]), HPDF_FALSE)
85     else:
86         detail_font_name = HPDF_LoadTTFontFromFile (pdf, sys.argv[1], HPDF_FALSE)
87
88     # add a new page object.
89     page = HPDF_AddPage (pdf)
90
91     title_font = HPDF_GetFont (pdf, "Helvetica", NULL)
92
93     detail_font = HPDF_GetFont (pdf, detail_font_name, "90msp-RKSJ-H")
94
95     HPDF_Page_SetFontAndSize (page, title_font, 10)
96
97     HPDF_Page_BeginText (page)
98
99     # move the position of the text to top of the page.
100     HPDF_Page_MoveTextPos(page, 10, 190)
101     HPDF_Page_ShowText (page, detail_font_name)
102     HPDF_Page_ShowText (page, " (")
103     HPDF_Page_ShowText (page, HPDF_Font_GetEncodingName (detail_font))
104     HPDF_Page_ShowText (page, ")")
105
106     HPDF_Page_SetFontAndSize (page, detail_font, 15)
107     HPDF_Page_MoveTextPos (page, 10, -20)
108     HPDF_Page_ShowText (page, "abcdefghijklmnopqrstuvwxyz")
109     HPDF_Page_MoveTextPos (page, 0, -20)
110     HPDF_Page_ShowText (page, "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
111     HPDF_Page_MoveTextPos (page, 0, -20)
112     HPDF_Page_ShowText (page, "1234567890")
113     HPDF_Page_MoveTextPos (page, 0, -20)
114
115     HPDF_Page_SetFontAndSize (page, detail_font, 10)
116     HPDF_Page_ShowText (page, SAMP_TXT)
117     HPDF_Page_MoveTextPos (page, 0, -18)
118
119     HPDF_Page_SetFontAndSize (page, detail_font, 16)
120     HPDF_Page_ShowText (page, SAMP_TXT)
121     HPDF_Page_MoveTextPos (page, 0, -27)
122
123     HPDF_Page_SetFontAndSize (page, detail_font, 23)
124     HPDF_Page_ShowText (page, SAMP_TXT)
125     HPDF_Page_MoveTextPos (page, 0, -36)
126
127     HPDF_Page_SetFontAndSize (page, detail_font, 30)
128     HPDF_Page_ShowText (page, SAMP_TXT)
129     HPDF_Page_MoveTextPos (page, 0, -36)
130
131     pw = HPDF_Page_TextWidth (page, SAMP_TXT)
132     page_height = 210
133     page_width = pw + 40
134
135     HPDF_Page_SetWidth (page, page_width)
136     HPDF_Page_SetHeight (page, page_height)
137
138     # finish to print text.
139     HPDF_Page_EndText (page)
140
141     HPDF_Page_SetLineWidth (page, 0.5)
142
143     HPDF_Page_MoveTo (page, 10, page_height - 25)
144     HPDF_Page_LineTo (page, page_width - 10, page_height - 25)
145     HPDF_Page_Stroke (page)
146
147     HPDF_Page_MoveTo (page, 10, page_height - 85)
148     HPDF_Page_LineTo (page, page_width - 10, page_height - 85)
149     HPDF_Page_Stroke (page)
150
151     HPDF_SaveToFile (pdf, fname)
152
153     # clean up
154     HPDF_Free (pdf)
155
156     return 0
157
158 main()