2021-06-18 15:19:43 +02:00
|
|
|
/* CHAPTER 8. Logos, Watermarks and Stamps */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* cpdf_stampOn(stamp_pdf, pdf, range) stamps stamp_pdf on top of all the
|
|
|
|
* pages in the document which are in the range. The stamp is placed with its
|
|
|
|
* origin at the origin of the target document.
|
|
|
|
*/
|
|
|
|
void cpdf_stampOn(int, int, int);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* cpdf_stampUnder(stamp_pdf, pdf, range) stamps stamp_pdf under all the
|
|
|
|
* pages in the document which are in the range. The stamp is placed with its
|
|
|
|
* origin at the origin of the target document.
|
|
|
|
*/
|
|
|
|
void cpdf_stampUnder(int, int, int);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* cpdf_stampExtended(pdf, pdf2, range, isover, scale_stamp_to_fit, pos,
|
|
|
|
* relative_to_cropbox) is a stamping function with extra features. - isover
|
|
|
|
* true, pdf goes over pdf2, isover false, pdf goes under pdf2 -
|
|
|
|
* scale_stamp_to_fit scales the stamp to fit the page - pos gives the
|
|
|
|
* position to put the stamp - relative_to_cropbox: if true, pos is relative
|
|
|
|
* to cropbox not mediabox.
|
|
|
|
*/
|
|
|
|
void cpdf_stampExtended(int, int, int, int, int, struct cpdf_position, int);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* cpdf_combinePages(under, over) combines the PDFs page-by-page, putting
|
|
|
|
* each page of 'over' over each page of 'under'.
|
|
|
|
*/
|
|
|
|
int cpdf_combinePages(int, int);
|
|
|
|
|
2022-03-04 18:26:01 +01:00
|
|
|
/* Adding text. */
|
2021-06-18 15:19:43 +02:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Special codes
|
|
|
|
*
|
|
|
|
* %Page Page number in arabic notation (1, 2, 3...)
|
|
|
|
*
|
|
|
|
* %roman Page number in lower-case roman notation (i, ii, iii...)
|
|
|
|
*
|
|
|
|
* %Roman Page number in upper-case roman notation (I, II, III...)
|
|
|
|
*
|
|
|
|
* %EndPage Last page of document in arabic notation
|
|
|
|
*
|
|
|
|
* %Label The page label of the page
|
|
|
|
*
|
|
|
|
* %EndLabel The page label of the last page
|
|
|
|
*
|
|
|
|
* %filename The full file name of the input document
|
|
|
|
*
|
|
|
|
* %a Abbreviated weekday name (Sun, Mon etc.)
|
|
|
|
*
|
|
|
|
* %A Full weekday name (Sunday, Monday etc.)
|
|
|
|
*
|
|
|
|
* %b Abbreviated month name (Jan, Feb etc.)
|
|
|
|
*
|
|
|
|
* %B Full month name (January, February etc.)
|
|
|
|
*
|
|
|
|
* %d Day of the month (01-31)
|
|
|
|
*
|
|
|
|
* %e Day of the month (1-31)
|
|
|
|
*
|
|
|
|
* %H Hour in 24-hour clock (00-23)
|
|
|
|
*
|
|
|
|
* %I Hour in 12-hour clock (01-12)
|
|
|
|
*
|
|
|
|
* %j Day of the year (001-366)
|
|
|
|
*
|
|
|
|
* %m Month of the year (01-12)
|
|
|
|
*
|
|
|
|
* %M Minute of the hour (00-59)
|
|
|
|
*
|
|
|
|
* %p "a.m" or "p.m"
|
|
|
|
*
|
|
|
|
* %S Second of the minute (00-61)
|
|
|
|
*
|
|
|
|
* %T Same as %H:%M:%S
|
|
|
|
*
|
|
|
|
* %u Weekday (1-7, 1 = Monday)
|
|
|
|
*
|
|
|
|
* %w Weekday (0-6, 0 = Monday)
|
|
|
|
*
|
|
|
|
* %Y Year (0000-9999)
|
|
|
|
*
|
|
|
|
* %% The % character
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* The standard fonts */
|
|
|
|
enum cpdf_font {
|
|
|
|
cpdf_timesRoman, /* Times Roman */
|
|
|
|
cpdf_timesBold, /* Times Bold */
|
|
|
|
cpdf_timesItalic, /* Times Italic */
|
|
|
|
cpdf_timesBoldItalic, /* Times Bold Italic */
|
|
|
|
cpdf_helvetica, /* Helvetica */
|
|
|
|
cpdf_helveticaBold, /* Helvetica Bold */
|
|
|
|
cpdf_helveticaOblique, /* Helvetica Oblique */
|
|
|
|
cpdf_helveticaBoldOblique, /* Helvetica Bold Oblique */
|
|
|
|
cpdf_courier, /* Courier */
|
|
|
|
cpdf_courierBold, /* Courier Bold */
|
|
|
|
cpdf_courierOblique, /* Courier Oblique */
|
|
|
|
cpdf_courierBoldOblique /* Courier Bold Oblique */
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Justifications for multi line text */
|
|
|
|
enum cpdf_justification {
|
|
|
|
cpdf_leftJustify, /* Left justify */
|
|
|
|
cpdf_CentreJustify, /* Centre justify */
|
|
|
|
cpdf_RightJustify /* Right justify */
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Add text */
|
|
|
|
void cpdf_addText(int, /* If true, don't actually add text but
|
|
|
|
* collect metrics. */
|
|
|
|
int, /* Document */
|
|
|
|
int, /* Page Range */
|
|
|
|
const char[], /* The text to add */
|
|
|
|
struct cpdf_position, /* Position to add text at */
|
|
|
|
double, /* Linespacing, 1.0 = normal */
|
|
|
|
int, /* Starting Bates number */
|
|
|
|
enum cpdf_font, /* Font */
|
|
|
|
double, /* Font size in points */
|
|
|
|
double, /* Red component of colour, 0.0 - 1.0 */
|
|
|
|
double, /* Green component of colour, 0.0 - 1.0 */
|
|
|
|
double, /* Blue component of colour, 0.0 - 1.0 */
|
|
|
|
int, /* If true, text is added underneath rather
|
|
|
|
* than on top */
|
|
|
|
int, /* If true, position is relative to crop box
|
|
|
|
* not media box */
|
|
|
|
int, /* If true, text is outline rather than
|
|
|
|
* filled */
|
|
|
|
double, /* Opacity, 1.0 = opaque, 0.0 = wholly
|
|
|
|
* transparent */
|
|
|
|
enum cpdf_justification, /* Justification */
|
|
|
|
int, /* If true, position is relative to midline
|
|
|
|
* of text, not baseline */
|
|
|
|
int, /* If true, position is relative to topline
|
|
|
|
* of text, not baseline */
|
|
|
|
const char[], /* filename that this document was read from
|
|
|
|
* (optional) */
|
|
|
|
double, /* line width */
|
|
|
|
int /* embed fonts */
|
|
|
|
);
|
|
|
|
|
|
|
|
/* Add text, with most parameters default. */
|
|
|
|
void cpdf_addTextSimple(int, /* Document */
|
|
|
|
int, /* Page range */
|
|
|
|
const char[], /* The text to add */
|
|
|
|
struct cpdf_position, /* Position to add text
|
|
|
|
* at */
|
|
|
|
enum cpdf_font, /* font */
|
|
|
|
double); /* font size */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* cpdf_removeText(pdf, range) will remove any text added by libcpdf from the
|
|
|
|
* given pages.
|
|
|
|
*/
|
|
|
|
void cpdf_removeText(int, int);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Return the width of a given string in the given font in thousandths of a
|
|
|
|
* point.
|
|
|
|
*/
|
|
|
|
int cpdf_textWidth(enum cpdf_font, const char[]);
|
|
|
|
|
2022-03-04 18:26:01 +01:00
|
|
|
/* cpdf_addContent(content, before, pdf, range) adds page content before (if
|
2021-06-18 15:19:43 +02:00
|
|
|
* true) or after (if false) the existing content to pages in the given range
|
|
|
|
* in the given PDF. */
|
|
|
|
void cpdf_addContent(const char[], int, int, int);
|
|
|
|
|
|
|
|
/* cpdf_stampAsXObject(pdf, range, stamp_pdf) stamps stamp_pdf onto the pages
|
|
|
|
* in the given range in pdf as a shared Form XObject. The name of the
|
|
|
|
* newly-created XObject is returned. */
|
|
|
|
char *cpdf_stampAsXObject(int, int, int);
|
|
|
|
|