hpdf 2.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. data/History +57 -0
  2. data/License +25 -0
  3. data/README +165 -0
  4. data/examples/arc_demo.rb +82 -0
  5. data/examples/demo.rb +92 -0
  6. data/examples/encryption.rb +41 -0
  7. data/examples/ext_gstater_demo.rb +171 -0
  8. data/examples/font_demo.rb +67 -0
  9. data/examples/jpfont_demo.rb +122 -0
  10. data/examples/line_demo.rb +301 -0
  11. data/examples/slide_show_demo.rb +139 -0
  12. data/examples/text_demo2.rb +189 -0
  13. data/examples/ttfont_demo.rb +106 -0
  14. data/ext/extconf.rb +6 -0
  15. data/ext/hpdf.c +3779 -0
  16. data/ext/hpdf_annotation.c +415 -0
  17. data/ext/hpdf_array.c +344 -0
  18. data/ext/hpdf_binary.c +117 -0
  19. data/ext/hpdf_boolean.c +47 -0
  20. data/ext/hpdf_catalog.c +354 -0
  21. data/ext/hpdf_destination.c +339 -0
  22. data/ext/hpdf_dict.c +488 -0
  23. data/ext/hpdf_doc.c +2020 -0
  24. data/ext/hpdf_doc_png.c +137 -0
  25. data/ext/hpdf_encoder.c +2991 -0
  26. data/ext/hpdf_encoder_cns.c +36359 -0
  27. data/ext/hpdf_encoder_cnt.c +15307 -0
  28. data/ext/hpdf_encoder_jp.c +16125 -0
  29. data/ext/hpdf_encoder_kr.c +27978 -0
  30. data/ext/hpdf_encrypt.c +632 -0
  31. data/ext/hpdf_encryptdict.c +240 -0
  32. data/ext/hpdf_error.c +114 -0
  33. data/ext/hpdf_ext_gstate.c +150 -0
  34. data/ext/hpdf_font.c +229 -0
  35. data/ext/hpdf_font_cid.c +1030 -0
  36. data/ext/hpdf_font_tt.c +406 -0
  37. data/ext/hpdf_font_type1.c +391 -0
  38. data/ext/hpdf_fontdef.c +56 -0
  39. data/ext/hpdf_fontdef_base14.c +4506 -0
  40. data/ext/hpdf_fontdef_cid.c +194 -0
  41. data/ext/hpdf_fontdef_cns.c +471 -0
  42. data/ext/hpdf_fontdef_cnt.c +250 -0
  43. data/ext/hpdf_fontdef_jp.c +1904 -0
  44. data/ext/hpdf_fontdef_kr.c +1572 -0
  45. data/ext/hpdf_fontdef_tt.c +2230 -0
  46. data/ext/hpdf_fontdef_type1.c +524 -0
  47. data/ext/hpdf_gstate.c +119 -0
  48. data/ext/hpdf_image.c +568 -0
  49. data/ext/hpdf_image_png.c +424 -0
  50. data/ext/hpdf_info.c +164 -0
  51. data/ext/hpdf_list.c +333 -0
  52. data/ext/hpdf_mmgr.c +243 -0
  53. data/ext/hpdf_name.c +71 -0
  54. data/ext/hpdf_null.c +31 -0
  55. data/ext/hpdf_number.c +49 -0
  56. data/ext/hpdf_objects.c +172 -0
  57. data/ext/hpdf_outline.c +329 -0
  58. data/ext/hpdf_page_label.c +74 -0
  59. data/ext/hpdf_page_operator.c +2764 -0
  60. data/ext/hpdf_pages.c +1508 -0
  61. data/ext/hpdf_real.c +61 -0
  62. data/ext/hpdf_streams.c +1435 -0
  63. data/ext/hpdf_string.c +189 -0
  64. data/ext/hpdf_utils.c +438 -0
  65. data/ext/hpdf_xref.c +348 -0
  66. data/ext/include/hpdf.h +1227 -0
  67. data/ext/include/hpdf_annotation.h +74 -0
  68. data/ext/include/hpdf_catalog.h +81 -0
  69. data/ext/include/hpdf_conf.h +76 -0
  70. data/ext/include/hpdf_consts.h +549 -0
  71. data/ext/include/hpdf_destination.h +41 -0
  72. data/ext/include/hpdf_doc.h +159 -0
  73. data/ext/include/hpdf_encoder.h +311 -0
  74. data/ext/include/hpdf_encrypt.h +156 -0
  75. data/ext/include/hpdf_encryptdict.h +66 -0
  76. data/ext/include/hpdf_error.h +201 -0
  77. data/ext/include/hpdf_ext_gstate.h +38 -0
  78. data/ext/include/hpdf_font.h +112 -0
  79. data/ext/include/hpdf_fontdef.h +403 -0
  80. data/ext/include/hpdf_gstate.h +80 -0
  81. data/ext/include/hpdf_image.h +72 -0
  82. data/ext/include/hpdf_info.h +48 -0
  83. data/ext/include/hpdf_list.h +85 -0
  84. data/ext/include/hpdf_mmgr.h +82 -0
  85. data/ext/include/hpdf_objects.h +587 -0
  86. data/ext/include/hpdf_outline.h +74 -0
  87. data/ext/include/hpdf_page_label.h +35 -0
  88. data/ext/include/hpdf_pages.h +128 -0
  89. data/ext/include/hpdf_streams.h +276 -0
  90. data/ext/include/hpdf_types.h +488 -0
  91. data/ext/include/hpdf_utils.h +161 -0
  92. data/tests/arc_demo.rb +82 -0
  93. data/tests/demo.rb +91 -0
  94. data/tests/encryption.rb +41 -0
  95. data/tests/ext_gstater_demo.rb +171 -0
  96. data/tests/font_demo.rb +67 -0
  97. data/tests/line_demo.rb +301 -0
  98. data/tests/slide_show_demo.rb +139 -0
  99. data/tests/test_all_examples.rb +31 -0
  100. data/tests/text_demo2.rb +189 -0
  101. metadata +147 -0
