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.
- data/History +57 -0
- data/License +25 -0
- data/README +165 -0
- data/examples/arc_demo.rb +82 -0
- data/examples/demo.rb +92 -0
- data/examples/encryption.rb +41 -0
- data/examples/ext_gstater_demo.rb +171 -0
- data/examples/font_demo.rb +67 -0
- data/examples/jpfont_demo.rb +122 -0
- data/examples/line_demo.rb +301 -0
- data/examples/slide_show_demo.rb +139 -0
- data/examples/text_demo2.rb +189 -0
- data/examples/ttfont_demo.rb +106 -0
- data/ext/extconf.rb +6 -0
- data/ext/hpdf.c +3779 -0
- data/ext/hpdf_annotation.c +415 -0
- data/ext/hpdf_array.c +344 -0
- data/ext/hpdf_binary.c +117 -0
- data/ext/hpdf_boolean.c +47 -0
- data/ext/hpdf_catalog.c +354 -0
- data/ext/hpdf_destination.c +339 -0
- data/ext/hpdf_dict.c +488 -0
- data/ext/hpdf_doc.c +2020 -0
- data/ext/hpdf_doc_png.c +137 -0
- data/ext/hpdf_encoder.c +2991 -0
- data/ext/hpdf_encoder_cns.c +36359 -0
- data/ext/hpdf_encoder_cnt.c +15307 -0
- data/ext/hpdf_encoder_jp.c +16125 -0
- data/ext/hpdf_encoder_kr.c +27978 -0
- data/ext/hpdf_encrypt.c +632 -0
- data/ext/hpdf_encryptdict.c +240 -0
- data/ext/hpdf_error.c +114 -0
- data/ext/hpdf_ext_gstate.c +150 -0
- data/ext/hpdf_font.c +229 -0
- data/ext/hpdf_font_cid.c +1030 -0
- data/ext/hpdf_font_tt.c +406 -0
- data/ext/hpdf_font_type1.c +391 -0
- data/ext/hpdf_fontdef.c +56 -0
- data/ext/hpdf_fontdef_base14.c +4506 -0
- data/ext/hpdf_fontdef_cid.c +194 -0
- data/ext/hpdf_fontdef_cns.c +471 -0
- data/ext/hpdf_fontdef_cnt.c +250 -0
- data/ext/hpdf_fontdef_jp.c +1904 -0
- data/ext/hpdf_fontdef_kr.c +1572 -0
- data/ext/hpdf_fontdef_tt.c +2230 -0
- data/ext/hpdf_fontdef_type1.c +524 -0
- data/ext/hpdf_gstate.c +119 -0
- data/ext/hpdf_image.c +568 -0
- data/ext/hpdf_image_png.c +424 -0
- data/ext/hpdf_info.c +164 -0
- data/ext/hpdf_list.c +333 -0
- data/ext/hpdf_mmgr.c +243 -0
- data/ext/hpdf_name.c +71 -0
- data/ext/hpdf_null.c +31 -0
- data/ext/hpdf_number.c +49 -0
- data/ext/hpdf_objects.c +172 -0
- data/ext/hpdf_outline.c +329 -0
- data/ext/hpdf_page_label.c +74 -0
- data/ext/hpdf_page_operator.c +2764 -0
- data/ext/hpdf_pages.c +1508 -0
- data/ext/hpdf_real.c +61 -0
- data/ext/hpdf_streams.c +1435 -0
- data/ext/hpdf_string.c +189 -0
- data/ext/hpdf_utils.c +438 -0
- data/ext/hpdf_xref.c +348 -0
- data/ext/include/hpdf.h +1227 -0
- data/ext/include/hpdf_annotation.h +74 -0
- data/ext/include/hpdf_catalog.h +81 -0
- data/ext/include/hpdf_conf.h +76 -0
- data/ext/include/hpdf_consts.h +549 -0
- data/ext/include/hpdf_destination.h +41 -0
- data/ext/include/hpdf_doc.h +159 -0
- data/ext/include/hpdf_encoder.h +311 -0
- data/ext/include/hpdf_encrypt.h +156 -0
- data/ext/include/hpdf_encryptdict.h +66 -0
- data/ext/include/hpdf_error.h +201 -0
- data/ext/include/hpdf_ext_gstate.h +38 -0
- data/ext/include/hpdf_font.h +112 -0
- data/ext/include/hpdf_fontdef.h +403 -0
- data/ext/include/hpdf_gstate.h +80 -0
- data/ext/include/hpdf_image.h +72 -0
- data/ext/include/hpdf_info.h +48 -0
- data/ext/include/hpdf_list.h +85 -0
- data/ext/include/hpdf_mmgr.h +82 -0
- data/ext/include/hpdf_objects.h +587 -0
- data/ext/include/hpdf_outline.h +74 -0
- data/ext/include/hpdf_page_label.h +35 -0
- data/ext/include/hpdf_pages.h +128 -0
- data/ext/include/hpdf_streams.h +276 -0
- data/ext/include/hpdf_types.h +488 -0
- data/ext/include/hpdf_utils.h +161 -0
- data/tests/arc_demo.rb +82 -0
- data/tests/demo.rb +91 -0
- data/tests/encryption.rb +41 -0
- data/tests/ext_gstater_demo.rb +171 -0
- data/tests/font_demo.rb +67 -0
- data/tests/line_demo.rb +301 -0
- data/tests/slide_show_demo.rb +139 -0
- data/tests/test_all_examples.rb +31 -0
- data/tests/text_demo2.rb +189 -0
- metadata +147 -0
data/ext/hpdf_binary.c
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
/*
|
2
|
+
* << Haru Free PDF Library 2.0.0 >> -- hpdf_binary.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
|
+
#include "hpdf_conf.h"
|
16
|
+
#include "hpdf_utils.h"
|
17
|
+
#include "hpdf_objects.h"
|
18
|
+
|
19
|
+
|
20
|
+
HPDF_Binary
|
21
|
+
HPDF_Binary_New (HPDF_MMgr mmgr,
|
22
|
+
HPDF_BYTE *value,
|
23
|
+
HPDF_UINT len)
|
24
|
+
{
|
25
|
+
HPDF_Binary obj;
|
26
|
+
|
27
|
+
obj = HPDF_GetMem (mmgr, sizeof(HPDF_Binary_Rec));
|
28
|
+
|
29
|
+
if (obj) {
|
30
|
+
HPDF_MemSet(&obj->header, 0, sizeof(HPDF_Obj_Header));
|
31
|
+
obj->header.obj_class = HPDF_OCLASS_BINARY;
|
32
|
+
|
33
|
+
obj->mmgr = mmgr;
|
34
|
+
obj->error = mmgr->error;
|
35
|
+
obj->value = NULL;
|
36
|
+
obj->len = 0;
|
37
|
+
if (HPDF_Binary_SetValue (obj, value, len) != HPDF_OK) {
|
38
|
+
HPDF_FreeMem (mmgr, obj);
|
39
|
+
return NULL;
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
return obj;
|
44
|
+
}
|
45
|
+
|
46
|
+
HPDF_STATUS
|
47
|
+
HPDF_Binary_Write (HPDF_Binary obj,
|
48
|
+
HPDF_Stream stream,
|
49
|
+
HPDF_Encrypt e)
|
50
|
+
{
|
51
|
+
HPDF_STATUS ret;
|
52
|
+
|
53
|
+
if (obj->len == 0)
|
54
|
+
return HPDF_Stream_WriteStr (stream, "<>");
|
55
|
+
|
56
|
+
if ((ret = HPDF_Stream_WriteChar (stream, '<')) != HPDF_OK)
|
57
|
+
return ret;
|
58
|
+
|
59
|
+
if (e)
|
60
|
+
HPDF_Encrypt_Reset (e);
|
61
|
+
|
62
|
+
if ((ret = HPDF_Stream_WriteBinary (stream, obj->value, obj->len, e)) !=
|
63
|
+
HPDF_OK)
|
64
|
+
return ret;
|
65
|
+
|
66
|
+
return HPDF_Stream_WriteChar (stream, '>');
|
67
|
+
}
|
68
|
+
|
69
|
+
|
70
|
+
HPDF_STATUS
|
71
|
+
HPDF_Binary_SetValue (HPDF_Binary obj,
|
72
|
+
HPDF_BYTE *value,
|
73
|
+
HPDF_UINT len)
|
74
|
+
{
|
75
|
+
if (len > HPDF_LIMIT_MAX_STRING_LEN)
|
76
|
+
return HPDF_SetError (obj->error, HPDF_BINARY_LENGTH_ERR, 0);
|
77
|
+
|
78
|
+
if (obj->value) {
|
79
|
+
HPDF_FreeMem (obj->mmgr, obj->value);
|
80
|
+
obj->len = 0;
|
81
|
+
}
|
82
|
+
|
83
|
+
obj->value = HPDF_GetMem (obj->mmgr, len);
|
84
|
+
if (!obj->value)
|
85
|
+
return HPDF_Error_GetCode (obj->error);
|
86
|
+
|
87
|
+
HPDF_MemCpy (obj->value, value, len);
|
88
|
+
obj->len = len;
|
89
|
+
|
90
|
+
return HPDF_OK;
|
91
|
+
}
|
92
|
+
|
93
|
+
|
94
|
+
void
|
95
|
+
HPDF_Binary_Free (HPDF_Binary obj)
|
96
|
+
{
|
97
|
+
if (!obj)
|
98
|
+
return;
|
99
|
+
|
100
|
+
if (obj->value)
|
101
|
+
HPDF_FreeMem (obj->mmgr, obj->value);
|
102
|
+
|
103
|
+
HPDF_FreeMem (obj->mmgr, obj);
|
104
|
+
}
|
105
|
+
|
106
|
+
HPDF_UINT
|
107
|
+
HPDF_Binary_GetLen (HPDF_Binary obj)
|
108
|
+
{
|
109
|
+
return obj->len;
|
110
|
+
}
|
111
|
+
|
112
|
+
HPDF_BYTE*
|
113
|
+
HPDF_Binary_GetValue (HPDF_Binary obj)
|
114
|
+
{
|
115
|
+
return obj->value;
|
116
|
+
}
|
117
|
+
|
data/ext/hpdf_boolean.c
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
/*
|
2
|
+
* << Haru Free PDF Library 2.0.0 >> -- hpdf_boolean.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
|
+
#include "hpdf_utils.h"
|
16
|
+
#include "hpdf_objects.h"
|
17
|
+
|
18
|
+
HPDF_Boolean
|
19
|
+
HPDF_Boolean_New (HPDF_MMgr mmgr,
|
20
|
+
HPDF_BOOL value)
|
21
|
+
{
|
22
|
+
HPDF_Boolean obj = HPDF_GetMem (mmgr, sizeof(HPDF_Boolean_Rec));
|
23
|
+
|
24
|
+
if (obj) {
|
25
|
+
HPDF_MemSet(&obj->header, 0, sizeof(HPDF_Obj_Header));
|
26
|
+
obj->header.obj_class = HPDF_OCLASS_BOOLEAN;
|
27
|
+
obj->value = value;
|
28
|
+
}
|
29
|
+
|
30
|
+
return obj;
|
31
|
+
}
|
32
|
+
|
33
|
+
|
34
|
+
HPDF_STATUS
|
35
|
+
HPDF_Boolean_Write (HPDF_Boolean obj,
|
36
|
+
HPDF_Stream stream)
|
37
|
+
{
|
38
|
+
HPDF_STATUS ret;
|
39
|
+
|
40
|
+
if (obj->value)
|
41
|
+
ret = HPDF_Stream_WriteStr (stream, "true");
|
42
|
+
else
|
43
|
+
ret = HPDF_Stream_WriteStr (stream, "false");
|
44
|
+
|
45
|
+
return ret;
|
46
|
+
}
|
47
|
+
|
data/ext/hpdf_catalog.c
ADDED
@@ -0,0 +1,354 @@
|
|
1
|
+
/*
|
2
|
+
* << Haru Free PDF Library 2.0.5 >> -- hpdf_catalog.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
|
+
* 2006.08.07 modified.
|
14
|
+
* 2006.09.01 added ViewerPreference functions.
|
15
|
+
*/
|
16
|
+
|
17
|
+
#include "hpdf_conf.h"
|
18
|
+
#include "hpdf_utils.h"
|
19
|
+
#include "hpdf_catalog.h"
|
20
|
+
#include "hpdf_pages.h"
|
21
|
+
|
22
|
+
static const char *HPDF_PAGE_LAYOUT_NAMES[] = {
|
23
|
+
"SinglePage",
|
24
|
+
"OneColumn",
|
25
|
+
"TwoColumnLeft",
|
26
|
+
"TwoColumnRight",
|
27
|
+
NULL
|
28
|
+
};
|
29
|
+
|
30
|
+
|
31
|
+
static const char *HPDF_PAGE_MODE_NAMES[] = {
|
32
|
+
"UseNone",
|
33
|
+
"UseOutlines",
|
34
|
+
"UseThumbs",
|
35
|
+
"FullScreen",
|
36
|
+
"UseOC",
|
37
|
+
"UseAttachments",
|
38
|
+
NULL
|
39
|
+
};
|
40
|
+
|
41
|
+
|
42
|
+
HPDF_Catalog
|
43
|
+
HPDF_Catalog_New (HPDF_MMgr mmgr,
|
44
|
+
HPDF_Xref xref)
|
45
|
+
{
|
46
|
+
HPDF_Catalog catalog;
|
47
|
+
HPDF_STATUS ret = 0;
|
48
|
+
|
49
|
+
catalog = HPDF_Dict_New (mmgr);
|
50
|
+
if (!catalog)
|
51
|
+
return NULL;
|
52
|
+
|
53
|
+
catalog->header.obj_class |= HPDF_OSUBCLASS_CATALOG;
|
54
|
+
|
55
|
+
if (HPDF_Xref_Add (xref, catalog) != HPDF_OK)
|
56
|
+
return NULL;
|
57
|
+
|
58
|
+
/* add requiered elements */
|
59
|
+
ret += HPDF_Dict_AddName (catalog, "Type", "Catalog");
|
60
|
+
ret += HPDF_Dict_Add (catalog, "Pages", HPDF_Pages_New (mmgr, NULL, xref));
|
61
|
+
|
62
|
+
if (ret != HPDF_OK)
|
63
|
+
return NULL;
|
64
|
+
|
65
|
+
return catalog;
|
66
|
+
}
|
67
|
+
|
68
|
+
|
69
|
+
HPDF_Pages
|
70
|
+
HPDF_Catalog_GetRoot (HPDF_Catalog catalog)
|
71
|
+
{
|
72
|
+
HPDF_Dict pages;
|
73
|
+
|
74
|
+
if (!catalog)
|
75
|
+
return NULL;
|
76
|
+
|
77
|
+
pages = HPDF_Dict_GetItem (catalog, "Pages", HPDF_OCLASS_DICT);
|
78
|
+
if (!pages || pages->header.obj_class != (HPDF_OSUBCLASS_PAGES |
|
79
|
+
HPDF_OCLASS_DICT))
|
80
|
+
HPDF_SetError (catalog->error, HPDF_PAGE_CANNOT_GET_ROOT_PAGES, 0);
|
81
|
+
|
82
|
+
return pages;
|
83
|
+
}
|
84
|
+
|
85
|
+
|
86
|
+
HPDF_PageLayout
|
87
|
+
HPDF_Catalog_GetPageLayout (HPDF_Catalog catalog)
|
88
|
+
{
|
89
|
+
HPDF_Name layout;
|
90
|
+
HPDF_UINT i = 0;
|
91
|
+
|
92
|
+
layout = (HPDF_Name)HPDF_Dict_GetItem (catalog, "PageLayout",
|
93
|
+
HPDF_OCLASS_NAME);
|
94
|
+
if (!layout)
|
95
|
+
return HPDF_PAGE_LAYOUT_EOF;
|
96
|
+
|
97
|
+
while (HPDF_PAGE_LAYOUT_NAMES[i]) {
|
98
|
+
if (HPDF_StrCmp (layout->value, HPDF_PAGE_LAYOUT_NAMES[i]) == 0)
|
99
|
+
return (HPDF_PageLayout)i;
|
100
|
+
i++;
|
101
|
+
}
|
102
|
+
|
103
|
+
return HPDF_PAGE_LAYOUT_EOF;
|
104
|
+
}
|
105
|
+
|
106
|
+
|
107
|
+
HPDF_STATUS
|
108
|
+
HPDF_Catalog_SetPageLayout (HPDF_Catalog catalog,
|
109
|
+
HPDF_PageLayout layout)
|
110
|
+
{
|
111
|
+
return HPDF_Dict_AddName (catalog, "PageLayout",
|
112
|
+
HPDF_PAGE_LAYOUT_NAMES[(HPDF_INT)layout]);
|
113
|
+
}
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
|
118
|
+
HPDF_PageMode
|
119
|
+
HPDF_Catalog_GetPageMode (HPDF_Catalog catalog)
|
120
|
+
{
|
121
|
+
HPDF_Name mode;
|
122
|
+
HPDF_UINT i = 0;
|
123
|
+
|
124
|
+
mode = (HPDF_Name)HPDF_Dict_GetItem (catalog, "PageMode", HPDF_OCLASS_NAME);
|
125
|
+
if (!mode)
|
126
|
+
return HPDF_PAGE_MODE_USE_NONE;
|
127
|
+
|
128
|
+
while (HPDF_PAGE_MODE_NAMES[i]) {
|
129
|
+
if (HPDF_StrCmp (mode->value, HPDF_PAGE_MODE_NAMES[i]) == 0)
|
130
|
+
return (HPDF_PageMode)i;
|
131
|
+
i++;
|
132
|
+
}
|
133
|
+
|
134
|
+
return HPDF_PAGE_MODE_USE_NONE;
|
135
|
+
}
|
136
|
+
|
137
|
+
|
138
|
+
HPDF_STATUS
|
139
|
+
HPDF_Catalog_SetPageMode (HPDF_Catalog catalog,
|
140
|
+
HPDF_PageMode mode)
|
141
|
+
{
|
142
|
+
return HPDF_Dict_AddName (catalog, "PageMode",
|
143
|
+
HPDF_PAGE_MODE_NAMES[(HPDF_INT)mode]);
|
144
|
+
}
|
145
|
+
|
146
|
+
|
147
|
+
HPDF_STATUS
|
148
|
+
HPDF_Catalog_SetOpenAction (HPDF_Catalog catalog,
|
149
|
+
HPDF_Destination open_action)
|
150
|
+
{
|
151
|
+
if (!open_action) {
|
152
|
+
HPDF_Dict_RemoveElement (catalog, "OpenAction");
|
153
|
+
return HPDF_OK;
|
154
|
+
}
|
155
|
+
|
156
|
+
return HPDF_Dict_Add (catalog, "OpenAction", open_action);
|
157
|
+
}
|
158
|
+
|
159
|
+
|
160
|
+
HPDF_BOOL
|
161
|
+
HPDF_Catalog_Validate (HPDF_Catalog catalog)
|
162
|
+
{
|
163
|
+
if (!catalog)
|
164
|
+
return HPDF_FALSE;
|
165
|
+
|
166
|
+
if (catalog->header.obj_class != (HPDF_OSUBCLASS_CATALOG |
|
167
|
+
HPDF_OCLASS_DICT)) {
|
168
|
+
HPDF_SetError (catalog->error, HPDF_INVALID_OBJECT, 0);
|
169
|
+
return HPDF_FALSE;
|
170
|
+
}
|
171
|
+
|
172
|
+
return HPDF_TRUE;
|
173
|
+
}
|
174
|
+
|
175
|
+
|
176
|
+
HPDF_STATUS
|
177
|
+
HPDF_Catalog_AddPageLabel (HPDF_Catalog catalog,
|
178
|
+
HPDF_UINT page_num,
|
179
|
+
HPDF_Dict page_label)
|
180
|
+
{
|
181
|
+
HPDF_STATUS ret;
|
182
|
+
HPDF_Array nums;
|
183
|
+
HPDF_Dict labels = HPDF_Dict_GetItem (catalog, "PageLabels",
|
184
|
+
HPDF_OCLASS_DICT);
|
185
|
+
|
186
|
+
HPDF_PTRACE ((" HPDF_Catalog_AddPageLabel\n"));
|
187
|
+
|
188
|
+
if (!labels) {
|
189
|
+
labels = HPDF_Dict_New (catalog->mmgr);
|
190
|
+
|
191
|
+
if (!labels)
|
192
|
+
return catalog->error->error_no;
|
193
|
+
|
194
|
+
if ((ret = HPDF_Dict_Add (catalog, "PageLabels", labels)) != HPDF_OK)
|
195
|
+
return ret;
|
196
|
+
}
|
197
|
+
|
198
|
+
nums = HPDF_Dict_GetItem (labels, "Nums", HPDF_OCLASS_ARRAY);
|
199
|
+
|
200
|
+
if (!nums) {
|
201
|
+
nums = HPDF_Array_New (catalog->mmgr);
|
202
|
+
|
203
|
+
if (!nums)
|
204
|
+
return catalog->error->error_no;
|
205
|
+
|
206
|
+
if ((ret = HPDF_Dict_Add (labels, "Nums", nums)) != HPDF_OK)
|
207
|
+
return ret;
|
208
|
+
}
|
209
|
+
|
210
|
+
if ((ret = HPDF_Array_AddNumber (nums, page_num)) != HPDF_OK)
|
211
|
+
return ret;
|
212
|
+
|
213
|
+
return HPDF_Array_Add (nums, page_label);
|
214
|
+
}
|
215
|
+
|
216
|
+
HPDF_STATUS
|
217
|
+
HPDF_Catalog_SetViewerPreference (HPDF_Catalog catalog,
|
218
|
+
HPDF_UINT value)
|
219
|
+
{
|
220
|
+
HPDF_STATUS ret;
|
221
|
+
HPDF_Dict preferences;
|
222
|
+
|
223
|
+
HPDF_PTRACE ((" HPDF_Catalog_SetViewerPreference\n"));
|
224
|
+
|
225
|
+
if (!value) {
|
226
|
+
ret = HPDF_Dict_RemoveElement (catalog, "ViewerPreferences");
|
227
|
+
|
228
|
+
if (ret == HPDF_DICT_ITEM_NOT_FOUND)
|
229
|
+
ret = HPDF_OK;
|
230
|
+
|
231
|
+
return ret;
|
232
|
+
}
|
233
|
+
|
234
|
+
preferences = HPDF_Dict_New (catalog->mmgr);
|
235
|
+
if (!preferences)
|
236
|
+
return catalog->error->error_no;
|
237
|
+
|
238
|
+
if ((ret = HPDF_Dict_Add (catalog, "ViewerPreferences", preferences))
|
239
|
+
!= HPDF_OK)
|
240
|
+
return ret;
|
241
|
+
|
242
|
+
/* */
|
243
|
+
|
244
|
+
if (value & HPDF_HIDE_TOOLBAR) {
|
245
|
+
if ((ret = HPDF_Dict_AddBoolean (preferences, "HideToolbar",
|
246
|
+
HPDF_TRUE)) != HPDF_OK)
|
247
|
+
return ret;
|
248
|
+
} else {
|
249
|
+
if ((ret = HPDF_Dict_RemoveElement (preferences, "HideToolbar")) !=
|
250
|
+
HPDF_OK)
|
251
|
+
if (ret != HPDF_DICT_ITEM_NOT_FOUND)
|
252
|
+
return ret;
|
253
|
+
}
|
254
|
+
|
255
|
+
if (value & HPDF_HIDE_MENUBAR) {
|
256
|
+
if ((ret = HPDF_Dict_AddBoolean (preferences, "HideMenubar",
|
257
|
+
HPDF_TRUE)) != HPDF_OK)
|
258
|
+
return ret;
|
259
|
+
} else {
|
260
|
+
if ((ret = HPDF_Dict_RemoveElement (preferences, "HideMenubar")) !=
|
261
|
+
HPDF_OK)
|
262
|
+
if (ret != HPDF_DICT_ITEM_NOT_FOUND)
|
263
|
+
return ret;
|
264
|
+
}
|
265
|
+
|
266
|
+
if (value & HPDF_HIDE_WINDOW_UI) {
|
267
|
+
if ((ret = HPDF_Dict_AddBoolean (preferences, "HideWindowUI",
|
268
|
+
HPDF_TRUE)) != HPDF_OK)
|
269
|
+
return ret;
|
270
|
+
} else {
|
271
|
+
if ((ret = HPDF_Dict_RemoveElement (preferences, "HideWindowUI")) !=
|
272
|
+
HPDF_OK)
|
273
|
+
if (ret != HPDF_DICT_ITEM_NOT_FOUND)
|
274
|
+
return ret;
|
275
|
+
}
|
276
|
+
|
277
|
+
if (value & HPDF_FIT_WINDOW) {
|
278
|
+
if ((ret = HPDF_Dict_AddBoolean (preferences, "FitWindow",
|
279
|
+
HPDF_TRUE)) != HPDF_OK)
|
280
|
+
return ret;
|
281
|
+
} else {
|
282
|
+
if ((ret = HPDF_Dict_RemoveElement (preferences, "FitWindow")) !=
|
283
|
+
HPDF_OK)
|
284
|
+
if (ret != HPDF_DICT_ITEM_NOT_FOUND)
|
285
|
+
return ret;
|
286
|
+
}
|
287
|
+
|
288
|
+
if (value & HPDF_CENTER_WINDOW) {
|
289
|
+
if ((ret = HPDF_Dict_AddBoolean (preferences, "CenterWindow",
|
290
|
+
HPDF_TRUE)) != HPDF_OK)
|
291
|
+
return ret;
|
292
|
+
} else {
|
293
|
+
if ((ret = HPDF_Dict_RemoveElement (preferences, "CenterWindow")) !=
|
294
|
+
HPDF_OK)
|
295
|
+
if (ret != HPDF_DICT_ITEM_NOT_FOUND)
|
296
|
+
return ret;
|
297
|
+
}
|
298
|
+
|
299
|
+
return HPDF_OK;
|
300
|
+
}
|
301
|
+
|
302
|
+
HPDF_UINT
|
303
|
+
HPDF_Catalog_GetViewerPreference (HPDF_Catalog catalog)
|
304
|
+
{
|
305
|
+
HPDF_Dict preferences;
|
306
|
+
HPDF_UINT value = 0;
|
307
|
+
HPDF_Boolean obj;
|
308
|
+
|
309
|
+
HPDF_PTRACE ((" HPDF_Catalog_GetViewerPreference\n"));
|
310
|
+
|
311
|
+
preferences = (HPDF_Dict)HPDF_Dict_GetItem (catalog, "ViewerPreferences",
|
312
|
+
HPDF_OCLASS_DICT);
|
313
|
+
|
314
|
+
if (!preferences)
|
315
|
+
return 0;
|
316
|
+
|
317
|
+
obj = (HPDF_Boolean)HPDF_Dict_GetItem (preferences, "HideToolbar",
|
318
|
+
HPDF_OCLASS_BOOLEAN);
|
319
|
+
if (obj) {
|
320
|
+
if (obj->value)
|
321
|
+
value += HPDF_HIDE_TOOLBAR;
|
322
|
+
}
|
323
|
+
|
324
|
+
obj = (HPDF_Boolean)HPDF_Dict_GetItem (preferences, "HideMenubar",
|
325
|
+
HPDF_OCLASS_BOOLEAN);
|
326
|
+
if (obj) {
|
327
|
+
if (obj->value)
|
328
|
+
value += HPDF_HIDE_MENUBAR;
|
329
|
+
}
|
330
|
+
|
331
|
+
obj = (HPDF_Boolean)HPDF_Dict_GetItem (preferences, "HideWindowUI",
|
332
|
+
HPDF_OCLASS_BOOLEAN);
|
333
|
+
if (obj) {
|
334
|
+
if (obj->value)
|
335
|
+
value += HPDF_HIDE_WINDOW_UI;
|
336
|
+
}
|
337
|
+
|
338
|
+
obj = (HPDF_Boolean)HPDF_Dict_GetItem (preferences, "FitWindow",
|
339
|
+
HPDF_OCLASS_BOOLEAN);
|
340
|
+
if (obj) {
|
341
|
+
if (obj->value)
|
342
|
+
value += HPDF_FIT_WINDOW;
|
343
|
+
}
|
344
|
+
|
345
|
+
obj = (HPDF_Boolean)HPDF_Dict_GetItem (preferences, "CenterWindow",
|
346
|
+
HPDF_OCLASS_BOOLEAN);
|
347
|
+
if (obj) {
|
348
|
+
if (obj->value)
|
349
|
+
value += HPDF_CENTER_WINDOW;
|
350
|
+
}
|
351
|
+
|
352
|
+
return value;
|
353
|
+
}
|
354
|
+
|