📄 xpdfpluginapi.h
字号:
/* * XpdfPluginAPI.h * * Copyright 2004 Glyph & Cog, LLC */#ifndef XPDFPLUGINAPI_H#define XPDFPLUGINAPI_H#ifdef _WIN32#include <windows.h>#else#define Object XtObject#include <X11/Intrinsic.h>#undef Object#endif#ifdef __cplusplusextern "C" {#endif/*------------------------------------------------------------------------ * Macros *------------------------------------------------------------------------*//* * The current API version. */#define xpdfPluginAPIVersion 1#ifdef _WIN32# ifdef __cplusplus# define PLUGINFUNC(retType) extern "C" __declspec(dllexport) retType# else# define PLUGINFUNC(retType) extern __declspec(dllexport) retType# endif#else# ifdef __cplusplus# define PLUGINFUNC(retType) extern "C" retType# else# define PLUGINFUNC(retType) extern retType# endif#endif/*------------------------------------------------------------------------ * Plugin setup/cleanup *------------------------------------------------------------------------*//* * All plugins are required to implement two functions: * * -- Initialize the plugin. Returns non-zero if successful. * PLUGINFUNC(XpdfBool) xpdfInitPlugin(void); * * -- Free the plugin. * PLUGINFUNC(void) xpdfFreePlugin(void); *//*------------------------------------------------------------------------ * Types *------------------------------------------------------------------------*//* * Standard C boolean -- zero = false, non-zero = true. */typedef int XpdfBool;#define xpdfTrue 1#define xpdfFalse 0/* * PDF document handle. */typedef struct _XpdfDoc *XpdfDoc;/* * PDF object handle. */typedef struct _XpdfObject *XpdfObject;/* * Document access permissions. Any of these can be bitwise 'or'ed * together. If xpdfPermissionOpen is not included, the document * cannot be opened at all, and the other bits are ignored. */typedef unsigned int XpdfPermission;#define xpdfPermissionOpen (1 << 0)#define xpdfPermissionPrint (1 << 2)#define xpdfPermissionChange (1 << 3)#define xpdfPermissionCopy (1 << 4)#define xpdfPermissionNotes (1 << 5)/*------------------------------------------------------------------------ * Security handler *------------------------------------------------------------------------*//* * XpdfSecurityHandler - a security handler plugin should create one * of these and pass it to xpdfRegisterSecurityHandler. */#ifdef __cplusplusstruct XpdfSecurityHandler {#elsetypedef struct {#endif /* * Version of the security handler spec (this document) -- use * xpdfPluginAPIVersion. */ int version; /* * Security handler name. */ char *name; /* * Any global data the security handler needs. XpdfViewer will pass * this pointer to all handler functions as the <handlerData> * argument. */ void *handlerData; /* * Allocate and initialize data for a new document. XpdfViewer will * pass the returned pointer to all other handler functions as the * <docData> argument. Returns non-zero if successful. */ XpdfBool (*newDoc)(void *handlerData, XpdfDoc doc, XpdfObject encryptDict, void **docData); /* * Free the data allocated by newDoc. */ void (*freeDoc)(void *handlerData, void *docData); /* * Construct authorization data based on the supplied owner and user * passwords (either or both of which may be NULL). This function * is called in "batch" mode, i.e., if the password was supplied on * the command line or via an Xpdf library API. It should not * generate any user interaction (e.g., a password dialog). It is * not required to support this function: the makeAuthData function * pointer can be set to NULL. Returns non-zero if successful. */ XpdfBool (*makeAuthData)(void *handlerData, void *docData, char *ownerPassword, char *userPassword, void **authData); /* * Request any needed information (e.g., a password) from the user, * and construct an authorization data object. Returns non-zero if * successful. */ XpdfBool (*getAuthData)(void *handlerData, void *docData, void **authData); /* * Free the data allocated by getAuthData. */ void (*freeAuthData)(void *handlerData, void *docData, void *authData); /* * Request permission to access the document. This returns all * permissions granted by authData. */ XpdfPermission (*authorize)(void *handlerData, void *docData, void *authData); /* * Get the decryption key and algorithm version associated with the * document. Returns non-zero if successful. */ XpdfBool (*getKey)(void *handlerData, void *docData, char **key, int *keyLen, int *cryptVersion); /* * Free the data allocated by getKey. */ void (*freeKey)(void *handlerData, void *docData, char *key, int keyLen);#ifdef __cplusplus};#else} XpdfSecurityHandler;#endif/*------------------------------------------------------------------------*/typedef struct { int version;/*------------------------------------------------------------------------ * Document access functions *------------------------------------------------------------------------*//* * Get a document's info dictionary. (The returned object must be * freed with xpdfFreeObj.) */XpdfObject (*_xpdfGetInfoDict)(XpdfDoc doc);/* * Get a document's catalog ("root") dictionary. (The returned object * must be freed with xpdfFreeObj.) */XpdfObject (*_xpdfGetCatalog)(XpdfDoc doc);#ifdef _WIN32/* * Get the handle for the viewer window associated with the specified * document. [Win32 only] */HWND (*_xpdfWin32GetWindow)(XpdfDoc doc);#else/* * Get the Motif widget for the viewer window associated with the * specified document. [X only] */Widget (*_xpdfXGetWindow)(XpdfDoc doc);#endif/*------------------------------------------------------------------------ * Object access functions *------------------------------------------------------------------------*//* * Check an object's type. */XpdfBool (*_xpdfObjIsBool)(XpdfObject obj);XpdfBool (*_xpdfObjIsInt)(XpdfObject obj);XpdfBool (*_xpdfObjIsReal)(XpdfObject obj);XpdfBool (*_xpdfObjIsString)(XpdfObject obj);XpdfBool (*_xpdfObjIsName)(XpdfObject obj);XpdfBool (*_xpdfObjIsNull)(XpdfObject obj);XpdfBool (*_xpdfObjIsArray)(XpdfObject obj);XpdfBool (*_xpdfObjIsDict)(XpdfObject obj);XpdfBool (*_xpdfObjIsStream)(XpdfObject obj);XpdfBool (*_xpdfObjIsRef)(XpdfObject obj);/* * Value access. * (Objects returned by xpdfArrayGet and xpdfDictGet must be freed * with xpdfFreeObj.) */XpdfBool (*_xpdfBoolValue)(XpdfObject obj);int (*_xpdfIntValue)(XpdfObject obj);double (*_xpdfRealValue)(XpdfObject obj);int (*_xpdfStringLength)(XpdfObject obj);char *(*_xpdfStringValue)(XpdfObject obj);char *(*_xpdfNameValue)(XpdfObject obj);int (*_xpdfArrayLength)(XpdfObject obj);XpdfObject (*_xpdfArrayGet)(XpdfObject obj, int idx);XpdfObject (*_xpdfDictGet)(XpdfObject obj, char *key);/* * Object destruction. NB: *all* objects must be freed after use. */void (*_xpdfFreeObj)(XpdfObject obj);/*------------------------------------------------------------------------ * Memory allocation functions *------------------------------------------------------------------------*/void *(*_xpdfMalloc)(int size);void *(*_xpdfRealloc)(void *p, int size);void (*_xpdfFree)(void *p);/*------------------------------------------------------------------------ * Security handler functions *------------------------------------------------------------------------*//* * Register a new security handler. */void (*_xpdfRegisterSecurityHandler)(XpdfSecurityHandler *handler);/*------------------------------------------------------------------------*/} XpdfPluginVecTable;#ifdef _WIN32extern __declspec(dllexport) XpdfPluginVecTable xpdfPluginVecTable;#define xpdfPluginSetup \ extern __declspec(dllexport) \ XpdfPluginVecTable xpdfPluginVecTable = {xpdfPluginAPIVersion};#elseextern XpdfPluginVecTable xpdfPluginVecTable;#define xpdfPluginSetup \ XpdfPluginVecTable xpdfPluginVecTable = {xpdfPluginAPIVersion};#endif#define xpdfGetInfoDict (*xpdfPluginVecTable._xpdfGetInfoDict)#define xpdfGetCatalog (*xpdfPluginVecTable._xpdfGetCatalog)#ifdef _WIN32#define xpdfWin32GetWindow (*xpdfPluginVecTable._xpdfWin32GetWindow)#else#define xpdfXGetWindow (*xpdfPluginVecTable._xpdfXGetWindow)#endif#define xpdfObjIsBool (*xpdfPluginVecTable._xpdfObjIsBool)#define xpdfObjIsInt (*xpdfPluginVecTable._xpdfObjIsInt)#define xpdfObjIsReal (*xpdfPluginVecTable._xpdfObjIsReal)#define xpdfObjIsString (*xpdfPluginVecTable._xpdfObjIsString)#define xpdfObjIsName (*xpdfPluginVecTable._xpdfObjIsName)#define xpdfObjIsNull (*xpdfPluginVecTable._xpdfObjIsNull)#define xpdfObjIsArray (*xpdfPluginVecTable._xpdfObjIsArray)#define xpdfObjIsDict (*xpdfPluginVecTable._xpdfObjIsDict)#define xpdfObjIsStream (*xpdfPluginVecTable._xpdfObjIsStream)#define xpdfObjIsRef (*xpdfPluginVecTable._xpdfObjIsRef)#define xpdfBoolValue (*xpdfPluginVecTable._xpdfBoolValue)#define xpdfIntValue (*xpdfPluginVecTable._xpdfIntValue)#define xpdfRealValue (*xpdfPluginVecTable._xpdfRealValue)#define xpdfStringLength (*xpdfPluginVecTable._xpdfStringLength)#define xpdfStringValue (*xpdfPluginVecTable._xpdfStringValue)#define xpdfNameValue (*xpdfPluginVecTable._xpdfNameValue)#define xpdfArrayLength (*xpdfPluginVecTable._xpdfArrayLength)#define xpdfArrayGet (*xpdfPluginVecTable._xpdfArrayGet)#define xpdfDictGet (*xpdfPluginVecTable._xpdfDictGet)#define xpdfFreeObj (*xpdfPluginVecTable._xpdfFreeObj)#define xpdfMalloc (*xpdfPluginVecTable._xpdfMalloc)#define xpdfRealloc (*xpdfPluginVecTable._xpdfRealloc)#define xpdfFree (*xpdfPluginVecTable._xpdfFree)#define xpdfRegisterSecurityHandler (*xpdfPluginVecTable._xpdfRegisterSecurityHandler)#ifdef __cplusplus}#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -