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 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388
|
/* CHAPTER 11. Document Information and Metadata */
/*
* cpdf_isLinearized(filename) finds out if a document is linearized as
* quickly as possible without loading it.
*/
int cpdf_isLinearized(const char[]);
/* cpdf_hasObjectStreams(pdf) finds out if a document was written using object
* streams. */
int cpdf_hasObjectStreams(int);
/* cpdf_id1(pdfs) returns the first ID string of the PDF, if any, in
* hexadecimal string format. */
char *cpdf_id1(int);
/* cpdf_id2(pdfs) returns the second ID string of the PDF, if any, in
* hexadecimal string format. */
char *cpdf_id2(int);
/* cpdf_hasAcroForm returns true if the document has an AcroForm */
int cpdf_hasAcroForm(int);
/* To return the subformats of a PDF (if any), call
* cpdf_startGetSubformats(pdf) to return their number. Then pass the numbers
* 0..n - 1 to cpdf_getSubformat to return the strings. Call
* cpdf_endGetSubformats() to clean up. */
int cpdf_startGetSubformats(int);
char *cpdf_getSubformat(int);
void cpdf_endGetSubformats(void);
/* cpdf_getVersion(pdf) returns the minor version number of a document. */
int cpdf_getVersion(int);
/* cpdf_getMajorVersion(pdf) returns the minor version number of a document. */
int cpdf_getMajorVersion(int);
/* cpdf_getTitle(pdf) returns the title of a document. */
char *cpdf_getTitle(int);
/* cpdf_getAuthor(pdf) returns the author of a document. */
char *cpdf_getAuthor(int);
/* cpdf_getSubject(pdf) returns the subject of a document. */
char *cpdf_getSubject(int);
/* cpdf_getKeywords(pdf) returns the keywords of a document. */
char *cpdf_getKeywords(int);
/* cpdf_getCreator(pdf) returns the creator of a document. */
char *cpdf_getCreator(int);
/* cpdf_getProducer(pdf) returns the producer of a document. */
char *cpdf_getProducer(int);
/* cpdf_getCreationDate(pdf) returns the creation date of a document. */
char *cpdf_getCreationDate(int);
/* cpdf_getModificationDate(pdf) returns the modification date of a document. */
char *cpdf_getModificationDate(int);
/* cpdf_getTitleXMP(pdf) returns the XMP title of a document. */
char *cpdf_getTitleXMP(int);
/* cpdf_getAuthorXMP(pdf) returns the XMP author of a document. */
char *cpdf_getAuthorXMP(int);
/* cpdf_getSubjectXMP(pdf) returns the XMP subject of a document. */
char *cpdf_getSubjectXMP(int);
/* cpdf_getKeywordsXMP(pdf) returns the XMP keywords of a document. */
char *cpdf_getKeywordsXMP(int);
/* cpdf_getCreatorXMP(pdf) returns the XMP creator of a document. */
char *cpdf_getCreatorXMP(int);
/* cpdf_getProducerXMP(pdf) returns the XMP producer of a document. */
char *cpdf_getProducerXMP(int);
/* cpdf_getCreationDateXMP(pdf) returns the XMP creation date of a document. */
char *cpdf_getCreationDateXMP(int);
/*
* cpdf_getModificationDateXMP(pdf) returns the XMP modification date of a
* document.
*/
char *cpdf_getModificationDateXMP(int);
/* cpdf_setTitle(pdf) sets the title of a document. */
void cpdf_setTitle(int, const char[]);
/* cpdf_setAuthor(pdf) sets the author of a document. */
void cpdf_setAuthor(int, const char[]);
/* cpdf_setSubject(pdf) sets the subject of a document. */
void cpdf_setSubject(int, const char[]);
/* cpdf_setKeywords(pdf) sets the keywords of a document. */
void cpdf_setKeywords(int, const char[]);
/* cpdf_setCreator(pdf) sets the creator of a document. */
void cpdf_setCreator(int, const char[]);
/* cpdf_setProducer(pdf) sets the producer of a document. */
void cpdf_setProducer(int, const char[]);
/* cpdf_setCreationDate(pdf) sets the creation date of a document. */
void cpdf_setCreationDate(int, const char[]);
/* cpdf_setModificationDate(pdf) sets the modifcation date of a document. */
void cpdf_setModificationDate(int, const char[]);
/* cpdf_setTitleXMP(pdf) sets the XMP title of a document. */
void cpdf_setTitleXMP(int, const char[]);
/* cpdf_setAuthorXMP(pdf) sets the XMP author of a document. */
void cpdf_setAuthorXMP(int, const char[]);
/* cpdf_setSubjectXMP(pdf) sets the XMP subject of a document. */
void cpdf_setSubjectXMP(int, const char[]);
/* cpdf_setKeywordsXMP(pdf) sets the XMP keywords of a document. */
void cpdf_setKeywordsXMP(int, const char[]);
/* cpdf_setCreatorXMP(pdf) sets the XMP creator of a document. */
void cpdf_setCreatorXMP(int, const char[]);
/* cpdf_setProducerXMP(pdf) sets the XMP producer of a document. */
void cpdf_setProducerXMP(int, const char[]);
/* cpdf_setCreationDateXMP(pdf) sets the XMP creation date of a document. */
void cpdf_setCreationDateXMP(int, const char[]);
/*
* cpdf_setModificationDateXMP(pdf) sets the XMP modification date of a
* document.
*/
void cpdf_setModificationDateXMP(int, const char[]);
/*
* Dates: Month 1-31, day 1-31, hours (0-23), minutes (0-59), seconds (0-59),
* hour_offset is the offset from UT in hours (-23 to 23); minute_offset is
* the offset from UT in minutes (-59 to 59).
*/
/*
* cpdf_getDateComponents(datestring, year, month, day, hour, minute, second,
* hour_offset, minute_offset) returns the components from a PDF date string.
*/
void cpdf_getDateComponents(const char[], int *, int *, int *, int *, int *,
int *, int *, int *);
/*
* cpdf_dateStringOfComponents(year, month, day, hour, minute, second,
* hour_offset, minute_offset) builds a PDF date string from individual
* components.
*/
char *cpdf_dateStringOfComponents(int, int, int, int, int, int, int, int);
/*
* cpdf_getPageRotation(pdf, pagenumber) gets the viewing rotation for a
* given page.
*/
int cpdf_getPageRotation(int, int);
/*
* cpdf_numAnnots(pdf, pagenumber) returns the number of annotations on
* a given page.
*/
int cpdf_numAnnots(int, int);
/*
* cpdf_hasBox(pdf, pagenumber, boxname) returns true, if that page has the
* given box. E.g "/CropBox".
*/
int cpdf_hasBox(int, int, const char[]);
/*
* These functions get a box given the document, page number, min x, max x,
* min y, max y in points. Only succeeds if such a box exists, as checked by
* cpdf_hasBox.
*/
void cpdf_getMediaBox(int, int, double *, double *, double *, double *);
void cpdf_getCropBox(int, int, double *, double *, double *, double *);
void cpdf_getTrimBox(int, int, double *, double *, double *, double *);
void cpdf_getArtBox(int, int, double *, double *, double *, double *);
void cpdf_getBleedBox(int, int, double *, double *, double *, double *);
/*
* These functions set a box given the document, page range, min x, max x,
* min y, max y in points.
*/
void cpdf_setMediabox(int, int, double, double, double, double);
void cpdf_setCropBox(int, int, double, double, double, double);
void cpdf_setTrimBox(int, int, double, double, double, double);
void cpdf_setArtBox(int, int, double, double, double, double);
void cpdf_setBleedBox(int, int, double, double, double, double);
/* cpdf_pageInfoJSON(pdf, size) returns JSON data for the page
information, and fills in the return length. */
void *cpdf_pageInfoJSON(int, int *);
/* cpdf_markTrapped(pdf) marks a document as trapped. */
void cpdf_markTrapped(int);
/* cpdf_markUntrapped(pdf) marks a document as untrapped. */
void cpdf_markUntrapped(int);
/* cpdf_markTrappedXMP(pdf) marks a document as trapped in XMP metadata. */
void cpdf_markTrappedXMP(int);
/* cpdf_markUntrappedXMP(pdf) marks a document as untrapped in XMP metadata. */
void cpdf_markUntrappedXMP(int);
/* Document Layouts. */
enum cpdf_layout {
cpdf_singlePage,
cpdf_oneColumn,
cpdf_twoColumnLeft,
cpdf_twoColumnRight,
cpdf_twoPageLeft,
cpdf_twoPageRight
};
/* cpdf_setPageLayout(pdf, layout) sets the page layout for a document. */
void cpdf_setPageLayout(int, enum cpdf_layout);
enum cpdf_layout cpdf_getPageLayout(int);
/* Document page modes. */
enum cpdf_pageMode {
cpdf_useNone,
cpdf_useOutlines,
cpdf_useThumbs,
cpdf_useOC,
cpdf_useAttachments
};
/* cpdf_setPageMode(pdf, mode) sets the page mode for a document. */
void cpdf_setPageMode(int, enum cpdf_pageMode);
/* cpdf_getPageMode(pdf) returns the page mode for a document. */
enum cpdf_pageMode cpdf_getPageMode(int);
/* cpdf_hideToolbar(pdf, flag) sets the hide toolbar flag. */
void cpdf_hideToolbar(int, int);
/* cpdf_getHideToolbar(pdf) gets the hide toolbar flag. */
int cpdf_getHideToolbar(int);
/* cpdf_hideMenubar(pdf, flag) sets the hide menu bar flag. */
void cpdf_hideMenubar(int, int);
/* cpdf_getHideMenubar(pdf) gets the hide menu bar flag. */
int cpdf_getHideMenubar(int);
/* cpdf_hideWindowUi(pdf, flag) sets the hide window UI flag. */
void cpdf_hideWindowUi(int, int);
/* cpdf_getHideWindowUi(pdf) gets the hide window UI flag. */
int cpdf_getHideWindowUi(int);
/* cpdf_fitWindow(pdf, flag) sets the fit window flag. */
void cpdf_fitWindow(int, int);
/* cpdf_getFitWindow(pdf) gets the fit window flag. */
int cpdf_getFitWindow(int);
/* cpdf_centerWindow(pdf, flag) sets the center window flag. */
void cpdf_centerWindow(int, int);
/* cpdf_getCenterWindow(pdf) gets the center window flag. */
int cpdf_getCenterWindow(int);
/* cpdf_displayDocTitle(pdf, flag) sets the display document title flag. */
void cpdf_displayDocTitle(int, int);
/* cpdf_getDisplayDocTitle(pdf) gets the display document title flag. */
int cpdf_getDisplayDocTitle(int);
/* cpdf_nonFullScreenPageMode(pdf, pagemode) sets the non full screen page
* mode. */
void cpdf_nonFullScreenPageMode(int, enum cpdf_pageMode);
/* cpdf_getNonFullScreenPageMode(pdf) gets the non full screen page mode. */
enum cpdf_pageMode cpdf_getNonFullScreenPageMode(int);
/* cpdf_openAtPage(pdf, fit, pagenumber) sets the PDF to open, possibly with
* zoom-to-fit, at the given page number. */
void cpdf_openAtPage(int, int, int);
/* cpdf_openAtPageCustom(pdf, destination) sets the PDF to open at the
* destination described by the string. */
void cpdf_openAtPageCustom(int, char *);
/*
* cpdf_setMetadataFromFile(pdf, filename) set the XMP metadata of a
* document, given a file name.
*/
void cpdf_setMetadataFromFile(int, const char[]);
/*
* cpdf_setMetadataFromByteArray(pdf, data, length) set the XMP metadata from
* an array of bytes.
*/
void cpdf_setMetadataFromByteArray(int, void *, int);
/*
* cpdf_getMetadata(pdf, length) returns the XMP metadata and fills in
* length.
*/
void *cpdf_getMetadata(int, int *);
/* cpdf_removeMetadata(pdf) removes the XMP metadata from a document. */
void cpdf_removeMetadata(int);
/*
* cpdf_createMetadata(pdf) builds fresh metadata as best it can from
* existing metadata in the document.
*/
void cpdf_createMetadata(int);
/*
* cpdf_setMetadataDate(pdf, date) sets the metadata date for a PDF. The date
* is given in PDF date format -- cpdf will convert it to XMP format. The
* date 'now' means now.
*/
void cpdf_setMetadataDate(int, const char[]);
/* Styles of page label */
enum cpdf_pageLabelStyle {
cpdf_decimalArabic, /* 1, 2, 3... */
cpdf_uppercaseRoman, /* I, II, III... */
cpdf_lowercaseRoman, /* i, ii, iii... */
cpdf_uppercaseLetters, /* A, B, C... */
cpdf_lowercaseLetters /* a, b, c... */
};
/*
* Add page labels.
*
* cpdf_addPageLabels(pdf, style, prefix, offset, range, progress)
*
* The prefix is prefix text for each label. The range is the page range the
* labels apply to. Offset can be used to shift the numbering up or down.
*/
void cpdf_addPageLabels(int, enum cpdf_pageLabelStyle, const char[], int, int,
int);
/* cpdf_removePageLabels(pdf) removes the page labels from the document. */
void cpdf_removePageLabels(int);
/*
* cpdf_getPageLabelStringForPage(pdf, page number) calculates the full label
* string for a given page, and returns it.
*/
char *cpdf_getPageLabelStringForPage(int, int);
/*
* Get page label data. Call cpdf_startGetPageLabels to find out how many
* there are, then use these serial numbers to get the style, prefix, offset
* and start value (note not a range). Call cpdf_endGetPageLabels to clean up.
*
* For example, a document might have five pages of introduction with roman
* numerals, followed by the rest of the pages in decimal arabic, numbered from
* one:
*
* labelstyle = LowercaseRoman
* labelprefix = ""
* startpage = 1
* startvalue = 1
*
* labelstyle = DecimalArabic
* labelprefix = ""
* startpage = 6
* startvalue = 1
*/
int cpdf_startGetPageLabels(int);
enum cpdf_pageLabelStyle cpdf_getPageLabelStyle(int);
char *cpdf_getPageLabelPrefix(int);
int cpdf_getPageLabelOffset(int);
int cpdf_getPageLabelRange(int);
void cpdf_endGetPageLabels();
/* cpdf_compositionJSON(filesize, pdf, size) returns the composition data in
* JSON format, filling in the return length. */
void *cpdf_compositionJSON(int, int, int *);
|