1/*
2 * << Haru Free PDF Library >> -- hpdf_doc.h
3 *
4 * URL: http://libharu.org
5 *
6 * Copyright (c) 1999-2006 Takeshi Kanno <takeshi_kanno@est.hi-ho.ne.jp>
7 * Copyright (c) 2007-2009 Antony Dovgal <tony@daylessday.org>
8 *
9 * Permission to use, copy, modify, distribute and sell this software
10 * and its documentation for any purpose is hereby granted without fee,
11 * provided that the above copyright notice appear in all copies and
12 * that both that copyright notice and this permission notice appear
13 * in supporting documentation.
14 * It is provided "as is" without express or implied warranty.
15 *
16 */
17
18
19#ifndef _HPDF_DOC_H
20#define _HPDF_DOC_H
21
22#define HPDF_SIG_BYTES 0x41504446L
23
24#include "hpdf_catalog.h"
25#include "hpdf_image.h"
26#include "hpdf_pages.h"
27#include "hpdf_outline.h"
28#include "hpdf_ext_gstate.h"
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34#define HPDF_VER_DEFAULT HPDF_VER_12
35
36typedef struct _HPDF_Doc_Rec {
37 HPDF_UINT32 sig_bytes;
38 HPDF_PDFVer pdf_version;
39
40 HPDF_MMgr mmgr;
41 HPDF_Catalog catalog;
42 HPDF_Outline outlines;
43 HPDF_Xref xref;
44 HPDF_Pages root_pages;
45 HPDF_Pages cur_pages;
46 HPDF_Page cur_page;
47 HPDF_List page_list;
48 HPDF_Error_Rec error;
49 HPDF_Dict info;
50 HPDF_Dict trailer;
51
52 HPDF_List font_mgr;
53 HPDF_BYTE ttfont_tag[6];
54
55 /* list for loaded fontdefs */
56 HPDF_List fontdef_list;
57
58 /* list for loaded encodings */
59 HPDF_List encoder_list;
60
61 HPDF_Encoder cur_encoder;
62
63 /* default compression mode */
64 HPDF_BOOL compression_mode;
65
66 HPDF_BOOL encrypt_on;
67 HPDF_EncryptDict encrypt_dict;
68
69 HPDF_Encoder def_encoder;
70
71 HPDF_UINT page_per_pages;
72 HPDF_UINT cur_page_num;
73
74 /* buffer for saving into memory stream */
75 HPDF_Stream stream;
76} HPDF_Doc_Rec;
77
78typedef struct _HPDF_Doc_Rec *HPDF_Doc;
79
80
81HPDF_Encoder
82HPDF_Doc_FindEncoder (HPDF_Doc pdf,
83 const char *encoding_name);
84
85
86HPDF_FontDef
87HPDF_Doc_FindFontDef (HPDF_Doc pdf,
88 const char *font_name);
89
90
91HPDF_Font
92HPDF_Doc_FindFont (HPDF_Doc pdf,
93 const char *font_name,
94 const char *encoding_name);
95
96
97HPDF_BOOL
98HPDF_Doc_Validate (HPDF_Doc pdf);
99
100
101/*----- page handling -------------------------------------------------------*/
102
103HPDF_Pages
104HPDF_Doc_GetCurrentPages (HPDF_Doc pdf);
105
106
107HPDF_Pages
108HPDF_Doc_AddPagesTo (HPDF_Doc pdf,
109 HPDF_Pages parent);
110
111
112HPDF_STATUS
113HPDF_Doc_SetCurrentPages (HPDF_Doc pdf,
114 HPDF_Pages pages);
115
116
117HPDF_STATUS
118HPDF_Doc_SetCurrentPage (HPDF_Doc pdf,
119 HPDF_Page page);
120
121
122
123
124/*----- font handling -------------------------------------------------------*/
125
126HPDF_FontDef
127HPDF_GetFontDef (HPDF_Doc pdf,
128 const char *font_name);
129
130
131HPDF_STATUS
132HPDF_Doc_RegisterFontDef (HPDF_Doc pdf,
133 HPDF_FontDef fontdef);
134
135
136/*----- encoding handling ---------------------------------------------------*/
137
138HPDF_STATUS
139HPDF_Doc_RegisterEncoder (HPDF_Doc pdf,
140 HPDF_Encoder encoder);
141
142
143
144/*----- encryptio------------------------------------------------------------*/
145
146HPDF_STATUS
147HPDF_Doc_SetEncryptOn (HPDF_Doc pdf);
148
149
150HPDF_STATUS
151HPDF_Doc_SetEncryptOff (HPDF_Doc pdf);
152
153
154HPDF_STATUS
155HPDF_Doc_PrepareEncryption (HPDF_Doc pdf);
156
157#ifdef __cplusplus
158}
159#endif /* __cplusplus */
160
161#endif /* _HPDF_DOC_H */
162
163