hpdf 2.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -0,0 +1,80 @@
1
+ /*
2
+ * << Haru Free PDF Library 2.0.0 >> -- hpdf_gstate.h
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
+ #ifndef _HPDF_GSTATE_H
16
+ #define _HPDF_GSTATE_H
17
+
18
+ #include "hpdf_font.h"
19
+
20
+ #ifdef __cplusplus
21
+ extern "C" {
22
+ #endif
23
+
24
+
25
+ /*----------------------------------------------------------------------------*/
26
+ /*------ graphic state stack -------------------------------------------------*/
27
+
28
+ typedef struct _HPDF_GState_Rec *HPDF_GState;
29
+
30
+ typedef struct _HPDF_GState_Rec {
31
+ HPDF_TransMatrix trans_matrix;
32
+ HPDF_REAL line_width;
33
+ HPDF_LineCap line_cap;
34
+ HPDF_LineJoin line_join;
35
+ HPDF_REAL miter_limit;
36
+ HPDF_DashMode dash_mode;
37
+ HPDF_REAL flatness;
38
+
39
+ HPDF_REAL char_space;
40
+ HPDF_REAL word_space;
41
+ HPDF_REAL h_scalling;
42
+ HPDF_REAL text_leading;
43
+ HPDF_TextRenderingMode rendering_mode;
44
+ HPDF_REAL text_rise;
45
+
46
+ HPDF_ColorSpace cs_fill;
47
+ HPDF_ColorSpace cs_stroke;
48
+ HPDF_RGBColor rgb_fill;
49
+ HPDF_RGBColor rgb_stroke;
50
+ HPDF_CMYKColor cmyk_fill;
51
+ HPDF_CMYKColor cmyk_stroke;
52
+ HPDF_REAL gray_fill;
53
+ HPDF_REAL gray_stroke;
54
+
55
+ HPDF_Font font;
56
+ HPDF_REAL font_size;
57
+ HPDF_WritingMode writing_mode;
58
+
59
+ HPDF_GState prev;
60
+ HPDF_UINT depth;
61
+ } HPDF_GState_Rec;
62
+
63
+ /*----------------------------------------------------------------------------*/
64
+ /*----------------------------------------------------------------------------*/
65
+
66
+ HPDF_GState
67
+ HPDF_GState_New (HPDF_MMgr mmgr,
68
+ HPDF_GState current);
69
+
70
+
71
+ HPDF_GState
72
+ HPDF_GState_Free (HPDF_MMgr mmgr,
73
+ HPDF_GState gstate);
74
+
75
+ #ifdef __cplusplus
76
+ }
77
+ #endif /* __cplusplus */
78
+
79
+ #endif /* _HPDF_GSTATE_H */
80
+
@@ -0,0 +1,72 @@
1
+ /*
2
+ * << Haru Free PDF Library 2.0.3 >> -- hpdf_image.h
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
+ #ifndef _HPDF_IMAGE_H
16
+ #define _HPDF_IMAGE_H
17
+
18
+ #include "hpdf_objects.h"
19
+
20
+ #ifdef __cplusplus
21
+ extern "C" {
22
+ #endif
23
+
24
+ #ifndef HPDF_NOPNGLIB
25
+
26
+ HPDF_Image
27
+ HPDF_Image_LoadPngImage (HPDF_MMgr mmgr,
28
+ HPDF_Stream png_data,
29
+ HPDF_Xref xref,
30
+ HPDF_BOOL delayed_loading);
31
+
32
+ #endif
33
+
34
+ HPDF_Image
35
+ HPDF_Image_LoadJpegImage (HPDF_MMgr mmgr,
36
+ HPDF_Stream jpeg_data,
37
+ HPDF_Xref xref);
38
+
39
+
40
+ HPDF_Image
41
+ HPDF_Image_LoadRawImage (HPDF_MMgr mmgr,
42
+ HPDF_Stream stream,
43
+ HPDF_Xref xref,
44
+ HPDF_UINT width,
45
+ HPDF_UINT height,
46
+ HPDF_ColorSpace color_space);
47
+
48
+
49
+ HPDF_Image
50
+ HPDF_Image_LoadRawImageFromMem (HPDF_MMgr mmgr,
51
+ const HPDF_BYTE *buf,
52
+ HPDF_Xref xref,
53
+ HPDF_UINT width,
54
+ HPDF_UINT height,
55
+ HPDF_ColorSpace color_space,
56
+ HPDF_UINT bits_per_component);
57
+
58
+
59
+ HPDF_BOOL
60
+ HPDF_Image_Validate (HPDF_Image image);
61
+
62
+
63
+ HPDF_STATUS
64
+ HPDF_Image_SetMask (HPDF_Image image,
65
+ HPDF_BOOL mask);
66
+
67
+ #ifdef __cplusplus
68
+ }
69
+ #endif /* __cplusplus */
70
+
71
+ #endif /* _HPDF_XOBJECTS_H */
72
+
@@ -0,0 +1,48 @@
1
+ /*
2
+ * << Haru Free PDF Library 2.0.0 >> -- hpdf_info.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
+
16
+ #ifndef _HPDF_INFO_H
17
+ #define _HPDF_INFO_H
18
+
19
+ #include "hpdf_objects.h"
20
+
21
+ #ifdef __cplusplus
22
+ extern "C" {
23
+ #endif
24
+
25
+
26
+ HPDF_STATUS
27
+ HPDF_Info_SetInfoAttr (HPDF_Dict info,
28
+ HPDF_InfoType type,
29
+ const char *value,
30
+ HPDF_Encoder encoder);
31
+
32
+
33
+ const char*
34
+ HPDF_Info_GetInfoAttr (HPDF_Dict info,
35
+ HPDF_InfoType type);
36
+
37
+
38
+ HPDF_STATUS
39
+ HPDF_Info_SetInfoDateAttr (HPDF_Dict info,
40
+ HPDF_InfoType type,
41
+ HPDF_Date value);
42
+
43
+ #ifdef __cplusplus
44
+ }
45
+ #endif /* __cplusplus */
46
+
47
+ #endif /* _HPDF_INFO_H */
48
+
@@ -0,0 +1,85 @@
1
+ /*
2
+ * << Haru Free PDF Library 2.0.0 >> -- hpdf_list.h
3
+ *
4
+ * Copyright (c) 1999-2005 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
+ #ifndef _HPDF_LIST_H
16
+ #define _HPDF_LIST_H
17
+
18
+ #include "hpdf_error.h"
19
+ #include "hpdf_mmgr.h"
20
+
21
+ #ifdef __cplusplus
22
+ extern "C" {
23
+ #endif
24
+
25
+ typedef struct _HPDF_List_Rec *HPDF_List;
26
+
27
+ typedef struct _HPDF_List_Rec {
28
+ HPDF_MMgr mmgr;
29
+ HPDF_Error error;
30
+ HPDF_UINT block_siz;
31
+ HPDF_UINT items_per_block;
32
+ HPDF_UINT count;
33
+ void **obj;
34
+ } HPDF_List_Rec;
35
+
36
+
37
+ HPDF_List
38
+ HPDF_List_New (HPDF_MMgr mmgr,
39
+ HPDF_UINT items_per_block);
40
+
41
+
42
+ void
43
+ HPDF_List_Free (HPDF_List list);
44
+
45
+
46
+ HPDF_STATUS
47
+ HPDF_List_Add (HPDF_List list,
48
+ void *item);
49
+
50
+
51
+ HPDF_STATUS
52
+ HPDF_List_Insert (HPDF_List list,
53
+ void *target,
54
+ void *item);
55
+
56
+
57
+ HPDF_STATUS
58
+ HPDF_List_Remove (HPDF_List list,
59
+ void *item);
60
+
61
+
62
+ void*
63
+ HPDF_List_RemoveByIndex (HPDF_List list,
64
+ HPDF_UINT index);
65
+
66
+
67
+ void*
68
+ HPDF_List_ItemAt (HPDF_List list,
69
+ HPDF_UINT index);
70
+
71
+
72
+ HPDF_INT32
73
+ HPDF_List_Find (HPDF_List list,
74
+ void *item);
75
+
76
+
77
+ void
78
+ HPDF_List_Clear (HPDF_List list);
79
+
80
+ #ifdef __cplusplus
81
+ }
82
+ #endif /* __cplusplus */
83
+
84
+ #endif /* _HPDF_LIST_H */
85
+
@@ -0,0 +1,82 @@
1
+ /*
2
+ * << Haru Free PDF Library 2.0.0 >> -- hpdf_mmgr.h
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
+ #ifndef _HPDF_MMGR_H
16
+ #define _HPDF_MMGR_H
17
+
18
+ #include "hpdf_types.h"
19
+ #include "hpdf_error.h"
20
+
21
+ #ifdef __cplusplus
22
+ extern "C" {
23
+ #endif
24
+
25
+ typedef struct _HPDF_MPool_Node_Rec *HPDF_MPool_Node;
26
+
27
+ typedef struct _HPDF_MPool_Node_Rec {
28
+ HPDF_BYTE* buf;
29
+ HPDF_UINT size;
30
+ HPDF_UINT used_size;
31
+ HPDF_MPool_Node next_node;
32
+ } HPDF_MPool_Node_Rec;
33
+
34
+
35
+ typedef struct _HPDF_MMgr_Rec *HPDF_MMgr;
36
+
37
+ typedef struct _HPDF_MMgr_Rec {
38
+ HPDF_Error error;
39
+ HPDF_Alloc_Func alloc_fn;
40
+ HPDF_Free_Func free_fn;
41
+ HPDF_MPool_Node mpool;
42
+ HPDF_UINT buf_size;
43
+
44
+ #ifdef HPDF_MEM_DEBUG
45
+ HPDF_UINT alloc_cnt;
46
+ HPDF_UINT free_cnt;
47
+ #endif
48
+ } HPDF_MMgr_Rec;
49
+
50
+
51
+ /* HPDF_mpool_new
52
+ *
53
+ * create new HPDF_mpool object. when memory allocation goes wrong,
54
+ * it returns NULL and error handling function will be called.
55
+ * if buf_size is non-zero, mmgr is configured to be using memory-pool
56
+ */
57
+ HPDF_MMgr
58
+ HPDF_MMgr_New (HPDF_Error error,
59
+ HPDF_UINT buf_size,
60
+ HPDF_Alloc_Func alloc_fn,
61
+ HPDF_Free_Func free_fn);
62
+
63
+
64
+ void
65
+ HPDF_MMgr_Free (HPDF_MMgr mmgr);
66
+
67
+
68
+ void*
69
+ HPDF_GetMem (HPDF_MMgr mmgr,
70
+ HPDF_UINT size);
71
+
72
+
73
+ void
74
+ HPDF_FreeMem (HPDF_MMgr mmgr,
75
+ void *aptr);
76
+
77
+ #ifdef __cplusplus
78
+ }
79
+ #endif /* __cplusplus */
80
+
81
+ #endif /* _HPDF_MMGR_H */
82
+
@@ -0,0 +1,587 @@
1
+ /*
2
+ * << Haru Free PDF Library 2.0.5 >> -- hpdf_objects.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
+ #ifndef _HPDF_OBJECTS_H
16
+ #define _HPDF_OBJECTS_H
17
+
18
+ #include "hpdf_encoder.h"
19
+
20
+ #ifdef __cplusplus
21
+ extern "C" {
22
+ #endif
23
+
24
+
25
+ /* if HPDF_OTYPE_DIRECT bit is set, the object owned by other container
26
+ * object. if HPDF_OTYPE_INDIRECT bit is set, the object managed by xref.
27
+ */
28
+
29
+ #define HPDF_OTYPE_NONE 0x00000000
30
+ #define HPDF_OTYPE_DIRECT 0x80000000
31
+ #define HPDF_OTYPE_INDIRECT 0x40000000
32
+ #define HPDF_OTYPE_ANY (HPDF_OTYPE_DIRECT | HPDF_OTYPE_INDIRECT)
33
+ #define HPDF_OTYPE_HIDDEN 0x10000000
34
+
35
+ #define HPDF_OCLASS_UNKNOWN 0x0001
36
+ #define HPDF_OCLASS_NULL 0x0002
37
+ #define HPDF_OCLASS_BOOLEAN 0x0003
38
+ #define HPDF_OCLASS_NUMBER 0x0004
39
+ #define HPDF_OCLASS_REAL 0x0005
40
+ #define HPDF_OCLASS_NAME 0x0006
41
+ #define HPDF_OCLASS_STRING 0x0007
42
+ #define HPDF_OCLASS_BINARY 0x0008
43
+ #define HPDF_OCLASS_ARRAY 0x0010
44
+ #define HPDF_OCLASS_DICT 0x0011
45
+ #define HPDF_OCLASS_PROXY 0x0012
46
+ #define HPDF_OCLASS_ANY 0x00FF
47
+
48
+ #define HPDF_OSUBCLASS_FONT 0x0100
49
+ #define HPDF_OSUBCLASS_CATALOG 0x0200
50
+ #define HPDF_OSUBCLASS_PAGES 0x0300
51
+ #define HPDF_OSUBCLASS_PAGE 0x0400
52
+ #define HPDF_OSUBCLASS_XOBJECT 0x0500
53
+ #define HPDF_OSUBCLASS_OUTLINE 0x0600
54
+ #define HPDF_OSUBCLASS_DESTINATION 0x0700
55
+ #define HPDF_OSUBCLASS_ANNOTATION 0x0800
56
+ #define HPDF_OSUBCLASS_ENCRYPT 0x0900
57
+ #define HPDF_OSUBCLASS_EXT_GSTATE 0x0A00
58
+ #define HPDF_OSUBCLASS_EXT_GSTATE_R 0x0B00 /* read only object */
59
+
60
+
61
+
62
+ /*----------------------------------------------------------------------------*/
63
+ /*------ Values related xref -------------------------------------------------*/
64
+
65
+ #define HPDF_FREE_ENTRY 'f'
66
+ #define HPDF_IN_USE_ENTRY 'n'
67
+
68
+
69
+ /*
70
+ * structure of Object-ID
71
+ *
72
+ * 1 direct-object
73
+ * 2 indirect-object
74
+ * 3 reserved
75
+ * 4 shadow-object
76
+ * 5-8 reserved
77
+ * 9-32 object-id�i0-8388607�j
78
+ *
79
+ * the real Object-ID is described "obj_id & 0x00FFFFFF"
80
+ */
81
+
82
+ typedef struct _HPDF_Obj_Header {
83
+ HPDF_UINT32 obj_id;
84
+ HPDF_UINT16 gen_no;
85
+ HPDF_UINT16 obj_class;
86
+ } HPDF_Obj_Header;
87
+
88
+
89
+
90
+ HPDF_STATUS
91
+ HPDF_Obj_WriteValue (void *obj,
92
+ HPDF_Stream stream,
93
+ HPDF_Encrypt e);
94
+
95
+
96
+ HPDF_STATUS
97
+ HPDF_Obj_Write (void *obj,
98
+ HPDF_Stream stream,
99
+ HPDF_Encrypt e);
100
+
101
+
102
+ void
103
+ HPDF_Obj_Free (HPDF_MMgr mmgr,
104
+ void *obj);
105
+
106
+
107
+ void
108
+ HPDF_Obj_ForceFree (HPDF_MMgr mmgr,
109
+ void *obj);
110
+
111
+
112
+ /*---------------------------------------------------------------------------*/
113
+ /*----- HPDF_Null -----------------------------------------------------------*/
114
+
115
+ typedef struct _HPDF_Null_Rec *HPDF_Null;
116
+
117
+ typedef struct _HPDF_Null_Rec {
118
+ HPDF_Obj_Header header;
119
+ } HPDF_Null_Rec;
120
+
121
+
122
+
123
+ HPDF_Null
124
+ HPDF_Null_New (HPDF_MMgr mmgr);
125
+
126
+
127
+ /*---------------------------------------------------------------------------*/
128
+ /*----- HPDF_Boolean --------------------------------------------------------*/
129
+
130
+ typedef struct _HPDF_Boolean_Rec *HPDF_Boolean;
131
+
132
+ typedef struct _HPDF_Boolean_Rec {
133
+ HPDF_Obj_Header header;
134
+ HPDF_BOOL value;
135
+ } HPDF_Boolean_Rec;
136
+
137
+
138
+
139
+ HPDF_Boolean
140
+ HPDF_Boolean_New (HPDF_MMgr mmgr,
141
+ HPDF_BOOL value);
142
+
143
+
144
+ HPDF_STATUS
145
+ HPDF_Boolean_Write (HPDF_Boolean obj,
146
+ HPDF_Stream stream);
147
+
148
+
149
+ /*---------------------------------------------------------------------------*/
150
+ /*----- HPDF_Number ---------------------------------------------------------*/
151
+
152
+ typedef struct _HPDF_Number_Rec *HPDF_Number;
153
+
154
+ typedef struct _HPDF_Number_Rec {
155
+ HPDF_Obj_Header header;
156
+ HPDF_INT32 value;
157
+ } HPDF_Number_Rec;
158
+
159
+
160
+
161
+ HPDF_Number
162
+ HPDF_Number_New (HPDF_MMgr mmgr,
163
+ HPDF_INT32 value);
164
+
165
+
166
+ void
167
+ HPDF_Number_SetValue (HPDF_Number obj,
168
+ HPDF_INT32 value);
169
+
170
+
171
+ HPDF_STATUS
172
+ HPDF_Number_Write (HPDF_Number obj,
173
+ HPDF_Stream stream);
174
+
175
+
176
+ /*---------------------------------------------------------------------------*/
177
+ /*----- HPDF_Real -----------------------------------------------------------*/
178
+
179
+ typedef struct _HPDF_Real_Rec *HPDF_Real;
180
+
181
+ typedef struct _HPDF_Real_Rec {
182
+ HPDF_Obj_Header header;
183
+ HPDF_Error error;
184
+ HPDF_REAL value;
185
+ } HPDF_Real_Rec;
186
+
187
+
188
+
189
+ HPDF_Real
190
+ HPDF_Real_New (HPDF_MMgr mmgr,
191
+ HPDF_REAL value);
192
+
193
+
194
+ HPDF_STATUS
195
+ HPDF_Real_Write (HPDF_Real obj,
196
+ HPDF_Stream stream);
197
+
198
+
199
+ HPDF_STATUS
200
+ HPDF_Real_SetValue (HPDF_Real obj,
201
+ HPDF_REAL value);
202
+
203
+
204
+ /*---------------------------------------------------------------------------*/
205
+ /*----- HPDF_Name -----------------------------------------------------------*/
206
+
207
+ typedef struct _HPDF_Name_Rec *HPDF_Name;
208
+
209
+ typedef struct _HPDF_Name_Rec {
210
+ HPDF_Obj_Header header;
211
+ HPDF_Error error;
212
+ char value[HPDF_LIMIT_MAX_NAME_LEN + 1];
213
+ } HPDF_Name_Rec;
214
+
215
+
216
+
217
+ HPDF_Name
218
+ HPDF_Name_New (HPDF_MMgr mmgr,
219
+ const char *value);
220
+
221
+
222
+ HPDF_STATUS
223
+ HPDF_Name_SetValue (HPDF_Name obj,
224
+ const char *value);
225
+
226
+
227
+ HPDF_STATUS
228
+ HPDF_Name_Write (HPDF_Name obj,
229
+ HPDF_Stream stream);
230
+
231
+ const char*
232
+ HPDF_Name_GetValue (HPDF_Name obj);
233
+
234
+
235
+ /*---------------------------------------------------------------------------*/
236
+ /*----- HPDF_String ---------------------------------------------------------*/
237
+
238
+ typedef struct _HPDF_String_Rec *HPDF_String;
239
+
240
+ typedef struct _HPDF_String_Rec {
241
+ HPDF_Obj_Header header;
242
+ HPDF_MMgr mmgr;
243
+ HPDF_Error error;
244
+ HPDF_Encoder encoder;
245
+ HPDF_BYTE *value;
246
+ HPDF_UINT len;
247
+ } HPDF_String_Rec;
248
+
249
+
250
+
251
+ HPDF_String
252
+ HPDF_String_New (HPDF_MMgr mmgr,
253
+ const char *value,
254
+ HPDF_Encoder encoder);
255
+
256
+
257
+ HPDF_STATUS
258
+ HPDF_String_SetValue (HPDF_String obj,
259
+ const char *value);
260
+
261
+
262
+ void
263
+ HPDF_String_Free (HPDF_String obj);
264
+
265
+
266
+ HPDF_STATUS
267
+ HPDF_String_Write (HPDF_String obj,
268
+ HPDF_Stream stream,
269
+ HPDF_Encrypt e);
270
+
271
+
272
+ HPDF_STATUS
273
+ HPDF_String_SetValue (HPDF_String obj,
274
+ const char *value);
275
+
276
+
277
+ /*---------------------------------------------------------------------------*/
278
+ /*----- HPDF_Binary ---------------------------------------------------------*/
279
+
280
+ typedef struct _HPDF_Binary_Rec *HPDF_Binary;
281
+
282
+ typedef struct _HPDF_Binary_Rec {
283
+ HPDF_Obj_Header header;
284
+ HPDF_MMgr mmgr;
285
+ HPDF_Error error;
286
+ HPDF_BYTE *value;
287
+ HPDF_UINT len;
288
+ } HPDF_Binary_Rec;
289
+
290
+
291
+
292
+ HPDF_Binary
293
+ HPDF_Binary_New (HPDF_MMgr mmgr,
294
+ HPDF_BYTE *value,
295
+ HPDF_UINT len);
296
+
297
+
298
+ HPDF_STATUS
299
+ HPDF_Binary_SetValue (HPDF_Binary obj,
300
+ HPDF_BYTE *value,
301
+ HPDF_UINT len);
302
+
303
+
304
+ HPDF_BYTE*
305
+ HPDF_Binary_GetValue (HPDF_Binary obj);
306
+
307
+
308
+ void
309
+ HPDF_Binary_Free (HPDF_Binary obj);
310
+
311
+
312
+ HPDF_STATUS
313
+ HPDF_Binary_Write (HPDF_Binary obj,
314
+ HPDF_Stream stream,
315
+ HPDF_Encrypt e);
316
+
317
+
318
+ HPDF_UINT
319
+ HPDF_Binary_GetLen (HPDF_Binary obj);
320
+
321
+
322
+ /*---------------------------------------------------------------------------*/
323
+ /*----- HPDF_Array ----------------------------------------------------------*/
324
+
325
+ typedef struct _HPDF_Array_Rec *HPDF_Array;
326
+
327
+ typedef struct _HPDF_Array_Rec {
328
+ HPDF_Obj_Header header;
329
+ HPDF_MMgr mmgr;
330
+ HPDF_Error error;
331
+ HPDF_List list;
332
+ } HPDF_Array_Rec;
333
+
334
+
335
+ HPDF_Array
336
+ HPDF_Array_New (HPDF_MMgr mmgr);
337
+
338
+
339
+ HPDF_Array
340
+ HPDF_Box_Array_New (HPDF_MMgr mmgr,
341
+ HPDF_Box box);
342
+
343
+
344
+ void
345
+ HPDF_Array_Free (HPDF_Array array);
346
+
347
+
348
+ HPDF_STATUS
349
+ HPDF_Array_Write (HPDF_Array array,
350
+ HPDF_Stream stream,
351
+ HPDF_Encrypt e);
352
+
353
+
354
+ HPDF_STATUS
355
+ HPDF_Array_Add (HPDF_Array array,
356
+ void *obj);
357
+
358
+
359
+ HPDF_STATUS
360
+ HPDF_Array_Insert (HPDF_Array array,
361
+ void *target,
362
+ void *obj);
363
+
364
+
365
+ void*
366
+ HPDF_Array_GetItem (HPDF_Array array,
367
+ HPDF_UINT index,
368
+ HPDF_UINT16 obj_class);
369
+
370
+
371
+ HPDF_STATUS
372
+ HPDF_Array_AddNumber (HPDF_Array array,
373
+ HPDF_INT32 value);
374
+
375
+
376
+ HPDF_STATUS
377
+ HPDF_Array_AddReal (HPDF_Array array,
378
+ HPDF_REAL value);
379
+
380
+
381
+ HPDF_STATUS
382
+ HPDF_Array_AddName (HPDF_Array array,
383
+ const char *value);
384
+
385
+ void
386
+ HPDF_Array_Clear (HPDF_Array array);
387
+
388
+
389
+ /*---------------------------------------------------------------------------*/
390
+ /*----- HPDF_Dict -----------------------------------------------------------*/
391
+
392
+ typedef struct _HPDF_Xref_Rec *HPDF_Xref;
393
+
394
+ typedef struct _HPDF_Dict_Rec *HPDF_Dict;
395
+
396
+ typedef void
397
+ (*HPDF_Dict_FreeFunc) (HPDF_Dict obj);
398
+
399
+ typedef HPDF_STATUS
400
+ (*HPDF_Dict_BeforeWriteFunc) (HPDF_Dict obj);
401
+
402
+ typedef HPDF_STATUS
403
+ (*HPDF_Dict_AfterWriteFunc) (HPDF_Dict obj);
404
+
405
+ typedef HPDF_STATUS
406
+ (*HPDF_Dict_OnWriteFunc) (HPDF_Dict obj,
407
+ HPDF_Stream stream);
408
+
409
+ typedef struct _HPDF_Dict_Rec {
410
+ HPDF_Obj_Header header;
411
+ HPDF_MMgr mmgr;
412
+ HPDF_Error error;
413
+ HPDF_List list;
414
+ HPDF_Dict_BeforeWriteFunc before_write_fn;
415
+ HPDF_Dict_OnWriteFunc write_fn;
416
+ HPDF_Dict_AfterWriteFunc after_write_fn;
417
+ HPDF_Dict_FreeFunc free_fn;
418
+ HPDF_Stream stream;
419
+ HPDF_UINT filter;
420
+ void *attr;
421
+ } HPDF_Dict_Rec;
422
+
423
+
424
+ typedef struct _HPDF_DictElement_Rec *HPDF_DictElement;
425
+
426
+ typedef struct _HPDF_DictElement_Rec {
427
+ char key[HPDF_LIMIT_MAX_NAME_LEN + 1];
428
+ void *value;
429
+ } HPDF_DictElement_Rec;
430
+
431
+
432
+ HPDF_Dict
433
+ HPDF_Dict_New (HPDF_MMgr mmgr);
434
+
435
+
436
+ HPDF_Dict
437
+ HPDF_DictStream_New (HPDF_MMgr mmgr,
438
+ HPDF_Xref xref);
439
+
440
+
441
+ void
442
+ HPDF_Dict_Free (HPDF_Dict dict);
443
+
444
+
445
+ HPDF_STATUS
446
+ HPDF_Dict_Write (HPDF_Dict dict,
447
+ HPDF_Stream stream,
448
+ HPDF_Encrypt e);
449
+
450
+
451
+ const char*
452
+ HPDF_Dict_GetKeyByObj (HPDF_Dict dict,
453
+ void *obj);
454
+
455
+
456
+ HPDF_STATUS
457
+ HPDF_Dict_Add (HPDF_Dict dict,
458
+ const char *key,
459
+ void *obj);
460
+
461
+
462
+ void*
463
+ HPDF_Dict_GetItem (HPDF_Dict dict,
464
+ const char *key,
465
+ HPDF_UINT16 obj_class);
466
+
467
+
468
+ HPDF_STATUS
469
+ HPDF_Dict_AddName (HPDF_Dict dict,
470
+ const char *key,
471
+ const char *value);
472
+
473
+
474
+ HPDF_STATUS
475
+ HPDF_Dict_AddNumber (HPDF_Dict dict,
476
+ const char *key,
477
+ HPDF_INT32 value);
478
+
479
+
480
+ HPDF_STATUS
481
+ HPDF_Dict_AddReal (HPDF_Dict dict,
482
+ const char *key,
483
+ HPDF_REAL value);
484
+
485
+
486
+ HPDF_STATUS
487
+ HPDF_Dict_AddBoolean (HPDF_Dict dict,
488
+ const char *key,
489
+ HPDF_BOOL value);
490
+
491
+
492
+ HPDF_STATUS
493
+ HPDF_Dict_RemoveElement (HPDF_Dict dict,
494
+ const char *key);
495
+
496
+
497
+ /*---------------------------------------------------------------------------*/
498
+ /*----- HPDF_ProxyObject ----------------------------------------------------*/
499
+
500
+
501
+
502
+ typedef struct _HPDF_Proxy_Rec *HPDF_Proxy;
503
+
504
+ typedef struct _HPDF_Proxy_Rec {
505
+ HPDF_Obj_Header header;
506
+ void *obj;
507
+ } HPDF_Proxy_Rec;
508
+
509
+
510
+ HPDF_Proxy
511
+ HPDF_Proxy_New (HPDF_MMgr mmgr,
512
+ void *obj);
513
+
514
+
515
+
516
+ /*---------------------------------------------------------------------------*/
517
+ /*----- HPDF_Xref -----------------------------------------------------------*/
518
+
519
+ typedef struct _HPDF_XrefEntry_Rec *HPDF_XrefEntry;
520
+
521
+ typedef struct _HPDF_XrefEntry_Rec {
522
+ char entry_typ;
523
+ HPDF_UINT byte_offset;
524
+ HPDF_UINT16 gen_no;
525
+ void* obj;
526
+ } HPDF_XrefEntry_Rec;
527
+
528
+
529
+ typedef struct _HPDF_Xref_Rec {
530
+ HPDF_MMgr mmgr;
531
+ HPDF_Error error;
532
+ HPDF_UINT32 start_offset;
533
+ HPDF_List entries;
534
+ HPDF_UINT addr;
535
+ HPDF_Xref prev;
536
+ HPDF_Dict trailer;
537
+ } HPDF_Xref_Rec;
538
+
539
+
540
+ HPDF_Xref
541
+ HPDF_Xref_New (HPDF_MMgr mmgr,
542
+ HPDF_UINT32 offset);
543
+
544
+
545
+ void
546
+ HPDF_Xref_Free (HPDF_Xref xref);
547
+
548
+
549
+ HPDF_STATUS
550
+ HPDF_Xref_Add (HPDF_Xref xref,
551
+ void *obj);
552
+
553
+
554
+ HPDF_XrefEntry
555
+ HPDF_Xref_GetEntry (HPDF_Xref xref,
556
+ HPDF_UINT index);
557
+
558
+
559
+ HPDF_STATUS
560
+ HPDF_Xref_WriteToStream (HPDF_Xref xref,
561
+ HPDF_Stream stream,
562
+ HPDF_Encrypt e);
563
+
564
+
565
+ HPDF_XrefEntry
566
+ HPDF_Xref_GetEntryByObjectId (HPDF_Xref xref,
567
+ HPDF_UINT obj_id);
568
+
569
+
570
+
571
+ typedef HPDF_Dict HPDF_Pages;
572
+ typedef HPDF_Dict HPDF_Page;
573
+ typedef HPDF_Dict HPDF_Annotation;
574
+ typedef HPDF_Dict HPDF_XObject;
575
+ typedef HPDF_Dict HPDF_Image;
576
+ typedef HPDF_Dict HPDF_Outline;
577
+ typedef HPDF_Dict HPDF_EncryptDict;
578
+ typedef HPDF_Dict HPDF_Action;
579
+ typedef HPDF_Dict HPDF_ExtGState;
580
+ typedef HPDF_Array HPDF_Destination;
581
+
582
+ #ifdef __cplusplus
583
+ }
584
+ #endif /* __cplusplus */
585
+
586
+ #endif /* _HPDF_OBJECTS_H */
587
+