1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
/*
This is dvipdfmx, an eXtended version of dvipdfm by Mark A. Wicks.
Copyright (C) 2007-2012 by Jin-Hwan Cho and Shunsaku Hirata,
the dvipdfmx project team.
Copyright (C) 1998, 1999 by Mark A. Wicks <mwicks@kettering.edu>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
#ifndef _PDFDOC_H_
#define _PDFDOC_H_
#include "pdfobj.h"
#include "pdfdev.h"
#define PDF_DOC_GRABBING_NEST_MAX 4
extern void pdf_doc_set_verbose (void);
#ifdef XETEX
extern void pdf_open_document (const char *filename,
int do_encryption,
double media_width, double media_height,
double annot_grow_amount, int bookmark_open_depth);
#else
extern void pdf_open_document (const char *filename,
int do_encryption,
double media_width, double media_height,
double annot_grow_amount, int bookmark_open_depth,
int check_gotos);
#endif
extern void pdf_close_document (void);
/* PDF document metadata */
extern void pdf_doc_set_creator (const char *creator);
/* They just return PDF dictionary object.
* Callers are completely responsible for doing right thing...
*/
extern pdf_obj *pdf_doc_get_dictionary (const char *category);
extern pdf_obj *pdf_doc_get_reference (const char *category);
#define pdf_doc_page_tree() pdf_doc_get_dictionary("Pages")
#define pdf_doc_catalog() pdf_doc_get_dictionary("Catalog")
#define pdf_doc_docinfo() pdf_doc_get_dictionary("Info")
#define pdf_doc_names() pdf_doc_get_dictionary("Names")
#define pdf_doc_this_page() pdf_doc_get_dictionary("@THISPAGE")
#ifndef XETEX
extern pdf_obj *pdf_doc_get_page (pdf_file *pf, long page_no, long *count_p,
pdf_rect *bbox, pdf_obj **resources_p);
#endif
extern long pdf_doc_current_page_number (void);
extern pdf_obj *pdf_doc_current_page_resources (void);
extern pdf_obj *pdf_doc_ref_page (unsigned long page_no);
#define pdf_doc_this_page_ref() pdf_doc_get_reference("@THISPAGE")
#define pdf_doc_next_page_ref() pdf_doc_get_reference("@NEXTPAGE")
#define pdf_doc_prev_page_ref() pdf_doc_get_reference("@PREVPAGE")
/* Not really managing tree...
* There should be something for number tree.
*/
extern int pdf_doc_add_names (const char *category,
const void *key, int keylen, pdf_obj *value);
extern void pdf_doc_set_bop_content (const char *str, unsigned length);
extern void pdf_doc_set_eop_content (const char *str, unsigned length);
/* Page */
extern void pdf_doc_begin_page (double scale, double x_origin, double y_origin);
extern void pdf_doc_end_page (void);
extern void pdf_doc_set_mediabox (unsigned page_no, const pdf_rect *mediabox);
extern void pdf_doc_get_mediabox (unsigned page_no, pdf_rect *mediabox);
extern void pdf_doc_add_page_content (const char *buffer, unsigned length);
extern void pdf_doc_add_page_resource (const char *category,
const char *resource_name, pdf_obj *resources);
/* Article thread */
extern void pdf_doc_begin_article (const char *article_id, pdf_obj *info);
#if 0
extern void pdf_doc_end_article (const char *article_id); /* Do nothing... */
#endif
extern void pdf_doc_make_article (const char *article_id,
const char **bead_order, int num_beads);
extern void pdf_doc_add_bead (const char *article_id,
const char *bead_id,
long page_no, const pdf_rect *rect);
/* Bookmarks */
extern int pdf_doc_bookmarks_up (void);
extern int pdf_doc_bookmarks_down (void);
extern void pdf_doc_bookmarks_add (pdf_obj *dict, int is_open);
extern int pdf_doc_bookmarks_depth (void);
/* Returns xobj_id of started xform. */
extern int pdf_doc_begin_grabbing (const char *ident,
double ref_x, double ref_y,
const pdf_rect *cropbox);
extern void pdf_doc_end_grabbing (pdf_obj *attrib);
/* Annotation */
#ifdef XETEX
extern void pdf_doc_add_annot (unsigned page_no,
const pdf_rect *rect, pdf_obj *annot_dict);
#else
extern void pdf_doc_add_annot (unsigned page_no,
const pdf_rect *rect,
pdf_obj *annot_dict,
int dest_is_new);
#endif
/* Annotation with auto- clip and line (or page) break */
extern void pdf_doc_begin_annot (pdf_obj *dict);
extern void pdf_doc_end_annot (void);
extern void pdf_doc_break_annot (void);
extern void pdf_doc_expand_box (const pdf_rect *rect);
/* Manual thumbnail */
extern void pdf_doc_enable_manual_thumbnails (void);
#if 0
/* PageLabels - */
extern void pdf_doc_set_pagelabel (long page_start,
const char *type,
const void *prefix, int pfrx_len,
long counter_start);
#endif
/* Similar to bop_content */
#include "pdfcolor.h"
extern void pdf_doc_set_bgcolor (const pdf_color *color);
#endif /* _PDFDOC_H_ */
|