summaryrefslogtreecommitdiff
path: root/fpdfsdk/include/fpdfview.h
diff options
context:
space:
mode:
Diffstat (limited to 'fpdfsdk/include/fpdfview.h')
-rw-r--r--fpdfsdk/include/fpdfview.h127
1 files changed, 127 insertions, 0 deletions
diff --git a/fpdfsdk/include/fpdfview.h b/fpdfsdk/include/fpdfview.h
index 4dcdcf620a..161bca2809 100644
--- a/fpdfsdk/include/fpdfview.h
+++ b/fpdfsdk/include/fpdfview.h
@@ -18,6 +18,8 @@ typedef void* FPDF_MODULEMGR;
// PDF types
typedef void* FPDF_DOCUMENT;
typedef void* FPDF_PAGE;
+typedef void* FPDF_WIDGET;
+typedef void* FPDF_STRINGHANDLE;
typedef void* FPDF_PAGEOBJECT; // Page object(text, path, etc)
typedef void* FPDF_PATH;
typedef void* FPDF_CLIPPATH;
@@ -37,6 +39,9 @@ typedef void* FPDF_LINK;
typedef void* FPDF_PAGERANGE;
// Basic data types
+typedef void* FPDF_LPVOID;
+typedef void const* FPDF_LPCVOID;
+typedef int FPDF_RESULT;
typedef int FPDF_BOOL;
typedef int FPDF_ERROR;
typedef unsigned long FPDF_DWORD;
@@ -54,6 +59,7 @@ typedef enum _FPDF_DUPLEXTYPE_ {
// String types
typedef unsigned short FPDF_WCHAR;
typedef unsigned char const* FPDF_LPCBYTE;
+typedef char const* FPDF_LPCSTR;
// FPDFSDK may use three types of strings: byte string, wide string (UTF-16LE encoded), and platform dependent string
typedef const char* FPDF_BYTESTRING;
@@ -61,6 +67,26 @@ typedef const char* FPDF_BYTESTRING;
typedef const unsigned short* FPDF_WIDESTRING; // Foxit PDF SDK always use UTF-16LE encoding wide string,
// each character use 2 bytes (except surrogation), with low byte first.
+#ifndef _FPDF_DEF_STR_
+#define _FPDF_DEF_STR_
+/** @brief Structure for byte string.
+ *
+ * @note In SDK, a byte string commonly means a UTF-16LE format string.
+ */
+typedef struct _FPDF_BSTR
+{
+ /**
+ * @brief String buffer.
+ */
+ char* str;
+ /**
+ * @brief Length of a string, in bytes.
+ */
+ int len;
+} FPDF_BSTR;
+
+#endif
+
// For Windows programmers: for most case it's OK to treat FPDF_WIDESTRING as Windows unicode string,
// however, special care needs to be taken if you expect to process Unicode larger than 0xffff.
// For Linux/Unix programmers: most compiler/library environment uses 4 bytes for a Unicode character,
@@ -166,6 +192,9 @@ DLLEXPORT void STDCALL FPDF_SetSandBoxPolicy(FPDF_DWORD policy, FPDF_BOOL enable
* @note Loaded document can be closed by FPDF_CloseDocument.
* If this function fails, you can use FPDF_GetLastError() to retrieve
* the reason why it fails.
+* The application should call ::FPDF_LoadXFA function after PDF document loaded
+* to support XFA fields in fpdfformfill.h file.
+*
* @retval A handle to the loaded document. If failed, NULL is returned.
*/
DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path,
@@ -185,6 +214,9 @@ DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path,
// Loaded document can be closed by FPDF_CloseDocument.
// If this function fails, you can use FPDF_GetLastError() to retrieve
// the reason why it fails.
+// Notes:
+// The application should call ::FPDF_LoadXFA function after PDF document loaded
+// to support XFA fields in fpdfformfill.h file.
//
DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadMemDocument(const void* data_buf,
int size, FPDF_BYTESTRING password);
@@ -206,6 +238,78 @@ typedef struct {
void* m_Param;
} FPDF_FILEACCESS;
+/**
+ * @brief Structure for file reading or writing (I/O).
+ *
+ * @note This is a handler and should be implemented by callers.
+ */
+typedef struct _FPDF_FILEHANDLER
+{
+ /**
+ * @brief User-defined data.
+ * @note Callers can use this field to track controls.
+ */
+ FPDF_LPVOID clientData;
+ /**
+ * @brief Callback function to release the current file stream object.
+ *
+ * @param[in] clientData Pointer to user-defined data.
+ *
+ * @return None.
+ */
+ void (*Release)(FPDF_LPVOID clientData);
+ /**
+ * @brief Callback function to retrieve the current file stream size.
+ *
+ * @param[in] clientData Pointer to user-defined data.
+ *
+ * @return Size of file stream.
+ */
+ FPDF_DWORD (*GetSize)(FPDF_LPVOID clientData);
+ /**
+ * @brief Callback function to read data from the current file stream.
+ *
+ * @param[in] clientData Pointer to user-defined data.
+ * @param[in] offset Offset position starts from the beginning of file stream. This parameter indicates reading position.
+ * @param[in] buffer Memory buffer to store data which are read from file stream. This parameter should not be <b>NULL</b>.
+ * @param[in] size Size of data which should be read from file stream, in bytes. The buffer indicated by the parameter <i>buffer</i> should be enough to store specified data.
+ *
+ * @return 0 for success, other value for failure.
+ */
+ FPDF_RESULT (*ReadBlock)(FPDF_LPVOID clientData, FPDF_DWORD offset, FPDF_LPVOID buffer, FPDF_DWORD size);
+ /**
+ * @brief Callback function to write data into the current file stream.
+ *
+ * @param[in] clientData Pointer to user-defined data.
+ * @param[in] offset Offset position starts from the beginning of file stream. This parameter indicates writing position.
+ * @param[in] buffer Memory buffer contains data which is written into file stream. This parameter should not be <b>NULL</b>.
+ * @param[in] size Size of data which should be written into file stream, in bytes.
+ *
+ * @return 0 for success, other value for failure.
+ */
+ FPDF_RESULT (*WriteBlock)(FPDF_LPVOID clientData, FPDF_DWORD offset, FPDF_LPCVOID buffer, FPDF_DWORD size);
+ /**
+ * @brief Callback function to flush all internal accessing buffers.
+ *
+ * @param[in] clientData Pointer to user-defined data.
+ *
+ * @return 0 for success, other value for failure.
+ */
+ FPDF_RESULT (*Flush)(FPDF_LPVOID clientData);
+ /**
+ * @brief Callback function to change file size.
+ *
+ * @details This function is called under writing mode usually. Implementer can determine whether to realize it based on application requests.
+ *
+ * @param[in] clientData Pointer to user-defined data.
+ * @param[in] size New size of file stream, in bytes.
+ *
+ * @return 0 for success, other value for failure.
+ */
+ FPDF_RESULT (*Truncate)(FPDF_LPVOID clientData, FPDF_DWORD size);
+
+} FPDF_FILEHANDLER, *FPDF_LPFILEHANDLER;
+
// Function: FPDF_LoadCustomDocument
// Load PDF document from a custom access descriptor.
// Parameters:
@@ -216,6 +320,10 @@ typedef struct {
// Comments:
// The application should maintain the file resources being valid until the PDF document close.
// Loaded document can be closed by FPDF_CloseDocument.
+// Notes:
+// The application should call ::FPDF_LoadXFA function after PDF document loaded
+// to support XFA fields in fpdfformfill.h file.
+//
DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadCustomDocument(FPDF_FILEACCESS* pFileAccess,
FPDF_BYTESTRING password);
@@ -228,6 +336,7 @@ DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadCustomDocument(FPDF_FILEACCESS* pFileAc
// TRUE if this call succeed, If failed, FALSE is returned.
// Comments:
// If the document is created by function ::FPDF_CreateNewDocument, then this function would always fail.
+//
DLLEXPORT FPDF_BOOL STDCALL FPDF_GetFileVersion(FPDF_DOCUMENT doc, int* fileVersion);
#define FPDF_ERR_SUCCESS 0 // No error.
@@ -237,6 +346,8 @@ DLLEXPORT FPDF_BOOL STDCALL FPDF_GetFileVersion(FPDF_DOCUMENT doc, int* fileVers
#define FPDF_ERR_PASSWORD 4 // Password required or incorrect password.
#define FPDF_ERR_SECURITY 5 // Unsupported security scheme.
#define FPDF_ERR_PAGE 6 // Page not found or content error.
+#define FPDF_ERR_XFALOAD 7 // Load XFA error.
+#define FPDF_ERR_XFALAYOUT 8 // Layout XFA error.
// Function: FPDF_GetLastError
// Get last error code when an SDK function failed.
@@ -354,6 +465,8 @@ DLLEXPORT int STDCALL FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document, int page_i
// flags - 0 for normal display, or combination of flags defined above.
// Return value:
// None.
+// Notes:
+// The method can not support to render the page for the document consists of dynamic XFA fields.
//
DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc, FPDF_PAGE page, int start_x, int start_y, int size_x, int size_y,
int rotate, int flags);
@@ -374,6 +487,8 @@ DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc, FPDF_PAGE page, int start_x, int
// flags - 0 for normal display, or combination of flags defined above.
// Return value:
// None.
+// Notes:
+// The method can not support to render the page for the document consists of dynamic XFA fields.
//
DLLEXPORT void STDCALL FPDF_RenderPageBitmap(FPDF_BITMAP bitmap, FPDF_PAGE page, int start_x, int start_y,
int size_x, int size_y, int rotate, int flags);
@@ -612,6 +727,18 @@ DLLEXPORT FPDF_DUPLEXTYPE STDCALL FPDF_VIEWERREF_GetDuplex(FPDF_DOCUMENT documen
//
DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDestByName(FPDF_DOCUMENT document,FPDF_BYTESTRING name);
+// Function: FPDF_BStr_Init
+// Helper function to initialize a byte string.
+DLLEXPORT FPDF_RESULT STDCALL FPDF_BStr_Init(FPDF_BSTR* str);
+
+// Function: FPDF_BStr_Set
+// Helper function to set string data.
+DLLEXPORT FPDF_RESULT STDCALL FPDF_BStr_Set(FPDF_BSTR* str, FPDF_LPCSTR bstr, int length);
+
+// Function: FPDF_BStr_Clear
+// Helper function to clear a byte string.
+DLLEXPORT FPDF_RESULT STDCALL FPDF_BStr_Clear(FPDF_BSTR* str);
+
#ifdef __cplusplus
};
#endif