3bf951f42c
Files correlati : pdflib Ricompilazione Demo : [ ] Commento : Aggiornata pdflib.dll alla versione 7.0.4 git-svn-id: svn://10.65.10.50/trunk@18580 c028cbd2-c16b-5b4b-a496-9718f37d4682
1044 lines
38 KiB
C
Executable File
1044 lines
38 KiB
C
Executable File
/*---------------------------------------------------------------------------*
|
|
| PDFlib - A library for generating PDF on the fly |
|
|
+---------------------------------------------------------------------------+
|
|
| Copyright (c) 1997-2006 Thomas Merz and PDFlib GmbH. All rights reserved. |
|
|
+---------------------------------------------------------------------------+
|
|
| |
|
|
| This software is subject to the PDFlib license. It is NOT in the |
|
|
| public domain. Extended versions and commercial licenses are |
|
|
| available, please check http://www.pdflib.com. |
|
|
| |
|
|
*---------------------------------------------------------------------------*/
|
|
|
|
/* $Id: p_intern.h,v 1.4 2009-03-23 08:51:17 guy Exp $
|
|
*
|
|
* PDFlib internal definitions
|
|
*
|
|
*/
|
|
|
|
#ifndef P_INTERN_H
|
|
#define P_INTERN_H
|
|
|
|
#include "pdflib.h"
|
|
|
|
#include "ft_font.h"
|
|
#include "pc_file.h"
|
|
#include "pc_contain.h"
|
|
|
|
#include "p_keyconn.h"
|
|
|
|
|
|
|
|
|
|
/* ------------------------ PDFlib feature configuration ------------------- */
|
|
|
|
/* changing the following is not recommended, and not supported */
|
|
|
|
/* BMP image support */
|
|
#define PDF_BMP_SUPPORTED
|
|
|
|
/* GIF image support */
|
|
#define PDF_GIF_SUPPORTED
|
|
|
|
/* JPEG image support */
|
|
#define PDF_JPEG_SUPPORTED
|
|
|
|
/* JPEG2000 image support */
|
|
#define PDF_JPX_SUPPORTED
|
|
|
|
/* PNG image support, requires HAVE_LIBZ */
|
|
#define HAVE_LIBPNG
|
|
|
|
/* TIFF image support */
|
|
#define HAVE_LIBTIFF
|
|
|
|
|
|
/* -------------------------------- macros ------------------------------- */
|
|
|
|
/*
|
|
* Allocation chunk sizes. These don't affect the generated documents
|
|
* in any way. In order to save initial memory, however, you can lower
|
|
* the values. Increasing the values will bring some performance gain
|
|
* for large documents, but will waste memory for small ones.
|
|
*/
|
|
#define PAGES_CHUNKSIZE 512 /* pages */
|
|
#define PNODES_CHUNKSIZE 64 /* page tree nodes */
|
|
#define CONTENTS_CHUNKSIZE 64 /* page content streams */
|
|
#define FONTS_CHUNKSIZE 16 /* document fonts */
|
|
#define XOBJECTS_CHUNKSIZE 128 /* document xobjects */
|
|
#define IMAGES_CHUNKSIZE 128 /* document images */
|
|
#define OUTLINE_CHUNKSIZE 256 /* document outlines */
|
|
#define NAMES_CHUNKSIZE 256 /* names */
|
|
#define PDI_CHUNKSIZE 16 /* PDI instances */
|
|
#define COLORSPACES_CHUNKSIZE 16 /* color spaces */
|
|
#define PATTERN_CHUNKSIZE 4 /* pattern */
|
|
#define SHADINGS_CHUNKSIZE 4 /* shadings */
|
|
#define EXTGSTATE_CHUNKSIZE 4 /* external graphic states */
|
|
#define T3GLYPHS_CHUNKSIZE 256 /* type 3 font glyph table */
|
|
#define ICCPROFILE_CHUNKSIZE 4 /* ICC profiles */
|
|
#define STRINGLISTS_CHUNKSIZE 128 /* document stringlists */
|
|
#define ITEMS_CHUNKSIZE 256 /* PDFlib items */
|
|
#define ITEMS_KIDS_CHUNKSIZE 64 /* PDFlib item's kids */
|
|
#define ITEMS_MC_CHUNKSIZE 16 /* PDFlib item mc sequences */
|
|
#define LAYER_DEP_CHUNKSIZE 16 /* PDFlib layer dependencies */
|
|
#define RESLIST_CHUNKSIZE 16 /* per page resource list */
|
|
|
|
/* Acrobat 4 allows only 12 levels, but Acrobat 5 increases the limit to 28 */
|
|
#define PDF_MAX_SAVE_LEVEL 28 /* max number of save levels */
|
|
|
|
#define PDF_MAX_PARAMSTRING 256 /* image parameter string */
|
|
#define PDF_MAX_NAMESTRING 127 /* maximum name length */
|
|
#define PDF_MAX_EVENTS 16 /* maximum number of events */
|
|
#define PDF_MAX_DASHLENGTH 8 /* maximum number of dashes */
|
|
|
|
/* default PDF compatibility */
|
|
#define PDF_DEF_COMPATIBILITY PDC_1_6
|
|
|
|
|
|
/* ------------------------ typedefs and enums --------------------------- */
|
|
|
|
/* PDFlib error numbers.
|
|
*/
|
|
#ifndef P_GENERR_H
|
|
enum
|
|
{
|
|
#define pdf_genNames 1
|
|
#include "p_generr.h"
|
|
|
|
PDF_E_dummy
|
|
};
|
|
#endif
|
|
|
|
#define pdf_state_content \
|
|
(pdf_state) (pdf_state_page | pdf_state_pattern | \
|
|
pdf_state_template | pdf_state_glyph)
|
|
|
|
#define pdf_state_firsttest \
|
|
(pdf_state) (pdf_state_document | pdf_state_content | \
|
|
pdf_state_path | pdf_state_font | \
|
|
pdf_state_glyphmetrics)
|
|
|
|
#define pdf_state_documentall \
|
|
(pdf_state) (pdf_state_document | pdf_state_content | \
|
|
pdf_state_path | pdf_state_font | \
|
|
pdf_state_glyphmetrics | pdf_state_glyphignore)
|
|
|
|
#define pdf_state_all (pdf_state) (pdf_state_object | pdf_state_documentall)
|
|
|
|
#define PDF_STATE_STACK_SIZE 4
|
|
|
|
/* function-like macros.
|
|
** must behave well wherever function calls are syntactically legal.
|
|
*/
|
|
#define PDF_GET_STATE(p) \
|
|
((p)->state_stack[(p)->state_sp])
|
|
|
|
#define PDF_SET_STATE(p, s) \
|
|
((p)->state_stack[(p)->state_sp] = (s))
|
|
|
|
/* statement-like macros.
|
|
** must behave well wherever statements are syntactically legal.
|
|
*/
|
|
#define PDF_CHECK_STATE(p, s) \
|
|
if ((((p)->state_stack[(p)->state_sp] & (s)) != 0)) { \
|
|
} else pdc_error((p)->pdc, \
|
|
PDF_E_DOC_SCOPE, pdf_current_scope(p), 0, 0, 0)
|
|
|
|
#define PDF_PUSH_STATE(p, fn, s) \
|
|
if ((p)->state_sp == PDF_STATE_STACK_SIZE - 1) \
|
|
pdc_error((p)->pdc, PDF_E_INT_SSTACK_OVER, fn, 0, 0, 0); \
|
|
else \
|
|
(p)->state_stack[++(p)->state_sp] = (s)
|
|
|
|
#define PDF_POP_STATE(p, fn) \
|
|
if ((p)->state_sp == 0) \
|
|
pdc_error((p)->pdc, PDF_E_INT_SSTACK_UNDER, fn, 0, 0, 0); \
|
|
else \
|
|
--(p)->state_sp
|
|
|
|
|
|
/* -------------------------- structs ------------------------------ */
|
|
|
|
#ifndef PDI_DEFINED
|
|
#define PDI_DEFINED
|
|
typedef struct PDI_s PDI; /* The opaque PDI type */
|
|
typedef struct pdi_pcos_s pdi_pcos;
|
|
typedef struct pdi_props_s pdi_props;
|
|
#endif
|
|
|
|
typedef struct
|
|
{
|
|
pdc_bool info_mode;
|
|
PDI * pi;
|
|
pdc_byte * data;
|
|
pdi_pcos * pcc;
|
|
} pdf_pdi;
|
|
|
|
/* Opaque types which are detailed in the respective modules
|
|
in alphabetical order */
|
|
typedef struct pdf_category_s pdf_category;
|
|
typedef struct pdf_colorspace_s pdf_colorspace;
|
|
typedef struct pdf_cstate_s pdf_cstate;
|
|
typedef struct pdf_dest_s pdf_dest;
|
|
typedef struct pdf_document_s pdf_document;
|
|
typedef struct pdf_extgstateresource_s pdf_extgstateresource;
|
|
typedef struct pdf_font_options_s pdf_font_options;
|
|
typedef struct pdf_font_s pdf_font;
|
|
typedef struct pdf_formfields_s pdf_formfields;
|
|
typedef struct pdf_iccprofile_s pdf_iccprofile;
|
|
typedef struct pdf_image_s pdf_image;
|
|
typedef struct pdf_info_s pdf_info;
|
|
typedef struct pdf_layers_s pdf_layers;
|
|
typedef struct pdf_linearopts_s pdf_linearopts;
|
|
typedef struct pdf_mbox_s pdf_mbox;
|
|
typedef struct pdf_name_s pdf_name;
|
|
typedef struct pdf_outline_s pdf_outline;
|
|
typedef struct pdf_pages_s pdf_pages;
|
|
typedef struct pdf_pattern_s pdf_pattern;
|
|
typedef struct pdf_reslist_s pdf_reslist;
|
|
typedef struct pdf_shading_s pdf_shading;
|
|
typedef struct pdf_t3font_s pdf_t3font;
|
|
typedef struct pdf_tags_s pdf_tags;
|
|
typedef struct pdf_text_options_s pdf_text_options;
|
|
typedef struct pdf_tstate_s pdf_tstate;
|
|
typedef struct pdf_widget_s pdf_widget;
|
|
typedef struct pdf_xobject_s pdf_xobject;
|
|
|
|
|
|
/* -------------------- special graphics state -------------------- */
|
|
typedef struct {
|
|
pdc_matrix ctm; /* current transformation matrix */
|
|
pdc_scalar x; /* current x coordinate */
|
|
pdc_scalar y; /* current y coordinate */
|
|
|
|
pdc_scalar startx; /* starting x point of the subpath */
|
|
pdc_scalar starty; /* starting y point of the subpath */
|
|
|
|
pdc_scalar lwidth; /* line width */
|
|
int lcap; /* line cap style */
|
|
int ljoin; /* line join style */
|
|
pdc_scalar miter; /* miter limit */
|
|
pdc_scalar flatness; /* path flatness */
|
|
pdc_bool dashed; /* line dashing in effect */
|
|
} pdf_gstate;
|
|
|
|
/* ---------------------- page/pattern/template ----------------------- */
|
|
typedef struct
|
|
{
|
|
/* graphics, text, and color state.
|
|
*/
|
|
int sl; /* current save level */
|
|
pdf_gstate gstate[PDF_MAX_SAVE_LEVEL]; /* graphics state */
|
|
pdf_tstate *tstate; /* text state */
|
|
pdf_cstate *cstate; /* color state */
|
|
|
|
pdf_text_options *currto; /* current text options */
|
|
pdf_fillrule fillrule; /* nonzero or evenodd fill rule */
|
|
|
|
pdc_vtr * mboxes; /* matchbox chain */
|
|
|
|
/* in update mode, the resource numbers generally don't start
|
|
** with 0, but with a bias value derived from the original
|
|
** page's resources.
|
|
*/
|
|
int cs_bias; /* colorspaces */
|
|
int eg_bias; /* extended gstates */
|
|
int fn_bias; /* fonts */
|
|
int pt_bias; /* patterns */
|
|
int sh_bias; /* shadings */
|
|
int xo_bias; /* xobjects */
|
|
} pdf_ppt;
|
|
|
|
/* Force graphics or color operator output, avoiding the optimization
|
|
* which checks whether the new value might be the same as the old.
|
|
* This is especially required for Type 3 glyph descriptions which
|
|
* inherit the surrounding page description's gstate parameters,
|
|
* and therefore even must write default values.
|
|
*/
|
|
#define PDF_FORCE_OUTPUT() (PDF_GET_STATE(p) == pdf_state_glyph)
|
|
|
|
/*
|
|
* *************************************************************************
|
|
* The core PDF context descriptor
|
|
* *************************************************************************
|
|
*/
|
|
|
|
struct PDF_s {
|
|
/* -------------------------- general stuff ------------------------ */
|
|
unsigned long magic; /* poor man's integrity check */
|
|
void (*freeproc)(PDF *p, void *mem);
|
|
pdc_core *pdc; /* core context */
|
|
int compatibility; /* PDF version number * 10 */
|
|
pdf_errpol errorpolicy; /* error policy */
|
|
|
|
|
|
|
|
|
|
pdf_state state_stack[PDF_STATE_STACK_SIZE];
|
|
int state_sp; /* state stack pointer */
|
|
|
|
/* ------------------- PDF Catalog dictionary --------------------- */
|
|
pdf_document *document; /* document struct */
|
|
|
|
|
|
/* ------------------- PDF Info dictionary entries ----------------- */
|
|
pdf_info *userinfo; /* list of user-defined entries */
|
|
|
|
/* -------------- I/O, error handling and memory management ------------- */
|
|
size_t (*writeproc)(PDF *p, void *data, size_t size);
|
|
void (*errorhandler)(PDF *p, int level, const char* msg);
|
|
void *opaque; /* user-specific, opaque data */
|
|
|
|
/* ------------------------- PDF import ---------------------------- */
|
|
pdf_pdi *pdi; /* PDI context array */
|
|
int pdi_capacity; /* currently allocated size */
|
|
pdc_pagebox pdi_usebox;
|
|
pdc_bool pdi_strict; /* strict PDF parser mode */
|
|
pdc_bstr * pdi_parmbuf; /* string buffer for pdi parms */
|
|
|
|
/* ------------ stuff for hypertext functions ---------- */
|
|
pdc_encoding hypertextencoding; /* encoding of hypertexts */
|
|
pdc_text_format hypertextformat; /* format of hypertexts */
|
|
int hypertextcodepage; /* OEM multi byte code-page number */
|
|
pdc_bool usercoordinates; /* interprete rectangle coordinates */
|
|
/* of hypertext funcs. in user space */
|
|
pdc_bool usehyptxtenc; /* use hypertextencoding */
|
|
/* for name strings */
|
|
|
|
|
|
/* ------------------- PDF output bookkeeping ------------------- */
|
|
pdc_id procset_id; /* id of constant ProcSet array */
|
|
pdc_output *out; /* output manager */
|
|
pdc_id length_id; /* id of current stream's length*/
|
|
pdc_flush_state flush; /* flush state */
|
|
|
|
/* ------------------- page bookkeeping ------------------- */
|
|
pdf_pages *doc_pages; /* document wide page management */
|
|
|
|
/* ------------------- document resources ------------------- */
|
|
pdf_font *fonts; /* all fonts in document */
|
|
int fonts_capacity; /* currently allocated size */
|
|
int fonts_number; /* next available font number */
|
|
int t3slot; /* slot of temporary type 3 font */
|
|
fnt_cmap_stack *cmst; /* CMap stack handle */
|
|
|
|
|
|
|
|
pdf_xobject *xobjects; /* all xobjects in document */
|
|
int xobjects_capacity; /* currently allocated size */
|
|
int xobjects_number; /* next available xobject slot */
|
|
|
|
pdf_colorspace *colorspaces; /* all color space resources */
|
|
int colorspaces_capacity; /* currently allocated size */
|
|
int colorspaces_number; /* next available color space number */
|
|
|
|
|
|
pdf_pattern *pattern; /* all pattern resources */
|
|
int pattern_capacity; /* currently allocated size */
|
|
int pattern_number; /* next available pattern number */
|
|
|
|
pdf_shading *shadings; /* all shading resources */
|
|
int shadings_capacity; /* currently allocated size */
|
|
int shadings_number; /* next available shading number */
|
|
|
|
pdf_extgstateresource *extgstates; /* all ext. graphic state resources */
|
|
int extgstates_capacity; /* currently allocated size */
|
|
int extgstates_number; /* next available extgstate number */
|
|
|
|
pdf_image *images; /* all images in document */
|
|
int images_capacity; /* currently allocated size */
|
|
|
|
pdc_vtr *actions; /* all actions in document */
|
|
|
|
|
|
/* ------------------ utilities ------------------- */
|
|
char ***stringlists; /* string lists */
|
|
int stringlists_capacity; /* currently allocated size */
|
|
int stringlists_number; /* next available string list number */
|
|
int *stringlistsizes; /* sizes of string lists */
|
|
int utilstrlist_index; /* index of utility string list */
|
|
int utilstring_number; /* next available utility string */
|
|
|
|
/* ------------------- document outline tree ------------------- */
|
|
pdf_outline *outlines; /* dynamic array of outlines */
|
|
int outline_capacity; /* currently allocated size */
|
|
int outline_count; /* total number of outlines */
|
|
|
|
/* ------------------- name tree ------------------- */
|
|
pdf_name *names; /* page ids */
|
|
int names_capacity;
|
|
int names_number; /* next available names number */
|
|
|
|
/* -------------- page/pattern/template specific stuff -------------- */
|
|
pdf_ppt * curr_ppt; /* current ppt descriptor */
|
|
pdc_id res_id; /* id of this pattern/templ res dict */
|
|
|
|
pdc_scalar ydirection; /* direction of y axis of default */
|
|
/* system rel. to viewport (1 or -1) */
|
|
|
|
pdf_renderingintent rendintent; /* RenderingIntent */
|
|
|
|
pdc_bool preserveoldpantonenames;/* preserve old PANTONE names */
|
|
pdc_bool spotcolorlookup; /* use internal look-up table for
|
|
* color values */
|
|
|
|
/* ------------------------ template stuff ----------------------- */
|
|
int templ; /* current template if in templ. state*/
|
|
|
|
/* --------------- other font and text stuff ---------------- */
|
|
|
|
pdf_font_options *currfo; /* current font settings */
|
|
|
|
pdc_glyphcheck glyphcheck; /* check for unavailable glyphs */
|
|
pdc_text_format textformat; /* text storage format */
|
|
pdc_bool in_text; /* currently in BT/ET section */
|
|
|
|
/* ------------------------ miscellaneous ------------------------ */
|
|
char debug[256]; /* debug flags */
|
|
|
|
|
|
|
|
/* ------- deprecated stuff because of deprecated parameter ---------- */
|
|
pdf_borderstyle border_style;
|
|
pdc_scalar border_width;
|
|
pdc_scalar border_red;
|
|
pdc_scalar border_green;
|
|
pdc_scalar border_blue;
|
|
pdc_scalar border_dash1;
|
|
pdc_scalar border_dash2;
|
|
pdf_dest *bookmark_dest;
|
|
char *launchlink_parameters;
|
|
char *launchlink_operation;
|
|
char *launchlink_defaultdir;
|
|
|
|
};
|
|
|
|
/* Data source for images, compression, ASCII encoding, fonts, etc. */
|
|
typedef struct PDF_data_source_s PDF_data_source;
|
|
struct PDF_data_source_s {
|
|
pdc_byte *next_byte;
|
|
size_t bytes_available;
|
|
void (*init)(PDF *, PDF_data_source *src);
|
|
int (*fill)(PDF *, PDF_data_source *src);
|
|
void (*terminate)(PDF *, PDF_data_source *src);
|
|
|
|
pdc_byte *buffer_start;
|
|
size_t buffer_length;
|
|
void *private_data;
|
|
long offset; /* start of data to read */
|
|
long length; /* length of data to read */
|
|
long total; /* total bytes read so far */
|
|
};
|
|
|
|
/* ------ Private functions for library-internal use only --------- */
|
|
|
|
|
|
/*
|
|
(((((OpenVMS porting note)))))
|
|
|
|
Symbols are restricted to <= 31 bytes on OpenVMS systems....
|
|
Please truncate new function names to fit this silly restriction!
|
|
|
|
(((((OpenVMS porting note)))))
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_actions.c
|
|
*
|
|
**********************/
|
|
|
|
int pdf__create_action(PDF *p, const char *type, const char *optlist);
|
|
|
|
void pdf_delete_actions(PDF *p);
|
|
int pdf_get_max_action(PDF *p);
|
|
pdc_bool pdf_parse_and_write_actionlist(PDF *p, pdf_event_object eventobj,
|
|
pdc_id *act_idlist, const char *optlist);
|
|
pdc_bool pdf_write_action_entries(PDF *p, pdf_event_object eventobj,
|
|
pdc_id *act_idlist);
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_annots.c
|
|
*
|
|
**********************/
|
|
|
|
void pdf__add_launchlink(PDF *p, pdc_scalar llx, pdc_scalar lly,
|
|
pdc_scalar urx, pdc_scalar ury, const char *filename);
|
|
void pdf__add_locallink(PDF *p, pdc_scalar llx, pdc_scalar lly,
|
|
pdc_scalar urx, pdc_scalar ury, int page, const char *optlist);
|
|
void pdf__add_note(PDF *p, pdc_scalar llx, pdc_scalar lly,
|
|
pdc_scalar urx, pdc_scalar ury, const char *contents, int len_cont,
|
|
const char *title, int len_title, const char *icon, int kopen);
|
|
void pdf__add_pdflink(PDF *p, pdc_scalar llx, pdc_scalar lly,
|
|
pdc_scalar urx, pdc_scalar ury, const char *filename, int page,
|
|
const char *optlist);
|
|
void pdf__add_weblink(PDF *p, pdc_scalar llx, pdc_scalar lly,
|
|
pdc_scalar urx, pdc_scalar ury, const char *url);
|
|
void pdf__attach_file(PDF *p, pdc_scalar llx, pdc_scalar lly,
|
|
pdc_scalar urx, pdc_scalar ury, const char *filename, int len_filename,
|
|
const char *description, int len_descr, const char *author,
|
|
int len_auth, const char *mimetype, const char *icon);
|
|
void pdf__create_annotation(PDF *p, pdc_scalar llx, pdc_scalar lly,
|
|
pdc_scalar urx, pdc_scalar ury, const char *type, const char *optlist);
|
|
void pdf__set_border_color(PDF *p, pdc_scalar red, pdc_scalar green,
|
|
pdc_scalar blue);
|
|
void pdf__set_border_dash(PDF *p, pdc_scalar b, pdc_scalar w);
|
|
void pdf__set_border_style(PDF *p, const char *style, pdc_scalar width);
|
|
|
|
void pdf_init_annot_params(PDF *p);
|
|
void pdf_cleanup_annot_params(PDF *p);
|
|
pdc_id pdf_write_annots_root(PDF *p, pdc_vtr *annots, pdf_widget *widgetlist);
|
|
void pdf_write_page_annots(PDF *p, pdc_vtr *annots);
|
|
|
|
void pdf_create_link(PDF *p, const char *type, pdc_scalar llx, pdc_scalar lly,
|
|
pdc_scalar urx, pdc_scalar ury, const char *annopts,
|
|
const char *utext, int len);
|
|
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_color.c
|
|
*
|
|
**********************/
|
|
|
|
|
|
void pdf__setcolor(PDF *p, const char *fstype, const char *colorspace,
|
|
pdc_scalar c1, pdc_scalar c2, pdc_scalar c3, pdc_scalar c4);
|
|
|
|
void pdf_init_cstate(PDF *p);
|
|
void pdf_save_cstate(PDF *p);
|
|
void pdf_cleanup_page_cstate(PDF *p, pdf_ppt *ppt);
|
|
void pdf_init_colorspaces(PDF *p);
|
|
void pdf_set_default_color(PDF *p, pdc_bool reset);
|
|
void pdf_write_page_colorspaces(PDF *p);
|
|
void pdf_mark_page_colorspace(PDF *p, int n);
|
|
void pdf_write_doc_colorspaces(PDF *p);
|
|
void pdf_write_colorspace(PDF *p, int slot, pdc_bool direct);
|
|
void pdf_cleanup_colorspaces(PDF *p);
|
|
void pdf_write_colormap(PDF *p, int slot);
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_document.c
|
|
*
|
|
**********************/
|
|
|
|
int pdf__begin_document(PDF *p, const char *filename, int len,
|
|
const char *optlist);
|
|
|
|
void pdf__begin_document_callback(PDF *p, writeproc_t writeproc,
|
|
const char *optlist);
|
|
|
|
void pdf__end_document(PDF *p, const char *optlist);
|
|
|
|
void pdf_cleanup_document(PDF *p);
|
|
void pdf_fix_openmode(PDF *p);
|
|
void pdf_insert_name(PDF *p, const char *name, pdf_nametree_type type,
|
|
pdc_id obj_id);
|
|
pdc_id pdf_get_id_from_nametree(PDF *p, pdf_nametree_type type,
|
|
const char *name);
|
|
char *pdf_parse_and_write_metadata(PDF *p, const char *optlist, pdc_bool output,
|
|
int *outlen);
|
|
pdc_off_t pdf_check_file(PDF *p, const char *filename, pdc_bool verbose);
|
|
void pdf_embed_file(PDF *p, pdc_id obj_id, const char *filename,
|
|
const char *mimetype, pdc_off_t filesize);
|
|
|
|
/* deprecated functions: */
|
|
void pdf_set_flush(PDF *p, const char *flush);
|
|
void pdf_set_uri(PDF *p, const char *uri);
|
|
void pdf_set_compatibility(PDF *p, const char *compatibility);
|
|
void pdf_set_openmode(PDF *p, const char *openmode);
|
|
void pdf_set_openaction(PDF *p, const char *openaction);
|
|
void pdf_set_viewerpreference(PDF *p, const char *viewerpreference);
|
|
const char *pdf__get_buffer(PDF *p, long *size);
|
|
|
|
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_draw.c
|
|
*
|
|
**********************/
|
|
|
|
|
|
void pdf__arc(PDF *p, pdc_scalar x, pdc_scalar y,
|
|
pdc_scalar r, pdc_scalar alpha, pdc_scalar beta);
|
|
void pdf__arcn(PDF *p, pdc_scalar x, pdc_scalar y,
|
|
pdc_scalar r, pdc_scalar alpha, pdc_scalar beta);
|
|
void pdf__circle(PDF *p, pdc_scalar x, pdc_scalar y, pdc_scalar r);
|
|
void pdf__clip(PDF *p);
|
|
void pdf__closepath(PDF *p);
|
|
void pdf__closepath_fill_stroke(PDF *p);
|
|
void pdf__closepath_stroke(PDF *p);
|
|
void pdf__curveto(PDF *p, pdc_scalar x_1, pdc_scalar y_1,
|
|
pdc_scalar x_2, pdc_scalar y_2, pdc_scalar x_3, pdc_scalar y_3);
|
|
void pdf__endpath(PDF *p);
|
|
void pdf__fill(PDF *p);
|
|
void pdf__fill_stroke(PDF *p);
|
|
void pdf__lineto(PDF *p, pdc_scalar x, pdc_scalar y);
|
|
void pdf__rlineto(PDF *p, pdc_scalar x, pdc_scalar y);
|
|
void pdf__moveto(PDF *p, pdc_scalar x, pdc_scalar y);
|
|
void pdf__rcurveto(PDF *p, pdc_scalar x_1, pdc_scalar y_1,
|
|
pdc_scalar x_2, pdc_scalar y_2, pdc_scalar x_3, pdc_scalar y_3);
|
|
void pdf__rect(PDF *p, pdc_scalar x, pdc_scalar y,
|
|
pdc_scalar width, pdc_scalar height);
|
|
void pdf__rmoveto(PDF *p, pdc_scalar x, pdc_scalar y);
|
|
void pdf__stroke(PDF *p);
|
|
|
|
void pdf_rrcurveto(PDF *p, pdc_scalar x_1, pdc_scalar y_1,
|
|
pdc_scalar x_2, pdc_scalar y_2, pdc_scalar x_3, pdc_scalar y_3);
|
|
void pdf_hvcurveto(PDF *p, pdc_scalar x_1, pdc_scalar x_2,
|
|
pdc_scalar y_2, pdc_scalar y_3);
|
|
void pdf_vhcurveto(PDF *p, pdc_scalar y_1, pdc_scalar x_2,
|
|
pdc_scalar y_2, pdc_scalar x_3);
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_encoding.c
|
|
*
|
|
**********************/
|
|
|
|
void pdf__encoding_set_char(PDF *p, const char *encoding, int slot,
|
|
const char *glyphname, int uv);
|
|
|
|
pdc_encoding pdf_get_hypertextencoding_param(PDF *p, int *codepage);
|
|
pdc_encoding pdf_get_hypertextencoding(PDF *p, const char *encoding,
|
|
int *codepage, pdc_bool verbose);
|
|
|
|
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_filter.c
|
|
*
|
|
**********************/
|
|
|
|
int pdf_data_source_buf_fill(PDF *p, PDF_data_source *src);
|
|
void pdf_data_source_file_init(PDF *p, PDF_data_source *src);
|
|
int pdf_data_source_file_fill(PDF *p, PDF_data_source *src);
|
|
void pdf_data_source_file_terminate(PDF *p, PDF_data_source *src);
|
|
void pdf_copy_stream(PDF *p, PDF_data_source *src, pdc_bool compress);
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_font.c
|
|
*
|
|
**********************/
|
|
|
|
double pdf__info_font(PDF *p, int ifont, const char *keyword,
|
|
const char *optlist);
|
|
int pdf__load_font(PDF *p, const char *fontname, int len,
|
|
const char *encoding, const char *optlist);
|
|
|
|
void pdf_init_font_options(PDF *p, pdf_font_options *fo);
|
|
void pdf_cleanup_font_curroptions(PDF *p);
|
|
void pdf_cleanup_font_options(PDF *p, pdf_font_options *fo);
|
|
void pdf_init_font(PDF *p, pdf_font *font, pdf_font_options *fo);
|
|
void pdf_cleanup_font(PDF *p, pdf_font *font);
|
|
void pdf_init_fonts(PDF *p);
|
|
void pdf_cleanup_fonts(PDF *p);
|
|
int pdf_insert_font(PDF *p, pdf_font *font);
|
|
void pdf_write_doc_fonts(PDF *p);
|
|
void pdf_write_page_fonts(PDF *p);
|
|
void pdf_get_page_fonts(PDF *p, pdf_reslist *rl);
|
|
void pdf_mark_page_font(PDF *p, int ft);
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_gstate.c
|
|
*
|
|
**********************/
|
|
|
|
void pdf__concat(PDF *p, pdc_scalar a, pdc_scalar b, pdc_scalar c, pdc_scalar d,
|
|
pdc_scalar e, pdc_scalar f);
|
|
void pdf__initgraphics(PDF *p);
|
|
void pdf__restore(PDF *p);
|
|
void pdf__rotate(PDF *p, pdc_scalar phi);
|
|
void pdf__save(PDF *p);
|
|
void pdf__scale(PDF *p, pdc_scalar sx, pdc_scalar sy);
|
|
void pdf__setdash(PDF *p, pdc_scalar b, pdc_scalar w);
|
|
void pdf__setdashpattern(PDF *p, const char *optlist);
|
|
void pdf__setflat(PDF *p, pdc_scalar flatness);
|
|
void pdf__setlinecap(PDF *p, int linecap);
|
|
void pdf__setlinejoin(PDF *p, int linejoin);
|
|
void pdf__setlinewidth(PDF *p, pdc_scalar width);
|
|
void pdf__setmatrix(PDF *p, pdc_scalar a, pdc_scalar b, pdc_scalar c,
|
|
pdc_scalar d, pdc_scalar e, pdc_scalar f);
|
|
void pdf__setmiterlimit(PDF *p, pdc_scalar miter);
|
|
void pdf__skew(PDF *p, pdc_scalar alpha, pdc_scalar beta);
|
|
void pdf__translate(PDF *p, pdc_scalar tx, pdc_scalar ty);
|
|
|
|
void pdf_setmatrix_e(PDF *p, pdc_matrix *n);
|
|
void pdf_init_gstate(PDF *p);
|
|
void pdf_concat_raw(PDF *p, pdc_matrix *m);
|
|
void pdf_reset_gstate(PDF *p);
|
|
void pdf_set_topdownsystem(PDF *p, pdc_scalar height);
|
|
void pdf_setdashpattern_internal(PDF *p, pdc_scalar *darray, int length,
|
|
pdc_scalar phase);
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_hyper.c
|
|
*
|
|
**********************/
|
|
|
|
int pdf__add_bookmark(PDF *p, const char *text, int len, int parent, int open);
|
|
void pdf__add_nameddest(PDF *p, const char *name, int len, const char *optlist);
|
|
int pdf__create_bookmark(PDF *p, const char *text, int len,
|
|
const char *optlist);
|
|
void pdf__set_info(PDF *p, const char *key, const char *value, int len);
|
|
|
|
pdf_dest *pdf_init_destination(PDF *p);
|
|
pdf_dest *pdf_parse_destination_optlist(PDF *p, const char *optlist,
|
|
int page, pdf_destuse destuse);
|
|
void pdf_cleanup_destination(PDF *p, pdf_dest *dest);
|
|
void pdf_write_destination(PDF *p, pdf_dest *dest);
|
|
pdf_dest *pdf_get_option_destname(PDF *p, pdc_resopt *resopts,
|
|
pdc_encoding hypertextencoding, int hypertextcodepage);
|
|
void pdf_init_outlines(PDF *p);
|
|
void pdf_write_outlines(PDF *p);
|
|
void pdf_write_outline_root(PDF *p);
|
|
void pdf_cleanup_outlines(PDF *p);
|
|
void pdf_feed_digest_info(PDF *p);
|
|
pdc_id pdf_write_info(PDF *p, pdc_bool moddate);
|
|
void pdf_cleanup_info(PDF *p);
|
|
|
|
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_image.c
|
|
*
|
|
**********************/
|
|
|
|
void pdf__add_thumbnail(PDF *p, int image);
|
|
void pdf__close_image(PDF *p, int image);
|
|
void pdf__fit_image(PDF *p, int image, pdc_scalar x, pdc_scalar y,
|
|
const char *optlist);
|
|
int pdf__load_image(PDF *p, const char *imagetype, const char *filename,
|
|
const char *optlist);
|
|
|
|
void pdf_grow_images(PDF *p);
|
|
void pdf_put_image(PDF *p, int im, pdc_bool firststrip,
|
|
pdc_bool checkcontentstream);
|
|
void pdf_put_inline_image(PDF *p, int im);
|
|
void pdf_init_images(PDF *p);
|
|
void pdf_cleanup_images(PDF *p);
|
|
void pdf_cleanup_image(PDF *p, int im);
|
|
void pdf_get_image_size(PDF *p, int im, pdc_scalar *width, pdc_scalar *height);
|
|
void pdf_get_image_resolution(PDF *p, int im, pdc_scalar *dpi_x,
|
|
pdc_scalar *dpi_y);
|
|
int pdf_get_image_colorspace(PDF *p, int im);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_mbox.c
|
|
*
|
|
**********************/
|
|
|
|
double pdf__info_matchbox(PDF *p, const char *boxname, int len, int num,
|
|
const char *keyword);
|
|
|
|
pdc_vtr *pdf_new_mboxes(PDF *p, pdf_mbox *mbox, pdc_vtr *mboxes);
|
|
pdf_mbox *pdf_parse_mbox_optlist(PDF *p, const char *optlist);
|
|
pdf_mbox *pdf_get_mbox(PDF *p, pdc_vtr *mboxes, const char *name, int number,
|
|
int *o_count);
|
|
void pdf_delete_mbox(PDF *p, pdf_mbox *mbox);
|
|
void pdf_add_page_mbox(PDF *p, pdf_mbox *mbox);
|
|
|
|
pdc_bool pdf_get_mbox_drawborder(PDF *p, pdf_mbox *mbox, int keycode);
|
|
void pdf_set_mbox_rectangle(PDF *p, pdf_mbox *mbox, pdc_rectangle *rect,
|
|
int flags);
|
|
void pdf_get_mbox_rectangle(PDF *p, pdf_mbox *mbox, pdc_vector *polyline);
|
|
void pdf_draw_mbox_rectangle(PDF *p, pdf_mbox *mbox, pdc_bool saverestore);
|
|
const char *pdf_get_usematchbox(PDF *p, const char *option, const char *optval,
|
|
int *istart, int *istop);
|
|
|
|
void pdf_set_position_values(PDF *p, pdc_scalar *i_position, int nv);
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_object.c
|
|
*
|
|
**********************/
|
|
|
|
void pdf__delete(PDF *p);
|
|
|
|
PDF *pdf__new(errorproc_t errorhandler, allocproc_t allocproc,
|
|
reallocproc_t reallocproc, freeproc_t freeproc, void *opaque);
|
|
|
|
const char *pdf_current_scope(PDF *p);
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_page.c
|
|
*
|
|
**********************/
|
|
|
|
void pdf__begin_page(PDF *p, pdc_scalar width, pdc_scalar height);
|
|
void pdf__begin_page_ext(PDF *p, pdc_scalar width, pdc_scalar height,
|
|
const char *optlist);
|
|
void pdf__end_page_ext(PDF *p, const char *optlist);
|
|
void pdf__resume_page(PDF *p, const char *optlist);
|
|
void pdf__suspend_page(PDF *p, const char *optlist);
|
|
void pdf_pg_resume(PDF *p, int pageno);
|
|
void pdf_pg_suspend(PDF *p);
|
|
|
|
void pdf_init_pages(PDF *p, const char **groups, int n_groups);
|
|
void pdf_init_pages2(PDF *p);
|
|
void pdf_check_suspended_pages(PDF *p);
|
|
void pdf_cleanup_pages(PDF *p);
|
|
pdc_id pdf_get_page_id(PDF *p, int n);
|
|
int pdf_current_page(PDF *p);
|
|
int pdf_current_page_id(PDF *p);
|
|
int pdf_last_page(PDF *p);
|
|
int pdf_search_page_fwd(PDF *p, int start_page, pdc_id id);
|
|
int pdf_search_page_bwd(PDF *p, int start_page, pdc_id id);
|
|
int pdf_xlat_pageno(PDF *p, int pageno, const char *groupname);
|
|
|
|
pdc_scalar pdf_get_pageheight(PDF *p);
|
|
const pdc_rectangle *pdf_get_pagebox(PDF *p, pdf_pagebox box);
|
|
void pdf_set_pagebox_llx(PDF *p, pdf_pagebox box, pdc_scalar llx);
|
|
void pdf_set_pagebox_lly(PDF *p, pdf_pagebox box, pdc_scalar lly);
|
|
void pdf_set_pagebox_urx(PDF *p, pdf_pagebox box, pdc_scalar urx);
|
|
void pdf_set_pagebox_ury(PDF *p, pdf_pagebox box, pdc_scalar ury);
|
|
void pdf_set_pagebox(PDF *p, pdf_pagebox box, pdc_scalar llx, pdc_scalar lly,
|
|
pdc_scalar urx, pdc_scalar ury);
|
|
|
|
pdc_vtr *pdf_get_annots_list(PDF *p);
|
|
void pdf_set_annots_list(PDF *p, pdc_vtr *annots);
|
|
pdc_id pdf_get_thumb_id(PDF *p);
|
|
void pdf_set_thumb_id(PDF *p, pdc_id id);
|
|
void pdf_set_autotgroup(PDF *p, pdc_bool autotgroup);
|
|
|
|
void pdf_begin_contents_section(PDF *p);
|
|
void pdf_end_contents_section(PDF *p);
|
|
void pdf_add_reslist(PDF *p, pdf_reslist *rl, int num);
|
|
pdc_id pdf_write_pagelabels(PDF *p);
|
|
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_parameter.c
|
|
*
|
|
**********************/
|
|
|
|
const char *pdf__get_parameter(PDF *p, const char *key, double modifier);
|
|
double pdf__get_value(PDF *p, const char *key, double modifier);
|
|
void pdf__set_parameter(PDF *p, const char *key, const char *value);
|
|
void pdf__set_value(PDF *p, const char *key, double value);
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_pattern.c
|
|
*
|
|
**********************/
|
|
|
|
int pdf__begin_pattern(PDF *p,
|
|
pdc_scalar width, pdc_scalar height, pdc_scalar xstep, pdc_scalar ystep,
|
|
int painttype);
|
|
|
|
void pdf__end_pattern(PDF *p);
|
|
|
|
void pdf_init_pattern(PDF *p);
|
|
void pdf_write_page_pattern(PDF *p);
|
|
void pdf_get_page_patterns(PDF *p, pdf_reslist *rl);
|
|
void pdf_mark_page_pattern(PDF *p, int n);
|
|
void pdf_cleanup_pattern(PDF *p);
|
|
void pdf_grow_pattern(PDF *p);
|
|
|
|
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_shading.c
|
|
*
|
|
**********************/
|
|
|
|
int pdf__shading(PDF *p, const char *shtype, pdc_scalar x_0, pdc_scalar y_0,
|
|
pdc_scalar x_1, pdc_scalar y_1, pdc_scalar c_1, pdc_scalar c_2,
|
|
pdc_scalar c_3, pdc_scalar c_4, const char *optlist);
|
|
int pdf__shading_pattern(PDF *p, int shading, const char *optlist);
|
|
void pdf__shfill(PDF *p, int shading);
|
|
|
|
void pdf_init_shadings(PDF *p);
|
|
void pdf_write_page_shadings(PDF *p);
|
|
void pdf_get_page_shadings(PDF *p, pdf_reslist *rl);
|
|
void pdf_mark_page_shading(PDF *p, int n);
|
|
void pdf_cleanup_shadings(PDF *p);
|
|
int pdf_get_shading_painttype(PDF *p);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_template.c
|
|
*
|
|
**********************/
|
|
|
|
int pdf__begin_template(PDF *p, pdc_scalar width, pdc_scalar height,
|
|
const char *optlist);
|
|
void pdf__end_template(PDF *p);
|
|
int pdf_embed_image(PDF *p, int im);
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_text.c
|
|
*
|
|
**********************/
|
|
|
|
void pdf__fit_textline(PDF *p, const char *text, int len,
|
|
pdc_scalar x, pdc_scalar y, const char *optlist);
|
|
double pdf__info_textline(PDF *p, const char *text, int len,
|
|
const char *keyword, const char *optlist);
|
|
void pdf__setfont(PDF *p, int font, pdc_scalar fontsize);
|
|
void pdf__set_text_pos(PDF *p, pdc_scalar x, pdc_scalar y);
|
|
void pdf__show_text(PDF *p, const char *text, int len, pdc_bool cont);
|
|
void pdf__xshow(PDF *p, const char *text, int len,
|
|
const pdc_scalar *xadvancelist);
|
|
int pdf__show_boxed(PDF *p, const char *text, int len,
|
|
pdc_scalar left, pdc_scalar top, pdc_scalar width, pdc_scalar height,
|
|
const char *hmode, const char *feature);
|
|
pdc_scalar pdf__stringwidth(PDF *p, const char *text, int len,
|
|
int font, pdc_scalar size);
|
|
|
|
void pdf_init_tstate(PDF *p);
|
|
void pdf_cleanup_page_tstate(PDF *p, pdf_ppt *ppt);
|
|
void pdf_save_tstate(PDF *p);
|
|
void pdf_restore_currto(PDF *p);
|
|
void pdf_set_tstate(PDF *p, pdc_scalar value, pdf_text_optflags flag);
|
|
double pdf_get_tstate(PDF *p, pdf_text_optflags tflag);
|
|
void pdf_end_text(PDF *p);
|
|
void pdf_reset_tstate(PDF *p);
|
|
int pdf_get_font(PDF *p);
|
|
void pdf_put_fieldtext(PDF *p, const char *text, int font);
|
|
int pdf_get_fontsize_option(PDF *p, int font, pdc_resopt *resopts,
|
|
pdc_scalar *fontsize);
|
|
|
|
|
|
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_type3.c
|
|
*
|
|
**********************/
|
|
|
|
void pdf__begin_font(PDF *p, const char *fontname, int len,
|
|
pdc_scalar a, pdc_scalar b, pdc_scalar c, pdc_scalar d,
|
|
pdc_scalar e, pdc_scalar f, const char *optlist);
|
|
void pdf__begin_glyph(PDF *p, const char *glyphname, pdc_scalar wx,
|
|
pdc_scalar llx, pdc_scalar lly, pdc_scalar urx, pdc_scalar ury);
|
|
void pdf__end_font(PDF *p);
|
|
void pdf__end_glyph(PDF *p);
|
|
|
|
int pdf_get_t3colorized(PDF *p);
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_util.c
|
|
*
|
|
**********************/
|
|
|
|
const char *pdf__utf32_to_utf16(PDF *p, const char *utf32string, int len,
|
|
const char *ordering, int *outlen);
|
|
const char *pdf__utf16_to_utf8(PDF *p, const char *utf16string, int len,
|
|
int *outlen);
|
|
const char *pdf__utf8_to_utf16(PDF *p, const char *utf8string,
|
|
const char *ordering, int *outlen);
|
|
|
|
void pdf_check_textformat(PDF *p, pdc_text_format textformat);
|
|
void pdf_check_hypertextformat(PDF *p, pdc_text_format hypertextformat);
|
|
void pdf_check_hypertextencoding(PDF *p, pdc_encoding hypertextencoding);
|
|
void pdf_put_pdfname(PDF *p, const char *name);
|
|
pdc_encoding pdf_get_hypertextencoding_opt(PDF *p, pdc_resopt *resopts,
|
|
int *codepage, pdc_bool verbose);
|
|
char *pdf_convert_hypertext_depr(PDF *p, const char *text, int len);
|
|
char *pdf_convert_hypertext(PDF *p, const char *text, int len,
|
|
pdc_text_format hypertextformat, pdc_encoding hypertextencoding,
|
|
int codepage, int *outlen, pdc_bool oututf8, pdc_bool verbose);
|
|
char *pdf_convert_pdfstring(PDF *p, const char *text, int inlen, int convflags,
|
|
int *outlen);
|
|
void pdf_put_hypertext(PDF *p, const char *text);
|
|
char *pdf_convert_name(PDF *p, const char *name, int len, int flags);
|
|
const char *pdf_convert_filename(PDF *p, const char *filename, int len,
|
|
const char *paramname, int flags);
|
|
void pdf_add_pdflib_resource(PDF *p, const char *category, const char *resname);
|
|
void pdf_put_pdffilename(PDF *p, const char *text);
|
|
void pdf_put_pdfunifilename(PDF *p, const char *text);
|
|
int pdf_check_opt_handle(void *opaque, int handle, pdc_opttype type);
|
|
void pdf_check_handle(PDF *p, int value, pdc_opttype type);
|
|
void pdf_set_clientdata(PDF *p, pdc_clientdata *clientdata);
|
|
void pdf_init_stringlists(PDF *p);
|
|
int pdf_insert_stringlist(PDF *p, char **stringlist, int ns);
|
|
void pdf_cleanup_stringlists(PDF *p);
|
|
int pdf_insert_utilstring(PDF *p, const char *utilstring, pdc_bool kdup);
|
|
const char *pdf_get_utilstring(PDF *p, int i);
|
|
int pdf_get_opt_textlist(PDF *p, const char *keyword, pdc_resopt *resopts,
|
|
pdc_encoding enc, int codepage, pdc_bool ishypertext,
|
|
const char *fieldname, char **text, char ***textlist);
|
|
char *pdf_get_opt_filename(PDF *p, const char *keyword, pdc_resopt *resopts,
|
|
pdc_encoding enc, int codepage);
|
|
char *pdf_get_opt_utf8name(PDF *p, const char *keyword, pdc_resopt *resopts);
|
|
pdc_bool pdf_get_errorpolicy(PDF *p, pdc_resopt *resopts, pdc_bool verbose);
|
|
|
|
|
|
/**********************
|
|
*
|
|
* p_xgstate.c
|
|
*
|
|
**********************/
|
|
|
|
int pdf__create_gstate(PDF *p, const char *optlist);
|
|
void pdf__set_gstate(PDF *p, int gstate);
|
|
|
|
void pdf_init_extgstates(PDF *p);
|
|
void pdf_write_page_extgstates(PDF *p);
|
|
void pdf_get_page_extgstates(PDF *p, pdf_reslist *rl);
|
|
void pdf_mark_page_extgstate(PDF *p, int n);
|
|
void pdf_write_doc_extgstates(PDF *p);
|
|
void pdf_cleanup_extgstates(PDF *p);
|
|
pdc_id pdf_get_gstate_id(PDF *p, int gstate);
|
|
|
|
|
|
|
|
|
|
#endif /* P_INTERN_H */
|
|
|
|
|
|
|
|
|
|
|
|
|