/* 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 *);