data/History ADDED
@@ -0,0 +1,57 @@
1
+ == version 2.0.8 2006.11.25
2
+ *fixed a problem of HPDF_Circle() which causes buffer overflow.
3
+ *added HPDF_Ellipse().
4
+
5
+ == version 2.0.7 2006.11.05
6
+ *fixed a bug of HPDF_Annotation_New() (the values of bottom and top are set
7
+ upside down).
8
+ *added HPDF_Page_GetCurrentPos2(), HPDF_Page_GetCurrentTextPos2() and
9
+ HPDF_Image_GetSize2().
10
+
11
+ == version 2.0.6 2006.10.16
12
+ *added opacity and blend-mode featurs.
13
+ *added slide-show functions (contributed by Adrian Nelson).
14
+ *added an interface for VB6 (contributed by Ko, Chi-Chih).
15
+ *fixed a bug that HPDF_MemStream_Rewrite() may cause segmentation fault.
16
+ *fixed a bug of error checking of HPDF_Page_Concat().
17
+ *fixed a bug of calculation for the position of text showing.
18
+
19
+ == version 2.0.5 2006.09.20
20
+ *fixed a bug that an image which loaded by HPDF_LoadRawImageFromFile() or
21
+ HPDF_LoadRawImageFromMem() is not compressed.
22
+ *added C# interface.
23
+ *added viewer-preference feature.
24
+ *fixed a bug that HPDF_SetPassword does not raise error when NULL string set
25
+ to owner-password.
26
+ *fixed a bug that causes program crash when using interlaced PNG images.
27
+
28
+ == version 2.0.4 2006.08.25
29
+ *fixed a bug of the TrueType font feature related to composit glyph.
30
+
31
+ == version 2.0.3 2006.08.20
32
+ *fixed a bug that HPDF_Page_TextRect() always returns
33
+ HPDF_PAGE_INSUFFICIENT_SPACE.
34
+ *added delayed loading function for a png image (HPDF_LoadPngImageFromFile2).
35
+ *change HPDF_SaveToStream function.
36
+ *correct hpdf_ttfontdef.c to avoid warning from a compiler.
37
+
38
+ == version 2.0.2
39
+ *modified HPDF_Page_ShowTextNextLine() to invoking HPDF_Page_MoveToNextLine()
40
+ if it is invoked with null or zero-length text.
41
+ *fixed a bug in which HPDF_Page_MeasureText() returns wrong value when using
42
+ CID fonts.
43
+ *changed the feature of HPDF_Page_MeasureText().
44
+ *added Japanese word wrap feature to HPDF_Page_MeasureText() and
45
+ HPDF_Page_TextRect().
46
+ *fixed typos of HPDF_PageLayout values.
47
+ *modified options of makefile for BCC32 to multi-thread.
48
+ rebuild libz.a, libpng.a for BCC32 with -WM option.
49
+
50
+ == version 2.0.1a 2006-08-03
51
+ *fixed a bug that HPDFPage::draw_image does not work correctly. (Ruby module
52
+ only.)
53
+
54
+ == version 2.0.1 2006-07-29
55
+ *fixed a bug that HPDF_TextRect() does not work correctly when using CID fonts.
56
+ *added HPDF_Font_GetAscent(), HPDF_Font_GetDescent(), HPDF_Font_GetXHeight(),
57
+ HPDF_Font_GetCapHeight().
data/License ADDED
@@ -0,0 +1,25 @@
1
+ *
2
+ * License
3
+ *
4
+ Haru is distributed under the ZLIB/LIBPNG License. Because ZLIB/LIBPNG License
5
+ is one of the freest licenses, You can use Haru for various purposes.
6
+
7
+ The license of Haru is as follows.
8
+
9
+ Copyright (C) 1999-2006 Takeshi Kanno
10
+ This software is provided 'as-is', without any express or implied warranty.
11
+
12
+ In no event will the authors be held liable for any damages arising from the
13
+ use of this software.
14
+
15
+ Permission is granted to anyone to use this software for any purpose,including
16
+ commercial applications, and to alter it and redistribute it freely, subject
17
+ to the following restrictions:
18
+
19
+ 1. The origin of this software must not be misrepresented; you must not claim
20
+ that you wrote the original software. If you use this software in a
21
+ product, an acknowledgment in the product documentation would be
22
+ appreciated but is not required.
23
+ 2. Altered source versions must be plainly marked as such, and must not be
24
+ misrepresented as being the original software.
25
+ 3. This notice may not be removed or altered from any source distribution.
data/README ADDED
@@ -0,0 +1,165 @@
1
+ ===============================================================================
2
+ # Haru Free PDF Library Version 2.0.8 - Nov 25, 2006
3
+
4
+ This gem has been packaged by Emmanuel Oga, EmmanuelOga.blogspot.com
5
+
6
+ I followed the instructions in the libharu_2_x_x.tar.gz package:
7
+
8
+ 1) Build Haru as a static library.
9
+
10
+ NOTE:
11
+ When you build haru for creating ruby extension library on linux
12
+ platforms, run configure script with following command.
13
+
14
+ ./configure --cflags=-fPIC
15
+
16
+ 2) Change directory to "libharu-2.X.X/if/ruby" and run extconf.rb.
17
+
18
+ ruby extconf.rb
19
+
20
+ 3) Then invoke "make install" command.
21
+
22
+ make install
23
+
24
+ That's all!!! I only "gemified" the code and included the samples.
25
+
26
+ WARNING! TO USE THIS GEM on linux you need proper build tools (complete gcc package),
27
+ libpng and zlib. I had to make some research to find these for my ubuntu feisty
28
+ o.s.
29
+
30
+ If you are using ubuntu (or maybe debian or other linux with apt support)
31
+
32
+ "sudo apt-get install build-essential"
33
+
34
+ should do the trick for the build environment.
35
+
36
+ For zlib and libpng, you could install the program "apt-file" (sudo apt-get install apt-file)
37
+ and search the dependencies with it.
38
+
39
+ "apt-file search png.h"
40
+ "apt-file search zlib.h"
41
+
42
+ Choose one of the listed packages and install it with apt-get.
43
+ Then you should have no problem installing the gem.
44
+
45
+ Original readme follows:
46
+
47
+ ===============================================================================
48
+
49
+ # Haru Free PDF Library Version 2.0.8 - Nov 25, 2006
50
+ #
51
+ # URL http://libharu.sourceforge.net/
52
+ #
53
+ # Copyright 2000-2006 (c) Takeshi Kanno
54
+ #
55
+
56
+ See INSTALL for instructions on how to install libpng.
57
+
58
+ *
59
+ * What is Haru Free PDF Library?
60
+ *
61
+ Haru is a free, cross platform, open-sourced software library for generating
62
+ PDF. It supports the following features.
63
+
64
+ 1. Generating PDF files with lines, text, images.
65
+ 2. Outline, text annotation, link annotation.
66
+ 3. Compressing document with deflate-decode.
67
+ 4. Embedding PNG, Jpeg images.
68
+ 5. Embedding Type1 font and TrueType font.
69
+ 6. Creating encrypted PDF files.
70
+ 7. Using various character set (ISO8859-1~16, MSCP1250~8, KOI-8R).
71
+ 8. Supporting CJK fonts and encodings.
72
+
73
+ You can add the feature of PDF creation by using Haru without understanding
74
+ complicated internal structure of PDF.
75
+
76
+ *
77
+ * The differences from the previous version
78
+ *
79
+
80
+ The biggest differences are that all code is written in C.
81
+ To our regret, because internal structures changed greatly, The API is not
82
+ compatible with previous version.
83
+
84
+ However, the new-version has the following advantages compared with the
85
+ previous version.
86
+
87
+ 1. Supported shared-library build.
88
+ A new-version library is able to be built as shared-library.
89
+ 2. The performance has been greatly improved.
90
+ A new-version library is about 4-15 times faster than a previous version.
91
+ 3. Supported more features.
92
+ TrueType font, 128 bit encryption, arc function, and so on.
93
+
94
+ *
95
+ * Supporting platforms
96
+ *
97
+ Haru is written in ANSI-C and should compile easily with any compliant C
98
+ compiler.
99
+ I inspected Haru in the following environment and make files for these
100
+ environments are included in a package.
101
+
102
+ 1. Cygwin + GCC (Microsoft Windows)
103
+ 2. Cygwin + MinGW (Microsoft Windows)
104
+ 3. MSYS + MinGW (Microsoft Windows)
105
+ 3. Microsoft VC++ (Microsoft Windows)
106
+ 4. Borland C++ (Microsoft Windows)
107
+ 5. GCC (Linux, FreeBSD, NetBSD, Solaris...)
108
+
109
+ Also on platforms except the above, it is easy to build HARU. If you success to build HARU on other platforms, please send makefile to me.
110
+ In addition, ZLIB and PNGLIB are required when you want to use the features of
111
+ compression and embedding PNG images. (In the case of Windows, static library
112
+ files for several compilers are included in the package for WIndows. In the
113
+ case of most of UNIX, these libraries are usually installed.)
114
+
115
+ *
116
+ * Available development environment
117
+ *
118
+ Haru can work as both static-library (.a, .lib) and shared-library (.so, .dll).
119
+ When you use it as static-library, It can be used by C and a C++.
120
+ But when you use it as shared-library, it can be used by many development
121
+ languages which support shared library.
122
+ So far, Haru provides bindings for Ruby, Delphi/Free Pascal and C#.
123
+
124
+ If you write bindings for other programing languages, please notice me!
125
+
126
+ *
127
+ * Runtime environment of programs using Haru
128
+ *
129
+ 1. static-library
130
+ No runtime files are required.
131
+
132
+ 2. shared-library
133
+ In Windows, you have to distribute libhpdf.dll with a program. In UNIX you
134
+ have to distribute libhpdf.so* with a program.
135
+
136
+ NOTE:
137
+ In the UNIX environment, there are the cases that libz.so, libpng.so.x are
138
+ necessary. About this, please refer to the documentation of PNGLIB and ZLIB.
139
+
140
+ *
141
+ * Acknowledgment
142
+ *
143
+ 1. Information-technology Promotion Agency(IPA)
144
+ The development of Haru has been supported by Exploratory Software Project
145
+ of Information-technology Promotion Agency(IPA), Japan.
146
+
147
+ 2. All users of libHaru.
148
+ We wish to thank all users of Haru.
149
+ In particular, we thank Thomas Nimstad, LeslieM, Par Hogberg, adenelson,
150
+ Riccardo Cohen, sea_sbs, Andrew.
151
+ They gave me very useful advices.
152
+
153
+ 3. Sourceforge.net
154
+ We would like to thank sourceForge.net for project hosting.
155
+
156
+ 4. Adobe Systems Inc.
157
+ We thank Adobe Systems Inc. for publishing PDF specification.
158
+
159
+
160
+ TODO - todo for libharu
161
+
162
+ * Vertical writing support of HPDF_TextRect()
163
+ * Correct a code which uses implicit type conversion and causes warnings.
164
+ * Form desiner.
165
+
@@ -0,0 +1,82 @@
1
+ #
2
+ # << Haru Free PDF Library 2.0.2 >> -- arc_demo.rb
3
+ #
4
+ # http://libharu.sourceforge.net/
5
+ #
6
+ # Copyright (c) 1999-2006 Takeshi Kanno
7
+ #
8
+ # Permission to use, copy, modify, distribute and sell this software
9
+ # and its documentation for any purpose is hereby granted without fee,
10
+ # provided that the above copyright notice appear in all copies and
11
+ # that both that copyright notice and this permission notice appear
12
+ # in supporting documentation.
13
+ # It is provided "as is" without express or implied warranty.
14
+ #
15
+ require 'rubygems'
16
+ require "hpdf"
17
+
18
+ pdf = HPDFDoc.new
19
+
20
+ # add a new page object. #
21
+ page = pdf.add_page
22
+
23
+ page.set_height(220)
24
+ page.set_width(200)
25
+
26
+ # draw pie chart
27
+ #
28
+ # A: 45% Red
29
+ # B: 25% Blue
30
+ # C: 15% green
31
+ # D: other yellow
32
+ #
33
+
34
+ # A #
35
+ page.set_rgb_fill(1.0, 0, 0)
36
+ page.move_to(100, 100)
37
+ page.line_to(100, 180)
38
+ page.arc(100, 100, 80, 0, 360 * 0.45)
39
+ pos = page.get_current_pos
40
+ page.line_to(100, 100)
41
+ page.fill
42
+
43
+ # B #
44
+ page.set_rgb_fill(0, 0, 1.0)
45
+ page.move_to(100, 100)
46
+ page.line_to(pos[0], pos[1])
47
+ page.arc(100, 100, 80, 360 * 0.45, 360 * 0.7)
48
+ pos = page.get_current_pos
49
+ page.line_to(100, 100)
50
+ page.fill
51
+
52
+ # C #
53
+ page.set_rgb_fill(0, 1.0, 0)
54
+ page.move_to(100, 100)
55
+ page.line_to(pos[0], pos[1])
56
+ page.arc(100, 100, 80, 360 * 0.7, 360 * 0.85)
57
+ pos = page.get_current_pos
58
+ page.line_to(100, 100)
59
+ page.fill
60
+
61
+ # D #
62
+ page.set_rgb_fill(1.0, 1.0, 0)
63
+ page.move_to(100, 100)
64
+ page.line_to(pos[0], pos[1])
65
+ page.arc(100, 100, 80, 360 * 0.85, 360)
66
+ pos = page.get_current_pos
67
+ page.line_to(100, 100)
68
+ page.fill
69
+
70
+ # draw center circle #
71
+ page.set_gray_stroke(0)
72
+ page.set_gray_fill(1)
73
+ page.circle(100, 100, 30)
74
+ page.fill
75
+
76
+ if $demo_output_filename
77
+ file_name= $demo_output_filename
78
+ else
79
+ file_name= $0 + ".pdf"
80
+ end
81
+
82
+ pdf.save_to_file(file_name)
@@ -0,0 +1,92 @@
1
+ #
2
+ # << Haru Free PDF Library 2.0.0 >> -- demo.rb
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
+ require 'rubygems'
15
+ require "hpdf"
16
+
17
+ if ARGV.empty?
18
+ line = 'Ruby Rocks'
19
+ else
20
+ line = ARGV.join(" ")
21
+ end
22
+
23
+ pdf = HPDFDoc.new
24
+
25
+ page = pdf.add_page
26
+
27
+ x = 578
28
+ r1 = 25
29
+
30
+ 40.step(1, -3) do |xw|
31
+ tone = 1.0 - (xw / 40.0) * 0.2
32
+
33
+ page.set_line_width(xw.to_f)
34
+ page.set_rgb_stroke(tone, 1.0, tone)
35
+ page.circle(50.0, 750.0, r1.to_f)
36
+ page.stroke
37
+ r1 += xw
38
+ end
39
+
40
+ 40.step(1, -3) do |xw|
41
+ tone = 1.0 - (xw / 40.0) * 0.2
42
+
43
+ page.set_line_width(xw.to_f)
44
+ page.set_rgb_stroke(tone, tone, 1.0)
45
+ page.move_to(x.to_f, 0.0)
46
+ page.line_to(x.to_f, 842.0)
47
+ page.stroke
48
+ x = (x - xw - 2)
49
+ end
50
+
51
+ page.set_rgb_stroke(0.0, 0.0, 0.0)
52
+ page.set_line_width(1.0)
53
+ page.rectangle(20.0, 20.0, 558.0, 802.0)
54
+ page.stroke
55
+
56
+ font = pdf.get_font("Helvetica", nil)
57
+ bbox = font.get_bbox
58
+
59
+ y = 800
60
+ 50.step(5, -5) do |size|
61
+ height = (bbox[3] - bbox[1]) / 1000 * size
62
+ y = y - height
63
+
64
+ page.begin_text
65
+ page.set_font_and_size(font, size.to_f)
66
+ page.text_out(30.0, y.to_f, line)
67
+ page.end_text
68
+ end
69
+
70
+ (0...360).step(20) do |angle|
71
+ page.set_rgb_fill(rand, rand, rand)
72
+
73
+ page.begin_text
74
+ rad = angle / 180.0 * 3.141592
75
+ page.set_font_and_size(font, 20.0)
76
+ page.set_text_matrix(Math.cos(rad),
77
+ Math.sin(rad),
78
+ -Math.sin(rad),
79
+ Math.cos(rad),
80
+ 300 + Math.cos(rad) * 40,
81
+ 300 + Math.sin(rad) * 40)
82
+ page.show_text(line)
83
+ page.end_text
84
+ end
85
+
86
+ if $demo_output_filename
87
+ file_name= $demo_output_filename
88
+ else
89
+ file_name= $0 + ".pdf"
90
+ end
91
+
92
+ pdf.save_to_file(file_name)
@@ -0,0 +1,41 @@
1
+ #
2
+ # << Haru Free PDF Library 2.0.0 >> -- encryption.rb
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
+ require 'rubygems'
14
+ require "hpdf"
15
+
16
+ pdf = HPDFDoc.new
17
+
18
+ text = "This is an encrypt document example."
19
+ owner_passwd = "owner"
20
+ user_passwd = "user"
21
+
22
+ font1 = pdf.get_font("Helvetica", nil)
23
+
24
+ page = pdf.add_page
25
+
26
+ page.set_size(HPDFDoc::HPDF_PAGE_SIZE_B5, HPDFDoc::HPDF_PAGE_LANDSCAPE)
27
+
28
+ page.begin_text
29
+ page.set_font_and_size(font1, 20)
30
+ page.text_rect(0, page.get_height / 2 + 20, page.get_width, page.get_height / 2 -10, text, HPDFDoc::HPDF_TALIGN_CENTER)
31
+ page.end_text
32
+
33
+ pdf.set_password(owner_passwd, user_passwd)
34
+
35
+ if $demo_output_filename
36
+ file_name= $demo_output_filename
37
+ else
38
+ file_name= $0 + ".pdf"
39
+ end
40
+
41
+ pdf.save_to_file(file_name)