OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 // NOTE: External docs refer to this file as "fpdfview.h", so do not rename | 7 // NOTE: External docs refer to this file as "fpdfview.h", so do not rename |
8 // despite lack of consitency with other public files. | 8 // despite lack of consitency with other public files. |
9 | 9 |
10 #ifndef PUBLIC_FPDFVIEW_H_ | 10 #ifndef PUBLIC_FPDFVIEW_H_ |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 | 60 |
61 // String types | 61 // String types |
62 typedef unsigned short FPDF_WCHAR; | 62 typedef unsigned short FPDF_WCHAR; |
63 typedef unsigned char const* FPDF_LPCBYTE; | 63 typedef unsigned char const* FPDF_LPCBYTE; |
64 typedef char const* FPDF_LPCSTR; | 64 typedef char const* FPDF_LPCSTR; |
65 | 65 |
66 // FPDFSDK may use three types of strings: byte string, wide string (UTF-16LE | 66 // FPDFSDK may use three types of strings: byte string, wide string (UTF-16LE |
67 // encoded), and platform dependent string | 67 // encoded), and platform dependent string |
68 typedef const char* FPDF_BYTESTRING; | 68 typedef const char* FPDF_BYTESTRING; |
69 | 69 |
70 typedef const unsigned short* | 70 // FPDFSDK always uses UTF-16LE encoded wide strings, each character uses 2 |
71 FPDF_WIDESTRING; // Foxit PDF SDK always use UTF-16LE encoding wide string, | 71 // bytes (except surrogation), with the low byte first. |
72 // each character use 2 bytes (except surrogation), with low byte first. | 72 typedef const unsigned short* FPDF_WIDESTRING; |
73 | 73 |
74 #ifndef _FPDF_DEF_STR_ | 74 #ifndef _FPDF_DEF_STR_ |
75 #define _FPDF_DEF_STR_ | 75 #define _FPDF_DEF_STR_ |
76 /** @brief Structure for byte string. | 76 // Structure for a byte string. |
77 * | 77 // Note, a byte string commonly means a UTF-16LE formated string. |
78 * @note In SDK, a byte string commonly means a UTF-16LE format string. | |
79 */ | |
80 typedef struct _FPDF_BSTR { | 78 typedef struct _FPDF_BSTR { |
81 /** | 79 // String buffer. |
82 * @brief String buffer. | |
83 */ | |
84 char* str; | 80 char* str; |
85 /** | 81 // Length of the string, in bytes. |
86 * @brief Length of a string, in bytes. | |
87 */ | |
88 int len; | 82 int len; |
89 } FPDF_BSTR; | 83 } FPDF_BSTR; |
90 | 84 |
91 #endif | 85 #endif |
92 | 86 |
93 // For Windows programmers: for most case it's OK to treat FPDF_WIDESTRING as | 87 // For Windows programmers: In most cases it's OK to treat FPDF_WIDESTRING as a |
94 // Windows unicode string, | 88 // Windows unicode string, however, special care needs to be taken if you |
95 // however, special care needs to be taken if you expect to process | 89 // expect to process Unicode larger than 0xffff. |
96 // Unicode larger than 0xffff. | 90 // |
97 // For Linux/Unix programmers: most compiler/library environment uses 4 bytes | 91 // For Linux/Unix programmers: most compiler/library environments use 4 bytes |
98 // for a Unicode character, | 92 // for a Unicode character, and you have to convert between FPDF_WIDESTRING and |
99 // you have to convert between FPDF_WIDESTRING and system wide string by | 93 // system wide string by yourself. |
100 // yourself. | |
101 | 94 |
102 #ifdef _WIN32_WCE | 95 #ifdef _WIN32_WCE |
103 typedef const unsigned short* FPDF_STRING; | 96 typedef const unsigned short* FPDF_STRING; |
104 #else | 97 #else |
105 typedef const char* FPDF_STRING; | 98 typedef const char* FPDF_STRING; |
106 #endif | 99 #endif |
107 | 100 |
108 /** @brief Matrix for transformation. */ | 101 // Matrix for transformation. |
109 typedef struct _FS_MATRIX_ { | 102 typedef struct _FS_MATRIX_ { |
110 float a; /**< @brief Coefficient a.*/ | 103 float a; |
111 float b; /**< @brief Coefficient b.*/ | 104 float b; |
112 float c; /**< @brief Coefficient c.*/ | 105 float c; |
113 float d; /**< @brief Coefficient d.*/ | 106 float d; |
114 float e; /**< @brief Coefficient e.*/ | 107 float e; |
115 float f; /**< @brief Coefficient f.*/ | 108 float f; |
116 } FS_MATRIX; | 109 } FS_MATRIX; |
117 | 110 |
118 /** @brief Rectangle area(float) in device or page coordination system. */ | 111 // Rectangle area(float) in device or page coordinate system. |
119 typedef struct _FS_RECTF_ { | 112 typedef struct _FS_RECTF_ { |
120 /**@{*/ | 113 // The x-coordinate of the left-top corner. |
121 /** @brief The x-coordinate of the left-top corner. */ | |
122 float left; | 114 float left; |
123 /** @brief The y-coordinate of the left-top corner. */ | 115 // The y-coordinate of the left-top corner. |
124 float top; | 116 float top; |
125 /** @brief The x-coordinate of the right-bottom corner. */ | 117 // The x-coordinate of the right-bottom corner. |
126 float right; | 118 float right; |
127 /** @brief The y-coordinate of the right-bottom corner. */ | 119 // The y-coordinate of the right-bottom corner. |
128 float bottom; | 120 float bottom; |
129 /**@}*/ | |
130 } * FS_LPRECTF, FS_RECTF; | 121 } * FS_LPRECTF, FS_RECTF; |
131 /** @brief Const Pointer to ::FS_RECTF structure.*/ | 122 |
| 123 // Const Pointer to FS_RECTF structure. |
132 typedef const FS_RECTF* FS_LPCRECTF; | 124 typedef const FS_RECTF* FS_LPCRECTF; |
133 | 125 |
134 #if defined(_WIN32) && defined(FPDFSDK_EXPORTS) | 126 #if defined(_WIN32) && defined(FPDFSDK_EXPORTS) |
135 // On Windows system, functions are exported in a DLL | 127 // On Windows system, functions are exported in a DLL |
136 #define DLLEXPORT __declspec(dllexport) | 128 #define DLLEXPORT __declspec(dllexport) |
137 #define STDCALL __stdcall | 129 #define STDCALL __stdcall |
138 #else | 130 #else |
139 #define DLLEXPORT | 131 #define DLLEXPORT |
140 #define STDCALL | 132 #define STDCALL |
141 #endif | 133 #endif |
142 | 134 |
143 // Exported Functions | 135 // Exported Functions |
144 #ifdef __cplusplus | 136 #ifdef __cplusplus |
145 extern "C" { | 137 extern "C" { |
146 #endif | 138 #endif |
147 | 139 |
148 // Function: FPDF_InitLibrary | 140 // Function: FPDF_InitLibrary |
149 // Initialize the FPDFSDK library | 141 // Initialize the FPDFSDK library |
150 // Parameters: | 142 // Parameters: |
151 // None | 143 // None |
152 // Return value: | 144 // Return value: |
153 // None. | 145 // None. |
154 // Comments: | 146 // Comments: |
155 // Convenience function to call FPDF_InitLibraryWithConfig() for | 147 // Convenience function to call FPDF_InitLibraryWithConfig() for |
156 // backwards comatibility purposes. | 148 // backwards comatibility purposes. |
157 DLLEXPORT void STDCALL FPDF_InitLibrary(); | 149 DLLEXPORT void STDCALL FPDF_InitLibrary(); |
158 | 150 |
159 // Process-wide options for initializing library. | 151 // Process-wide options for initializing the library. |
160 typedef struct FPDF_LIBRARY_CONFIG_ { | 152 typedef struct FPDF_LIBRARY_CONFIG_ { |
161 // Version number of the interface. Currently must be 2. | 153 // Version number of the interface. Currently must be 2. |
162 int version; | 154 int version; |
163 | 155 |
164 // Array of paths to scan in place of the defaults when using built-in | 156 // Array of paths to scan in place of the defaults when using built-in |
165 // FXGE font loading code. The array is terminated by a NULL pointer. | 157 // FXGE font loading code. The array is terminated by a NULL pointer. |
166 // The Array may be NULL itself to use the default paths. May be ignored | 158 // The Array may be NULL itself to use the default paths. May be ignored |
167 // entirely depending upon the platform. | 159 // entirely depending upon the platform. |
168 const char** m_pUserFontPaths; | 160 const char** m_pUserFontPaths; |
169 | 161 |
170 // Version 2. | 162 // Version 2. |
171 | 163 |
172 // pointer to the v8::Isolate to use, or NULL to force PDFium to create one. | 164 // pointer to the v8::Isolate to use, or NULL to force PDFium to create one. |
173 void* m_pIsolate; | 165 void* m_pIsolate; |
174 | 166 |
175 // The embedder data slot to use in the v8::Isolate to store PDFium's | 167 // The embedder data slot to use in the v8::Isolate to store PDFium's |
176 // per-isolate data. The value needs to be between 0 and | 168 // per-isolate data. The value needs to be between 0 and |
177 // v8::Internals::kNumIsolateDataLots (exclusive). Note that 0 is fine | 169 // v8::Internals::kNumIsolateDataLots (exclusive). Note that 0 is fine |
178 // for most embedders. | 170 // for most embedders. |
179 unsigned int m_v8EmbedderSlot; | 171 unsigned int m_v8EmbedderSlot; |
180 } FPDF_LIBRARY_CONFIG; | 172 } FPDF_LIBRARY_CONFIG; |
181 | 173 |
182 // Function: FPDF_InitLibraryWithConfig | 174 // Function: FPDF_InitLibraryWithConfig |
183 // Initialize the FPDFSDK library | 175 // Initialize the FPDFSDK library |
184 // Parameters: | 176 // Parameters: |
185 // cfg - configuration information as above. | 177 // config - configuration information as above. |
186 // Return value: | 178 // Return value: |
187 // None. | 179 // None. |
188 // Comments: | 180 // Comments: |
189 // You have to call this function before you can call any PDF | 181 // You have to call this function before you can call any PDF |
190 // processing functions. | 182 // processing functions. |
191 DLLEXPORT void STDCALL | 183 DLLEXPORT void STDCALL |
192 FPDF_InitLibraryWithConfig(const FPDF_LIBRARY_CONFIG* config); | 184 FPDF_InitLibraryWithConfig(const FPDF_LIBRARY_CONFIG* config); |
193 | 185 |
194 // Function: FPDF_DestroyLibary | 186 // Function: FPDF_DestroyLibary |
195 // Release all resources allocated by the FPDFSDK library. | 187 // Release all resources allocated by the FPDFSDK library. |
196 // Parameters: | 188 // Parameters: |
197 // None. | 189 // None. |
198 // Return value: | 190 // Return value: |
199 // None. | 191 // None. |
200 // Comments: | 192 // Comments: |
201 // You can call this function to release all memory blocks allocated by | 193 // You can call this function to release all memory blocks allocated by |
202 // the library. | 194 // the library. |
203 // After this function called, you should not call any PDF processing | 195 // After this function is called, you should not call any PDF |
204 // functions. | 196 // processing functions. |
205 DLLEXPORT void STDCALL FPDF_DestroyLibrary(); | 197 DLLEXPORT void STDCALL FPDF_DestroyLibrary(); |
206 | 198 |
207 // Policy for accessing the local machine time. | 199 // Policy for accessing the local machine time. |
208 #define FPDF_POLICY_MACHINETIME_ACCESS 0 | 200 #define FPDF_POLICY_MACHINETIME_ACCESS 0 |
209 | 201 |
210 // Function: FPDF_SetSandBoxPolicy | 202 // Function: FPDF_SetSandBoxPolicy |
211 // Set the policy for the sandbox environment. | 203 // Set the policy for the sandbox environment. |
212 // Parameters: | 204 // Parameters: |
213 // policy - The specified policy for setting, for | 205 // policy - The specified policy for setting, for example: |
214 // example:FPDF_POLICY_MACHINETIME_ACCESS. | 206 // FPDF_POLICY_MACHINETIME_ACCESS. |
215 // enable - True for enable, False for disable the policy. | 207 // enable - True to enable, false to disable the policy. |
216 // Return value: | 208 // Return value: |
217 // None. | 209 // None. |
218 DLLEXPORT void STDCALL FPDF_SetSandBoxPolicy(FPDF_DWORD policy, | 210 DLLEXPORT void STDCALL FPDF_SetSandBoxPolicy(FPDF_DWORD policy, |
219 FPDF_BOOL enable); | 211 FPDF_BOOL enable); |
220 | 212 |
221 // Function: FPDF_LoadDocument | 213 // Function: FPDF_LoadDocument |
222 // Open and load a PDF document. | 214 // Open and load a PDF document. |
223 // Parameters: | 215 // Parameters: |
224 // file_path [in] - Path to the PDF file (including extension). | 216 // file_path - Path to the PDF file (including extension). |
225 // password [in] - A string used as the password for PDF file. | 217 // password - A string used as the password for the PDF file. |
226 // If no password needed, empty or NULL can be used. | 218 // If no password is needed, empty or NULL can be used. |
227 // Return value: | 219 // Return value: |
228 // A handle to the loaded document, or NULL on failure. | 220 // A handle to the loaded document, or NULL on failure. |
229 // Comments: | 221 // Comments: |
230 // Loaded document can be closed by FPDF_CloseDocument(). | 222 // Loaded document can be closed by FPDF_CloseDocument(). |
231 // If this function fails, you can use FPDF_GetLastError() to retrieve | 223 // If this function fails, you can use FPDF_GetLastError() to retrieve |
232 // the reason why it failed. | 224 // the reason why it failed. |
233 // The application should call ::FPDF_LoadXFA function after PDF | 225 // The application should call ::FPDF_LoadXFA function after PDF |
234 // document loaded | 226 // document loaded |
235 // to support XFA fields in fpdfformfill.h file. | 227 // to support XFA fields in fpdfformfill.h file. |
236 DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path, | 228 DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path, |
237 FPDF_BYTESTRING password); | 229 FPDF_BYTESTRING password); |
238 | 230 |
239 // Function: FPDF_LoadMemDocument | 231 // Function: FPDF_LoadMemDocument |
240 // Open and load a PDF document from memory. | 232 // Open and load a PDF document from memory. |
241 // Parameters: | 233 // Parameters: |
242 // data_buf - Pointer to a buffer containing the PDF document. | 234 // data_buf - Pointer to a buffer containing the PDF document. |
243 // size - Number of bytes in the PDF document. | 235 // size - Number of bytes in the PDF document. |
244 // password - A string used as the password for PDF file. | 236 // password - A string used as the password for the PDF file. |
245 // If no password needed, empty or NULL can be used. | 237 // If no password is needed, empty or NULL can be used. |
246 // Return value: | 238 // Return value: |
247 // A handle to the loaded document. If failed, NULL is returned. | 239 // A handle to the loaded document, or NULL on failure. |
248 // Comments: | 240 // Comments: |
249 // The memory buffer must remain valid when the document is open. | 241 // The memory buffer must remain valid when the document is open. |
250 // Loaded document can be closed by FPDF_CloseDocument. | 242 // The loaded document can be closed by FPDF_CloseDocument. |
251 // If this function fails, you can use FPDF_GetLastError() to retrieve | 243 // If this function fails, you can use FPDF_GetLastError() to retrieve |
252 // the reason why it fails. | 244 // the reason why it failed. |
253 // Notes: | 245 // Notes: |
254 // The application should call ::FPDF_LoadXFA function after PDF | 246 // The application should call FPDF_LoadXFA function after the |
255 // document loaded | 247 // document is loaded to support form fields. |
256 // to support XFA fields in fpdfformfill.h file. | |
257 // | |
258 DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadMemDocument(const void* data_buf, | 248 DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadMemDocument(const void* data_buf, |
259 int size, | 249 int size, |
260 FPDF_BYTESTRING password); | 250 FPDF_BYTESTRING password); |
261 | 251 |
262 // Structure for custom file access. | 252 // Structure for custom file access. |
263 typedef struct { | 253 typedef struct { |
264 // File length, in bytes. | 254 // File length, in bytes. |
265 unsigned long m_FileLen; | 255 unsigned long m_FileLen; |
266 | 256 |
267 // A function pointer for getting a block of data from specific position. | 257 // A function pointer for getting a block of data from a specific position. |
268 // Position is specified by byte offset from beginning of the file. | 258 // Position is specified by byte offset from the beginning of the file. |
269 // The position and size will never go out range of file length. | 259 // The position and size will never go out of range of the file length. |
270 // It may be possible for FPDFSDK to call this function multiple times for | 260 // It may be possible for FPDFSDK to call this function multiple times for |
271 // same position. | 261 // the same position. |
272 // Return value: should be non-zero if successful, zero for error. | 262 // Return value: should be non-zero if successful, zero for error. |
273 int (*m_GetBlock)(void* param, | 263 int (*m_GetBlock)(void* param, |
274 unsigned long position, | 264 unsigned long position, |
275 unsigned char* pBuf, | 265 unsigned char* pBuf, |
276 unsigned long size); | 266 unsigned long size); |
277 | 267 |
278 // A custom pointer for all implementation specific data. | 268 // A custom pointer for all implementation specific data. This pointer will |
279 // This pointer will be used as the first parameter to m_GetBlock callback. | 269 // be used as the first parameter to the m_GetBlock callback. |
280 void* m_Param; | 270 void* m_Param; |
281 } FPDF_FILEACCESS; | 271 } FPDF_FILEACCESS; |
282 | 272 |
283 /** | 273 /** |
284 * @brief Structure for file reading or writing (I/O). | 274 * @brief Structure for file reading or writing (I/O). |
285 * | 275 * |
286 * @note This is a handler and should be implemented by callers. | 276 * @note This is a handler and should be implemented by callers. |
287 */ | 277 */ |
288 typedef struct _FPDF_FILEHANDLER { | 278 typedef struct _FPDF_FILEHANDLER { |
289 /** | 279 /** |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
355 * | 345 * |
356 * @return 0 for success, other value for failure. | 346 * @return 0 for success, other value for failure. |
357 */ | 347 */ |
358 FPDF_RESULT (*Truncate)(FPDF_LPVOID clientData, FPDF_DWORD size); | 348 FPDF_RESULT (*Truncate)(FPDF_LPVOID clientData, FPDF_DWORD size); |
359 | 349 |
360 } FPDF_FILEHANDLER, *FPDF_LPFILEHANDLER; | 350 } FPDF_FILEHANDLER, *FPDF_LPFILEHANDLER; |
361 | 351 |
362 // Function: FPDF_LoadCustomDocument | 352 // Function: FPDF_LoadCustomDocument |
363 // Load PDF document from a custom access descriptor. | 353 // Load PDF document from a custom access descriptor. |
364 // Parameters: | 354 // Parameters: |
365 // pFileAccess - A structure for access the file. | 355 // pFileAccess - A structure for accessing the file. |
366 // password - Optional password for decrypting the PDF file. | 356 // password - Optional password for decrypting the PDF file. |
367 // Return value: | 357 // Return value: |
368 // A handle to the loaded document. If failed, NULL is returned. | 358 // A handle to the loaded document, or NULL on failure. |
369 // Comments: | 359 // Comments: |
370 // The application should maintain the file resources being valid until | 360 // The application must keep the file resources valid until the PDF |
371 // the PDF document close. | 361 // document is closed. |
372 // Loaded document can be closed by FPDF_CloseDocument. | 362 // |
| 363 // The loaded document can be closed with FPDF_CloseDocument. |
373 // Notes: | 364 // Notes: |
374 // The application should call ::FPDF_LoadXFA function after PDF | 365 // The application should call the FPDF_LoadXFA function after the |
375 // document loaded | 366 // document is loaded to support form fields. |
376 // to support XFA fields in fpdfformfill.h file. | |
377 // | |
378 DLLEXPORT FPDF_DOCUMENT STDCALL | 367 DLLEXPORT FPDF_DOCUMENT STDCALL |
379 FPDF_LoadCustomDocument(FPDF_FILEACCESS* pFileAccess, FPDF_BYTESTRING password); | 368 FPDF_LoadCustomDocument(FPDF_FILEACCESS* pFileAccess, FPDF_BYTESTRING password); |
380 | 369 |
381 // Function: FPDF_GetFileVersion | 370 // Function: FPDF_GetFileVersion |
382 // Get the file version of the specific PDF document. | 371 // Get the file version of the given PDF document. |
383 // Parameters: | 372 // Parameters: |
384 // doc - Handle to document. | 373 // doc - Handle to a document. |
385 // fileVersion - The PDF file version. File version: 14 for 1.4, 15 | 374 // fileVersion - The PDF file version. File version: 14 for 1.4, 15 |
386 // for 1.5, ... | 375 // for 1.5, ... |
387 // Return value: | 376 // Return value: |
388 // TRUE if this call succeed, If failed, FALSE is returned. | 377 // True if succeeds, false otherwise. |
389 // Comments: | 378 // Comments: |
390 // If the document is created by function ::FPDF_CreateNewDocument, | 379 // If the document was created by FPDF_CreateNewDocument, |
391 // then this function would always fail. | 380 // then this function will always fail. |
392 // | |
393 DLLEXPORT FPDF_BOOL STDCALL FPDF_GetFileVersion(FPDF_DOCUMENT doc, | 381 DLLEXPORT FPDF_BOOL STDCALL FPDF_GetFileVersion(FPDF_DOCUMENT doc, |
394 int* fileVersion); | 382 int* fileVersion); |
395 | 383 |
396 #define FPDF_ERR_SUCCESS 0 // No error. | 384 #define FPDF_ERR_SUCCESS 0 // No error. |
397 #define FPDF_ERR_UNKNOWN 1 // Unknown error. | 385 #define FPDF_ERR_UNKNOWN 1 // Unknown error. |
398 #define FPDF_ERR_FILE 2 // File not found or could not be opened. | 386 #define FPDF_ERR_FILE 2 // File not found or could not be opened. |
399 #define FPDF_ERR_FORMAT 3 // File not in PDF format or corrupted. | 387 #define FPDF_ERR_FORMAT 3 // File not in PDF format or corrupted. |
400 #define FPDF_ERR_PASSWORD 4 // Password required or incorrect password. | 388 #define FPDF_ERR_PASSWORD 4 // Password required or incorrect password. |
401 #define FPDF_ERR_SECURITY 5 // Unsupported security scheme. | 389 #define FPDF_ERR_SECURITY 5 // Unsupported security scheme. |
402 #define FPDF_ERR_PAGE 6 // Page not found or content error. | 390 #define FPDF_ERR_PAGE 6 // Page not found or content error. |
403 #define FPDF_ERR_XFALOAD 7 // Load XFA error. | 391 #define FPDF_ERR_XFALOAD 7 // Load XFA error. |
404 #define FPDF_ERR_XFALAYOUT 8 // Layout XFA error. | 392 #define FPDF_ERR_XFALAYOUT 8 // Layout XFA error. |
405 | 393 |
406 // Function: FPDF_GetLastError | 394 // Function: FPDF_GetLastError |
407 // Get last error code when an SDK function failed. | 395 // Get last error code when a function fails. |
408 // Parameters: | 396 // Parameters: |
409 // None. | 397 // None. |
410 // Return value: | 398 // Return value: |
411 // A 32-bit integer indicating error codes (defined above). | 399 // A 32-bit integer indicating error code as defined above. |
412 // Comments: | 400 // Comments: |
413 // If the previous SDK call succeeded, the return value of this | 401 // If the previous SDK call succeeded, the return value of this |
414 // function | 402 // function is not defined. |
415 // is not defined. | |
416 // | |
417 DLLEXPORT unsigned long STDCALL FPDF_GetLastError(); | 403 DLLEXPORT unsigned long STDCALL FPDF_GetLastError(); |
418 | 404 |
419 // Function: FPDF_GetDocPermission | 405 // Function: FPDF_GetDocPermission |
420 // Get file permission flags of the document. | 406 // Get file permission flags of the document. |
421 // Parameters: | 407 // Parameters: |
422 // document - Handle to document. Returned by FPDF_LoadDocument | 408 // document - Handle to a document. Returned by FPDF_LoadDocument. |
423 // function. | |
424 // Return value: | 409 // Return value: |
425 // A 32-bit integer indicating permission flags. Please refer to PDF | 410 // A 32-bit integer indicating permission flags. Please refer to the |
426 // Reference for | 411 // PDF Reference for detailed descriptions. If the document is not |
427 // detailed description. If the document is not protected, 0xffffffff | 412 // protected, 0xffffffff will be returned. |
428 // will be returned. | |
429 // | |
430 DLLEXPORT unsigned long STDCALL FPDF_GetDocPermissions(FPDF_DOCUMENT document); | 413 DLLEXPORT unsigned long STDCALL FPDF_GetDocPermissions(FPDF_DOCUMENT document); |
431 | 414 |
432 // Function: FPDF_GetSecurityHandlerRevision | 415 // Function: FPDF_GetSecurityHandlerRevision |
433 // Get the revision for security handler. | 416 // Get the revision for the security handler. |
434 // Parameters: | 417 // Parameters: |
435 // document - Handle to document. Returned by FPDF_LoadDocument | 418 // document - Handle to a document. Returned by FPDF_LoadDocument. |
436 // function. | |
437 // Return value: | 419 // Return value: |
438 // The security handler revision number. Please refer to PDF Reference | 420 // The security handler revision number. Please refer to the PDF |
439 // for | 421 // Reference for a detailed description. If the document is not |
440 // detailed description. If the document is not protected, -1 will be | 422 // protected, -1 will be returned. |
441 // returned. | |
442 // | |
443 DLLEXPORT int STDCALL FPDF_GetSecurityHandlerRevision(FPDF_DOCUMENT document); | 423 DLLEXPORT int STDCALL FPDF_GetSecurityHandlerRevision(FPDF_DOCUMENT document); |
444 | 424 |
445 // Function: FPDF_GetPageCount | 425 // Function: FPDF_GetPageCount |
446 // Get total number of pages in a document. | 426 // Get total number of pages in the document. |
447 // Parameters: | 427 // Parameters: |
448 // document - Handle to document. Returned by FPDF_LoadDocument | 428 // document - Handle to document. Returned by FPDF_LoadDocument. |
449 // function. | |
450 // Return value: | 429 // Return value: |
451 // Total number of pages in the document. | 430 // Total number of pages in the document. |
452 // | |
453 DLLEXPORT int STDCALL FPDF_GetPageCount(FPDF_DOCUMENT document); | 431 DLLEXPORT int STDCALL FPDF_GetPageCount(FPDF_DOCUMENT document); |
454 | 432 |
455 // Function: FPDF_LoadPage | 433 // Function: FPDF_LoadPage |
456 // Load a page inside a document. | 434 // Load a page inside the document. |
457 // Parameters: | 435 // Parameters: |
458 // document - Handle to document. Returned by FPDF_LoadDocument | 436 // document - Handle to document. Returned by FPDF_LoadDocument |
459 // function. | |
460 // page_index - Index number of the page. 0 for the first page. | 437 // page_index - Index number of the page. 0 for the first page. |
461 // Return value: | 438 // Return value: |
462 // A handle to the loaded page. If failed, NULL is returned. | 439 // A handle to the loaded page, or NULL if page load fails. |
463 // Comments: | 440 // Comments: |
464 // Loaded page can be rendered to devices using FPDF_RenderPage | 441 // The loaded page can be rendered to devices using FPDF_RenderPage. |
465 // function. | 442 // The loaded page can be closed using FPDF_ClosePage. |
466 // Loaded page can be closed by FPDF_ClosePage. | |
467 // | |
468 DLLEXPORT FPDF_PAGE STDCALL FPDF_LoadPage(FPDF_DOCUMENT document, | 443 DLLEXPORT FPDF_PAGE STDCALL FPDF_LoadPage(FPDF_DOCUMENT document, |
469 int page_index); | 444 int page_index); |
470 | 445 |
471 // Function: FPDF_GetPageWidth | 446 // Function: FPDF_GetPageWidth |
472 // Get page width. | 447 // Get page width. |
473 // Parameters: | 448 // Parameters: |
474 // page - Handle to the page. Returned by FPDF_LoadPage | 449 // page - Handle to the page. Returned by FPDF_LoadPage. |
475 // function. | |
476 // Return value: | 450 // Return value: |
477 // Page width (excluding non-displayable area) measured in points. | 451 // Page width (excluding non-displayable area) measured in points. |
478 // One point is 1/72 inch (around 0.3528 mm). | 452 // One point is 1/72 inch (around 0.3528 mm). |
479 // | |
480 DLLEXPORT double STDCALL FPDF_GetPageWidth(FPDF_PAGE page); | 453 DLLEXPORT double STDCALL FPDF_GetPageWidth(FPDF_PAGE page); |
481 | 454 |
482 // Function: FPDF_GetPageHeight | 455 // Function: FPDF_GetPageHeight |
483 // Get page height. | 456 // Get page height. |
484 // Parameters: | 457 // Parameters: |
485 // page - Handle to the page. Returned by FPDF_LoadPage | 458 // page - Handle to the page. Returned by FPDF_LoadPage. |
486 // function. | |
487 // Return value: | 459 // Return value: |
488 // Page height (excluding non-displayable area) measured in points. | 460 // Page height (excluding non-displayable area) measured in points. |
489 // One point is 1/72 inch (around 0.3528 mm) | 461 // One point is 1/72 inch (around 0.3528 mm) |
490 // | |
491 DLLEXPORT double STDCALL FPDF_GetPageHeight(FPDF_PAGE page); | 462 DLLEXPORT double STDCALL FPDF_GetPageHeight(FPDF_PAGE page); |
492 | 463 |
493 // Function: FPDF_GetPageSizeByIndex | 464 // Function: FPDF_GetPageSizeByIndex |
494 // Get the size of a page by index. | 465 // Get the size of the page at the given index. |
495 // Parameters: | 466 // Parameters: |
496 // document - Handle to document. Returned by FPDF_LoadDocument | 467 // document - Handle to document. Returned by FPDF_LoadDocument. |
497 // function. | |
498 // page_index - Page index, zero for the first page. | 468 // page_index - Page index, zero for the first page. |
499 // width - Pointer to a double value receiving the page width | 469 // width - Pointer to a double to receive the page width |
500 // (in points). | 470 // (in points). |
501 // height - Pointer to a double value receiving the page height | 471 // height - Pointer to a double to receive the page height |
502 // (in points). | 472 // (in points). |
503 // Return value: | 473 // Return value: |
504 // Non-zero for success. 0 for error (document or page not found). | 474 // Non-zero for success. 0 for error (document or page not found). |
505 // | |
506 DLLEXPORT int STDCALL FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document, | 475 DLLEXPORT int STDCALL FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document, |
507 int page_index, | 476 int page_index, |
508 double* width, | 477 double* width, |
509 double* height); | 478 double* height); |
510 | 479 |
511 // Page rendering flags. They can be combined with bit OR. | 480 // Page rendering flags. They can be combined with bit-wise OR. |
512 #define FPDF_ANNOT 0x01 // Set if annotations are to be rendered. | 481 // |
513 #define FPDF_LCD_TEXT \ | 482 // Set if annotations are to be rendered. |
514 0x02 // Set if using text rendering optimized for LCD display. | 483 #define FPDF_ANNOT 0x01 |
515 #define FPDF_NO_NATIVETEXT \ | 484 // Set if using text rendering optimized for LCD display. |
516 0x04 // Don't use the native text output available on some platforms | 485 #define FPDF_LCD_TEXT 0x02 |
517 #define FPDF_GRAYSCALE 0x08 // Grayscale output. | 486 // Don't use the native text output available on some platforms |
518 #define FPDF_DEBUG_INFO 0x80 // Set if you want to get some debug info. | 487 #define FPDF_NO_NATIVETEXT 0x04 |
519 // Please discuss with Foxit first if you need to collect debug info. | 488 // Grayscale output. |
520 #define FPDF_NO_CATCH 0x100 // Set if you don't want to catch exception. | 489 #define FPDF_GRAYSCALE 0x08 |
521 #define FPDF_RENDER_LIMITEDIMAGECACHE 0x200 // Limit image cache size. | 490 // Set if you want to get some debug info. |
522 #define FPDF_RENDER_FORCEHALFTONE \ | 491 #define FPDF_DEBUG_INFO 0x80 |
523 0x400 // Always use halftone for image stretching. | 492 // Set if you don't want to catch exceptions. |
524 #define FPDF_PRINTING 0x800 // Render for printing. | 493 #define FPDF_NO_CATCH 0x100 |
525 #define FPDF_REVERSE_BYTE_ORDER \ | 494 // Limit image cache size. |
526 0x10 // set whether render in a reverse Byte order, this flag only | 495 #define FPDF_RENDER_LIMITEDIMAGECACHE 0x200 |
527 // enable when render to a bitmap. | 496 // Always use halftone for image stretching. |
| 497 #define FPDF_RENDER_FORCEHALFTONE 0x400 |
| 498 // Render for printing. |
| 499 #define FPDF_PRINTING 0x800 |
| 500 // Set to disable anti-aliasing on text. |
| 501 #define FPDF_RENDER_NO_SMOOTHTEXT 0x1000 |
| 502 // Set to disable anti-aliasing on images. |
| 503 #define FPDF_RENDER_NO_SMOOTHIMAGE 0x2000 |
| 504 // Set to disable anti-aliasing on paths. |
| 505 #define FPDF_RENDER_NO_SMOOTHPATH 0x4000 |
| 506 // Set whether to render in a reverse Byte order, this flag is only used when |
| 507 // rendering to a bitmap. |
| 508 #define FPDF_REVERSE_BYTE_ORDER 0x10 |
| 509 |
528 #ifdef _WIN32 | 510 #ifdef _WIN32 |
529 // Function: FPDF_RenderPage | 511 // Function: FPDF_RenderPage |
530 // Render contents in a page to a device (screen, bitmap, or printer). | 512 // Render contents of a page to a device (screen, bitmap, or printer). |
531 // This function is only supported on Windows system. | 513 // This function is only supported on Windows. |
532 // Parameters: | 514 // Parameters: |
533 // dc - Handle to device context. | 515 // dc - Handle to the device context. |
534 // page - Handle to the page. Returned by FPDF_LoadPage | 516 // page - Handle to the page. Returned by FPDF_LoadPage. |
535 // function. | 517 // start_x - Left pixel position of the display area in |
536 // start_x - Left pixel position of the display area in the | 518 // device coordinates. |
537 // device coordinate. | 519 // start_y - Top pixel position of the display area in device |
538 // start_y - Top pixel position of the display area in the device | 520 // coordinates. |
539 // coordinate. | |
540 // size_x - Horizontal size (in pixels) for displaying the page. | 521 // size_x - Horizontal size (in pixels) for displaying the page. |
541 // size_y - Vertical size (in pixels) for displaying the page. | 522 // size_y - Vertical size (in pixels) for displaying the page. |
542 // rotate - Page orientation: 0 (normal), 1 (rotated 90 degrees | 523 // rotate - Page orientation: |
543 // clockwise), | 524 // 0 (normal) |
544 // 2 (rotated 180 degrees), 3 (rotated 90 degrees | 525 // 1 (rotated 90 degrees clockwise) |
545 // counter-clockwise). | 526 // 2 (rotated 180 degrees) |
| 527 // 3 (rotated 90 degrees counter-clockwise) |
546 // flags - 0 for normal display, or combination of flags | 528 // flags - 0 for normal display, or combination of flags |
547 // defined above. | 529 // defined above. |
548 // Return value: | 530 // Return value: |
549 // None. | 531 // None. |
550 // Notes: | 532 // Notes: |
551 // The method can not support to render the page for the document | 533 // FPDF_RenderPage can not be used if the document contains dynamic |
552 // consists of dynamic XFA fields. | 534 // form fields. |
553 // | |
554 DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc, | 535 DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc, |
555 FPDF_PAGE page, | 536 FPDF_PAGE page, |
556 int start_x, | 537 int start_x, |
557 int start_y, | 538 int start_y, |
558 int size_x, | 539 int size_x, |
559 int size_y, | 540 int size_y, |
560 int rotate, | 541 int rotate, |
561 int flags); | 542 int flags); |
562 #endif | 543 #endif |
563 | 544 |
564 // Function: FPDF_RenderPageBitmap | 545 // Function: FPDF_RenderPageBitmap |
565 // Render contents in a page to a device independent bitmap | 546 // Render contents of a page to a device independent bitmap. |
566 // Parameters: | 547 // Parameters: |
567 // bitmap - Handle to the device independent bitmap (as the | 548 // bitmap - Handle to the device independent bitmap (as the |
568 // output buffer). | 549 // output buffer). The bitmap handle can be created |
569 // Bitmap handle can be created by FPDFBitmap_Create | 550 // by FPDFBitmap_Create. |
570 // function. | |
571 // page - Handle to the page. Returned by FPDF_LoadPage | 551 // page - Handle to the page. Returned by FPDF_LoadPage |
572 // function. | 552 // start_x - Left pixel position of the display area in |
573 // start_x - Left pixel position of the display area in the | 553 // bitmap coordinates. |
574 // bitmap coordinate. | 554 // start_y - Top pixel position of the display area in bitmap |
575 // start_y - Top pixel position of the display area in the bitmap | 555 // coordinates. |
576 // coordinate. | |
577 // size_x - Horizontal size (in pixels) for displaying the page. | 556 // size_x - Horizontal size (in pixels) for displaying the page. |
578 // size_y - Vertical size (in pixels) for displaying the page. | 557 // size_y - Vertical size (in pixels) for displaying the page. |
579 // rotate - Page orientation: 0 (normal), 1 (rotated 90 degrees | 558 // rotate - Page orientation: |
580 // clockwise), | 559 // 0 (normal) |
581 // 2 (rotated 180 degrees), 3 (rotated 90 degrees | 560 // 1 (rotated 90 degrees clockwise) |
582 // counter-clockwise). | 561 // 2 (rotated 180 degrees) |
| 562 // 3 (rotated 90 degrees counter-clockwise) |
583 // flags - 0 for normal display, or combination of flags | 563 // flags - 0 for normal display, or combination of flags |
584 // defined above. | 564 // defined above. |
585 // Return value: | 565 // Return value: |
586 // None. | 566 // None. |
587 // Notes: | 567 // Notes: |
588 // The method can not support to render the page for the document | 568 // FPDF_RenderPageBitmap can not be used if the document contains |
589 // consists of dynamic XFA fields. | 569 // dynamic form fields. |
590 // | |
591 DLLEXPORT void STDCALL FPDF_RenderPageBitmap(FPDF_BITMAP bitmap, | 570 DLLEXPORT void STDCALL FPDF_RenderPageBitmap(FPDF_BITMAP bitmap, |
592 FPDF_PAGE page, | 571 FPDF_PAGE page, |
593 int start_x, | 572 int start_x, |
594 int start_y, | 573 int start_y, |
595 int size_x, | 574 int size_x, |
596 int size_y, | 575 int size_y, |
597 int rotate, | 576 int rotate, |
598 int flags); | 577 int flags); |
599 | 578 |
600 // Function: FPDF_ClosePage | 579 // Function: FPDF_ClosePage |
601 // Close a loaded PDF page. | 580 // Close a loaded PDF page. |
602 // Parameters: | 581 // Parameters: |
603 // page - Handle to the loaded page. | 582 // page - Handle to the loaded page. |
604 // Return value: | 583 // Return value: |
605 // None. | 584 // None. |
606 // | |
607 DLLEXPORT void STDCALL FPDF_ClosePage(FPDF_PAGE page); | 585 DLLEXPORT void STDCALL FPDF_ClosePage(FPDF_PAGE page); |
608 | 586 |
609 // Function: FPDF_CloseDocument | 587 // Function: FPDF_CloseDocument |
610 // Close a loaded PDF document. | 588 // Close a loaded PDF document. |
611 // Parameters: | 589 // Parameters: |
612 // document - Handle to the loaded document. | 590 // document - Handle to the loaded document. |
613 // Return value: | 591 // Return value: |
614 // None. | 592 // None. |
615 // | |
616 DLLEXPORT void STDCALL FPDF_CloseDocument(FPDF_DOCUMENT document); | 593 DLLEXPORT void STDCALL FPDF_CloseDocument(FPDF_DOCUMENT document); |
617 | 594 |
618 // Function: FPDF_DeviceToPage | 595 // Function: FPDF_DeviceToPage |
619 // Convert the screen coordinate of a point to page coordinate. | 596 // Convert the screen coordinates of a point to page coordinates. |
620 // Parameters: | 597 // Parameters: |
621 // page - Handle to the page. Returned by FPDF_LoadPage | 598 // page - Handle to the page. Returned by FPDF_LoadPage. |
622 // function. | 599 // start_x - Left pixel position of the display area in |
623 // start_x - Left pixel position of the display area in the | 600 // device coordinates. |
624 // device coordinate. | 601 // start_y - Top pixel position of the display area in device |
625 // start_y - Top pixel position of the display area in the device | 602 // coordinates. |
626 // coordinate. | |
627 // size_x - Horizontal size (in pixels) for displaying the page. | 603 // size_x - Horizontal size (in pixels) for displaying the page. |
628 // size_y - Vertical size (in pixels) for displaying the page. | 604 // size_y - Vertical size (in pixels) for displaying the page. |
629 // rotate - Page orientation: 0 (normal), 1 (rotated 90 degrees | 605 // rotate - Page orientation: |
630 // clockwise), | 606 // 0 (normal) |
631 // 2 (rotated 180 degrees), 3 (rotated 90 degrees | 607 // 1 (rotated 90 degrees clockwise) |
632 // counter-clockwise). | 608 // 2 (rotated 180 degrees) |
633 // device_x - X value in device coordinate, for the point to be | 609 // 3 (rotated 90 degrees counter-clockwise) |
634 // converted. | 610 // device_x - X value in device coordinates to be converted. |
635 // device_y - Y value in device coordinate, for the point to be | 611 // device_y - Y value in device coordinates to be converted. |
636 // converted. | 612 // page_x - A pointer to a double receiving the converted X |
637 // page_x - A Pointer to a double receiving the converted X | 613 // value in page coordinates. |
638 // value in page coordinate. | 614 // page_y - A pointer to a double receiving the converted Y |
639 // page_y - A Pointer to a double receiving the converted Y | 615 // value in page coordinates. |
640 // value in page coordinate. | |
641 // Return value: | 616 // Return value: |
642 // None. | 617 // None. |
643 // Comments: | 618 // Comments: |
644 // The page coordinate system has its origin at left-bottom corner of | 619 // The page coordinate system has its origin at the left-bottom corner |
645 // the page, with X axis goes along | 620 // of the page, with the X-axis on the bottom going to the right, and |
646 // the bottom side to the right, and Y axis goes along the left side | 621 // the Y-axis on the left side going up. |
647 // upward. NOTE: this coordinate system | 622 // |
648 // can be altered when you zoom, scroll, or rotate a page, however, a | 623 // NOTE: this coordinate system can be altered when you zoom, scroll, |
649 // point on the page should always have | 624 // or rotate a page, however, a point on the page should always have |
650 // the same coordinate values in the page coordinate system. | 625 // the same coordinate values in the page coordinate system. |
651 // | 626 // |
652 // The device coordinate system is device dependent. For screen device, | 627 // The device coordinate system is device dependent. For screen device, |
653 // its origin is at left-top | 628 // its origin is at the left-top corner of the window. However this |
654 // corner of the window. However this origin can be altered by Windows | 629 // origin can be altered by the Windows coordinate transformation |
655 // coordinate transformation | 630 // utilities. |
656 // utilities. You must make sure the start_x, start_y, size_x, size_y | |
657 // and rotate parameters have exactly | |
658 // same values as you used in FPDF_RenderPage() function call. | |
659 // | 631 // |
| 632 // You must make sure the start_x, start_y, size_x, size_y |
| 633 // and rotate parameters have exactly same values as you used in |
| 634 // the FPDF_RenderPage() function call. |
660 DLLEXPORT void STDCALL FPDF_DeviceToPage(FPDF_PAGE page, | 635 DLLEXPORT void STDCALL FPDF_DeviceToPage(FPDF_PAGE page, |
661 int start_x, | 636 int start_x, |
662 int start_y, | 637 int start_y, |
663 int size_x, | 638 int size_x, |
664 int size_y, | 639 int size_y, |
665 int rotate, | 640 int rotate, |
666 int device_x, | 641 int device_x, |
667 int device_y, | 642 int device_y, |
668 double* page_x, | 643 double* page_x, |
669 double* page_y); | 644 double* page_y); |
670 | 645 |
671 // Function: FPDF_PageToDevice | 646 // Function: FPDF_PageToDevice |
672 // Convert the page coordinate of a point to screen coordinate. | 647 // Convert the page coordinates of a point to screen coordinates. |
673 // Parameters: | 648 // Parameters: |
674 // page - Handle to the page. Returned by FPDF_LoadPage | 649 // page - Handle to the page. Returned by FPDF_LoadPage. |
675 // function. | 650 // start_x - Left pixel position of the display area in |
676 // start_x - Left pixel position of the display area in the | 651 // device coordinates. |
677 // device coordinate. | 652 // start_y - Top pixel position of the display area in device |
678 // start_y - Top pixel position of the display area in the device | 653 // coordinates. |
679 // coordinate. | |
680 // size_x - Horizontal size (in pixels) for displaying the page. | 654 // size_x - Horizontal size (in pixels) for displaying the page. |
681 // size_y - Vertical size (in pixels) for displaying the page. | 655 // size_y - Vertical size (in pixels) for displaying the page. |
682 // rotate - Page orientation: 0 (normal), 1 (rotated 90 degrees | 656 // rotate - Page orientation: |
683 // clockwise), | 657 // 0 (normal) |
684 // 2 (rotated 180 degrees), 3 (rotated 90 degrees | 658 // 1 (rotated 90 degrees clockwise) |
685 // counter-clockwise). | 659 // 2 (rotated 180 degrees) |
686 // page_x - X value in page coordinate, for the point to be | 660 // 3 (rotated 90 degrees counter-clockwise) |
687 // converted. | 661 // page_x - X value in page coordinates. |
688 // page_y - Y value in page coordinate, for the point to be | 662 // page_y - Y value in page coordinate. |
689 // converted. | 663 // device_x - A pointer to an integer receiving the result X |
690 // device_x - A pointer to an integer receiving the result X value | 664 // value in device coordinates. |
691 // in device coordinate. | 665 // device_y - A pointer to an integer receiving the result Y |
692 // device_y - A pointer to an integer receiving the result Y value | 666 // value in device coordinates. |
693 // in device coordinate. | |
694 // Return value: | 667 // Return value: |
695 // None. | 668 // None. |
696 // Comments: | 669 // Comments: |
697 // See comments of FPDF_DeviceToPage() function. | 670 // See comments for FPDF_DeviceToPage(). |
698 // | |
699 DLLEXPORT void STDCALL FPDF_PageToDevice(FPDF_PAGE page, | 671 DLLEXPORT void STDCALL FPDF_PageToDevice(FPDF_PAGE page, |
700 int start_x, | 672 int start_x, |
701 int start_y, | 673 int start_y, |
702 int size_x, | 674 int size_x, |
703 int size_y, | 675 int size_y, |
704 int rotate, | 676 int rotate, |
705 double page_x, | 677 double page_x, |
706 double page_y, | 678 double page_y, |
707 int* device_x, | 679 int* device_x, |
708 int* device_y); | 680 int* device_y); |
709 | 681 |
710 // Function: FPDFBitmap_Create | 682 // Function: FPDFBitmap_Create |
711 // Create a Foxit Device Independent Bitmap (FXDIB). | 683 // Create a device independent bitmap (FXDIB). |
712 // Parameters: | 684 // Parameters: |
713 // width - Number of pixels in a horizontal line of the bitmap. | 685 // width - The number of pixels in width for the bitmap. |
714 // Must be greater than 0. | 686 // Must be greater than 0. |
715 // height - Number of pixels in a vertical line of the bitmap. | 687 // height - The number of pixels in height for the bitmap. |
716 // Must be greater than 0. | 688 // Must be greater than 0. |
717 // alpha - A flag indicating whether alpha channel is used. | 689 // alpha - A flag indicating whether the alpha channel is used. |
718 // Non-zero for using alpha, zero for not using. | 690 // Non-zero for using alpha, zero for not using. |
719 // Return value: | 691 // Return value: |
720 // The created bitmap handle, or NULL if parameter error or out of | 692 // The created bitmap handle, or NULL if a parameter error or out of |
721 // memory. | 693 // memory. |
722 // Comments: | 694 // Comments: |
723 // An FXDIB always use 4 byte per pixel. The first byte of a pixel is | 695 // The bitmap always uses 4 bytes per pixel. The first byte is always |
724 // always double word aligned. | 696 // double word aligned. |
725 // Each pixel contains red (R), green (G), blue (B) and optionally | 697 // |
726 // alpha (A) values. | |
727 // The byte order is BGRx (the last byte unused if no alpha channel) or | 698 // The byte order is BGRx (the last byte unused if no alpha channel) or |
728 // BGRA. | 699 // BGRA. |
729 // | 700 // |
730 // The pixels in a horizontal line (also called scan line) are stored | 701 // The pixels in a horizontal line are stored side by side, with the |
731 // side by side, with left most | 702 // left most pixel stored first (with lower memory address). |
732 // pixel stored first (with lower memory address). Each scan line uses | 703 // Each line uses width * 4 bytes. |
733 // width*4 bytes. | |
734 // | 704 // |
735 // Scan lines are stored one after another, with top most scan line | 705 // Lines are stored one after another, with the top most line stored |
736 // stored first. There is no gap | 706 // first. There is no gap between adjacent lines. |
737 // between adjacent scan lines. | |
738 // | 707 // |
739 // This function allocates enough memory for holding all pixels in the | 708 // This function allocates enough memory for holding all pixels in the |
740 // bitmap, but it doesn't | 709 // bitmap, but it doesn't initialize the buffer. Applications can use |
741 // initialize the buffer. Applications can use FPDFBitmap_FillRect to | 710 // FPDFBitmap_FillRect to fill the bitmap using any color. |
742 // fill the bitmap using any color. | |
743 DLLEXPORT FPDF_BITMAP STDCALL FPDFBitmap_Create(int width, | 711 DLLEXPORT FPDF_BITMAP STDCALL FPDFBitmap_Create(int width, |
744 int height, | 712 int height, |
745 int alpha); | 713 int alpha); |
746 | 714 |
747 // More DIB formats | 715 // More DIB formats |
748 #define FPDFBitmap_Gray 1 // Gray scale bitmap, one byte per pixel. | 716 // Gray scale bitmap, one byte per pixel. |
749 #define FPDFBitmap_BGR 2 // 3 bytes per pixel, byte order: blue, green, red. | 717 #define FPDFBitmap_Gray 1 |
750 #define FPDFBitmap_BGRx \ | 718 // 3 bytes per pixel, byte order: blue, green, red. |
751 3 // 4 bytes per pixel, byte order: blue, green, red, unused. | 719 #define FPDFBitmap_BGR 2 |
752 #define FPDFBitmap_BGRA \ | 720 // 4 bytes per pixel, byte order: blue, green, red, unused. |
753 4 // 4 bytes per pixel, byte order: blue, green, red, alpha. | 721 #define FPDFBitmap_BGRx 3 |
| 722 // 4 bytes per pixel, byte order: blue, green, red, alpha. |
| 723 #define FPDFBitmap_BGRA 4 |
754 | 724 |
755 // Function: FPDFBitmap_CreateEx | 725 // Function: FPDFBitmap_CreateEx |
756 // Create a Foxit Device Independent Bitmap (FXDIB) | 726 // Create a device independent bitmap (FXDIB) |
757 // Parameters: | 727 // Parameters: |
758 // width - Number of pixels in a horizontal line of the bitmap. | 728 // width - The number of pixels in width for the bitmap. |
759 // Must be greater than 0. | 729 // Must be greater than 0. |
760 // height - Number of pixels in a vertical line of the bitmap. | 730 // height - The number of pixels in height for the bitmap. |
761 // Must be greater than 0. | 731 // Must be greater than 0. |
762 // format - A number indicating for bitmap format, as defined | 732 // format - A number indicating for bitmap format, as defined |
763 // above. | 733 // above. |
764 // first_scan - A pointer to the first byte of first scan line, for | 734 // first_scan - A pointer to the first byte of the first line if |
765 // external buffer | 735 // using an external buffer. If this parameter is NULL, |
766 // only. If this parameter is NULL, then the SDK will | 736 // then the a new buffer will be created. |
767 // create its own buffer. | |
768 // stride - Number of bytes for each scan line, for external | 737 // stride - Number of bytes for each scan line, for external |
769 // buffer only.. | 738 // buffer only. |
770 // Return value: | 739 // Return value: |
771 // The created bitmap handle, or NULL if parameter error or out of | 740 // The bitmap handle, or NULL if parameter error or out of memory. |
772 // memory. | |
773 // Comments: | 741 // Comments: |
774 // Similar to FPDFBitmap_Create function, with more formats and | 742 // Similar to FPDFBitmap_Create function, but allows for more formats |
775 // external buffer supported. | 743 // and an external buffer is supported. The bitmap created by this |
776 // Bitmap created by this function can be used in any place that a | 744 // function can be used in any place that a FPDF_BITMAP handle is |
777 // FPDF_BITMAP handle is | |
778 // required. | 745 // required. |
779 // | 746 // |
780 // If external scanline buffer is used, then the application should | 747 // If an external buffer is used, then the application should destroy |
781 // destroy the buffer | 748 // the buffer by itself. FPDFBitmap_Destroy function will not destroy |
782 // by itself. FPDFBitmap_Destroy function will not destroy the buffer. | 749 // the buffer. |
783 // | |
784 DLLEXPORT FPDF_BITMAP STDCALL FPDFBitmap_CreateEx(int width, | 750 DLLEXPORT FPDF_BITMAP STDCALL FPDFBitmap_CreateEx(int width, |
785 int height, | 751 int height, |
786 int format, | 752 int format, |
787 void* first_scan, | 753 void* first_scan, |
788 int stride); | 754 int stride); |
789 | 755 |
790 // Function: FPDFBitmap_FillRect | 756 // Function: FPDFBitmap_FillRect |
791 // Fill a rectangle area in an FXDIB. | 757 // Fill a rectangle in a bitmap. |
792 // Parameters: | 758 // Parameters: |
793 // bitmap - The handle to the bitmap. Returned by | 759 // bitmap - The handle to the bitmap. Returned by |
794 // FPDFBitmap_Create function. | 760 // FPDFBitmap_Create. |
795 // left - The left side position. Starting from 0 at the | 761 // left - The left position. Starting from 0 at the |
796 // left-most pixel. | 762 // left-most pixel. |
797 // top - The top side position. Starting from 0 at the | 763 // top - The top position. Starting from 0 at the |
798 // top-most scan line. | 764 // top-most line. |
799 // width - Number of pixels to be filled in each scan line. | 765 // width - Width in pixels to be filled. |
800 // height - Number of scan lines to be filled. | 766 // height - Height in pixels to be filled. |
801 // color - A 32-bit value specifing the color, in 8888 ARGB | 767 // color - A 32-bit value specifing the color, in 8888 ARGB |
802 // format. | 768 // format. |
803 // Return value: | 769 // Return value: |
804 // None. | 770 // None. |
805 // Comments: | 771 // Comments: |
806 // This function set the color and (optionally) alpha value in | 772 // This function sets the color and (optionally) alpha value in the |
807 // specified region of the bitmap. | 773 // specified region of the bitmap. |
808 // NOTE: If alpha channel is used, this function does NOT composite the | |
809 // background with the source color, | |
810 // instead the background will be replaced by the source color and | |
811 // alpha. | |
812 // If alpha channel is not used, the "alpha" parameter is ignored. | |
813 // | 774 // |
| 775 // NOTE: If the alpha channel is used, this function does NOT |
| 776 // composite the background with the source color, instead the |
| 777 // background will be replaced by the source color and the alpha. |
| 778 // |
| 779 // If the alpha channel is not used, the alpha parameter is ignored. |
814 DLLEXPORT void STDCALL FPDFBitmap_FillRect(FPDF_BITMAP bitmap, | 780 DLLEXPORT void STDCALL FPDFBitmap_FillRect(FPDF_BITMAP bitmap, |
815 int left, | 781 int left, |
816 int top, | 782 int top, |
817 int width, | 783 int width, |
818 int height, | 784 int height, |
819 FPDF_DWORD color); | 785 FPDF_DWORD color); |
820 | 786 |
821 // Function: FPDFBitmap_GetBuffer | 787 // Function: FPDFBitmap_GetBuffer |
822 // Get data buffer of an FXDIB | 788 // Get data buffer of a bitmap. |
823 // Parameters: | 789 // Parameters: |
824 // bitmap - Handle to the bitmap. Returned by FPDFBitmap_Create | 790 // bitmap - Handle to the bitmap. Returned by FPDFBitmap_Create. |
825 // function. | |
826 // Return value: | 791 // Return value: |
827 // The pointer to the first byte of the bitmap buffer. | 792 // The pointer to the first byte of the bitmap buffer. |
828 // Comments: | 793 // Comments: |
829 // The stride may be more than width * number of bytes per pixel | 794 // The stride may be more than width * number of bytes per pixel |
| 795 // |
830 // Applications can use this function to get the bitmap buffer pointer, | 796 // Applications can use this function to get the bitmap buffer pointer, |
831 // then manipulate any color | 797 // then manipulate any color and/or alpha values for any pixels in the |
832 // and/or alpha values for any pixels in the bitmap. | 798 // bitmap. |
| 799 // |
| 800 // The data is in BGRA format. Where the A maybe unused if alpha was |
| 801 // not specified. |
833 DLLEXPORT void* STDCALL FPDFBitmap_GetBuffer(FPDF_BITMAP bitmap); | 802 DLLEXPORT void* STDCALL FPDFBitmap_GetBuffer(FPDF_BITMAP bitmap); |
834 | 803 |
835 // Function: FPDFBitmap_GetWidth | 804 // Function: FPDFBitmap_GetWidth |
836 // Get width of an FXDIB. | 805 // Get width of a bitmap. |
837 // Parameters: | 806 // Parameters: |
838 // bitmap - Handle to the bitmap. Returned by FPDFBitmap_Create | 807 // bitmap - Handle to the bitmap. Returned by FPDFBitmap_Create. |
839 // function. | |
840 // Return value: | 808 // Return value: |
841 // The number of pixels in a horizontal line of the bitmap. | 809 // The width of the bitmap in pixels. |
842 DLLEXPORT int STDCALL FPDFBitmap_GetWidth(FPDF_BITMAP bitmap); | 810 DLLEXPORT int STDCALL FPDFBitmap_GetWidth(FPDF_BITMAP bitmap); |
843 | 811 |
844 // Function: FPDFBitmap_GetHeight | 812 // Function: FPDFBitmap_GetHeight |
845 // Get height of an FXDIB. | 813 // Get height of a bitmap. |
846 // Parameters: | 814 // Parameters: |
847 // bitmap - Handle to the bitmap. Returned by FPDFBitmap_Create | 815 // bitmap - Handle to the bitmap. Returned by FPDFBitmap_Create. |
848 // function. | |
849 // Return value: | 816 // Return value: |
850 // The number of pixels in a vertical line of the bitmap. | 817 // The height of the bitmap in pixels. |
851 DLLEXPORT int STDCALL FPDFBitmap_GetHeight(FPDF_BITMAP bitmap); | 818 DLLEXPORT int STDCALL FPDFBitmap_GetHeight(FPDF_BITMAP bitmap); |
852 | 819 |
853 // Function: FPDFBitmap_GetStride | 820 // Function: FPDFBitmap_GetStride |
854 // Get number of bytes for each scan line in the bitmap buffer. | 821 // Get number of bytes for each line in the bitmap buffer. |
855 // Parameters: | 822 // Parameters: |
856 // bitmap - Handle to the bitmap. Returned by FPDFBitmap_Create | 823 // bitmap - Handle to the bitmap. Returned by FPDFBitmap_Create. |
857 // function. | |
858 // Return value: | 824 // Return value: |
859 // The number of bytes for each scan line in the bitmap buffer. | 825 // The number of bytes for each line in the bitmap buffer. |
860 // Comments: | 826 // Comments: |
861 // The stride may be more than width * number of bytes per pixel | 827 // The stride may be more than width * number of bytes per pixel. |
862 DLLEXPORT int STDCALL FPDFBitmap_GetStride(FPDF_BITMAP bitmap); | 828 DLLEXPORT int STDCALL FPDFBitmap_GetStride(FPDF_BITMAP bitmap); |
863 | 829 |
864 // Function: FPDFBitmap_Destroy | 830 // Function: FPDFBitmap_Destroy |
865 // Destroy an FXDIB and release all related buffers. | 831 // Destroy a bitmap and release all related buffers. |
866 // Parameters: | 832 // Parameters: |
867 // bitmap - Handle to the bitmap. Returned by FPDFBitmap_Create | 833 // bitmap - Handle to the bitmap. Returned by FPDFBitmap_Create. |
868 // function. | |
869 // Return value: | 834 // Return value: |
870 // None. | 835 // None. |
871 // Comments: | 836 // Comments: |
872 // This function will not destroy any external buffer. | 837 // This function will not destroy any external buffers provided when |
873 // | 838 // the bitmap was created. |
874 DLLEXPORT void STDCALL FPDFBitmap_Destroy(FPDF_BITMAP bitmap); | 839 DLLEXPORT void STDCALL FPDFBitmap_Destroy(FPDF_BITMAP bitmap); |
875 | 840 |
876 // Function: FPDF_VIEWERREF_GetPrintScaling | 841 // Function: FPDF_VIEWERREF_GetPrintScaling |
877 // Whether the PDF document prefers to be scaled or not. | 842 // Whether the PDF document prefers to be scaled or not. |
878 // Parameters: | 843 // Parameters: |
879 // document - Handle to the loaded document. | 844 // document - Handle to the loaded document. |
880 // Return value: | 845 // Return value: |
881 // None. | 846 // None. |
882 // | |
883 DLLEXPORT FPDF_BOOL STDCALL | 847 DLLEXPORT FPDF_BOOL STDCALL |
884 FPDF_VIEWERREF_GetPrintScaling(FPDF_DOCUMENT document); | 848 FPDF_VIEWERREF_GetPrintScaling(FPDF_DOCUMENT document); |
885 | 849 |
886 // Function: FPDF_VIEWERREF_GetNumCopies | 850 // Function: FPDF_VIEWERREF_GetNumCopies |
887 // Returns the number of copies to be printed. | 851 // Returns the number of copies to be printed. |
888 // Parameters: | 852 // Parameters: |
889 // document - Handle to the loaded document. | 853 // document - Handle to the loaded document. |
890 // Return value: | 854 // Return value: |
891 // The number of copies to be printed. | 855 // The number of copies to be printed. |
892 // | |
893 DLLEXPORT int STDCALL FPDF_VIEWERREF_GetNumCopies(FPDF_DOCUMENT document); | 856 DLLEXPORT int STDCALL FPDF_VIEWERREF_GetNumCopies(FPDF_DOCUMENT document); |
894 | 857 |
895 // Function: FPDF_VIEWERREF_GetPrintPageRange | 858 // Function: FPDF_VIEWERREF_GetPrintPageRange |
896 // Page numbers to initialize print dialog box when file is printed. | 859 // Page numbers to initialize print dialog box when file is printed. |
897 // Parameters: | 860 // Parameters: |
898 // document - Handle to the loaded document. | 861 // document - Handle to the loaded document. |
899 // Return value: | 862 // Return value: |
900 // The print page range to be used for printing. | 863 // The print page range to be used for printing. |
901 // | |
902 DLLEXPORT FPDF_PAGERANGE STDCALL | 864 DLLEXPORT FPDF_PAGERANGE STDCALL |
903 FPDF_VIEWERREF_GetPrintPageRange(FPDF_DOCUMENT document); | 865 FPDF_VIEWERREF_GetPrintPageRange(FPDF_DOCUMENT document); |
904 | 866 |
905 // Function: FPDF_VIEWERREF_GetDuplex | 867 // Function: FPDF_VIEWERREF_GetDuplex |
906 // Returns the paper handling option to be used when printing from | 868 // Returns the paper handling option to be used when printing from |
907 // print dialog. | 869 // the print dialog. |
908 // Parameters: | 870 // Parameters: |
909 // document - Handle to the loaded document. | 871 // document - Handle to the loaded document. |
910 // Return value: | 872 // Return value: |
911 // The paper handling option to be used when printing. | 873 // The paper handling option to be used when printing. |
912 // | |
913 DLLEXPORT FPDF_DUPLEXTYPE STDCALL | 874 DLLEXPORT FPDF_DUPLEXTYPE STDCALL |
914 FPDF_VIEWERREF_GetDuplex(FPDF_DOCUMENT document); | 875 FPDF_VIEWERREF_GetDuplex(FPDF_DOCUMENT document); |
915 | 876 |
916 // Function: FPDF_CountNamedDests | 877 // Function: FPDF_CountNamedDests |
917 // Get the count of named destinations in the PDF document. | 878 // Get the count of named destinations in the PDF document. |
918 // Parameters: | 879 // Parameters: |
919 // document - Handle to a document | 880 // document - Handle to a document |
920 // Return value: | 881 // Return value: |
921 // The count of named destinations. | 882 // The count of named destinations. |
922 DLLEXPORT FPDF_DWORD STDCALL FPDF_CountNamedDests(FPDF_DOCUMENT document); | 883 DLLEXPORT FPDF_DWORD STDCALL FPDF_CountNamedDests(FPDF_DOCUMENT document); |
923 | 884 |
924 // Function: FPDF_GetNamedDestByName | 885 // Function: FPDF_GetNamedDestByName |
925 // get a special dest handle by the index. | 886 // Get a the destination handle for the given name. |
926 // Parameters: | 887 // Parameters: |
927 // document - Handle to the loaded document. | 888 // document - Handle to the loaded document. |
928 // name - The name of a special named dest. | 889 // name - The name of a destination. |
929 // Return value: | 890 // Return value: |
930 // The handle of the dest. | 891 // The handle to the destination. |
931 // | |
932 DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDestByName(FPDF_DOCUMENT document, | 892 DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDestByName(FPDF_DOCUMENT document, |
933 FPDF_BYTESTRING name); | 893 FPDF_BYTESTRING name); |
934 | 894 |
935 // Function: FPDF_GetNamedDest | 895 // Function: FPDF_GetNamedDest |
936 // Get the specified named destinations of the PDF document by index. | 896 // Get the named destination by index. |
937 // Parameters: | 897 // Parameters: |
938 // document - Handle to a document | 898 // document - Handle to a document |
939 // index - The index of named destination. | 899 // index - The index of a named destination. |
940 // buffer - The buffer to obtain destination name, used as | 900 // buffer - The buffer to store the destination name, |
941 // wchar_t*. | 901 // used as wchar_t*. |
942 // buflen [in/out] - Size of the buffer in bytes on input, length of | 902 // buflen [in/out] - Size of the buffer in bytes on input, |
943 // the result in bytes on output or -1 if the buffer is too small. | 903 // length of the result in bytes on output |
| 904 // or -1 if the buffer is too small. |
944 // Return value: | 905 // Return value: |
945 // The destination handle of a named destination, or NULL if no named | 906 // The destination handle for a given index, or NULL if there is no |
946 // destination corresponding to |index|. | 907 // named destination corresponding to |index|. |
947 // Comments: | 908 // Comments: |
948 // Call this function twice to get the name of the named destination: | 909 // Call this function twice to get the name of the named destination: |
949 // 1) First time pass in |buffer| as NULL and get buflen. | 910 // 1) First time pass in |buffer| as NULL and get buflen. |
950 // 2) Second time pass in allocated |buffer| and buflen to retrieve | 911 // 2) Second time pass in allocated |buffer| and buflen to retrieve |
951 // |buffer|, which should be used as wchar_t*. | 912 // |buffer|, which should be used as wchar_t*. |
952 // If buflen is not sufficiently large, it will be set to -1 upon | |
953 // return. | |
954 // | 913 // |
| 914 // If buflen is not sufficiently large, it will be set to -1 upon |
| 915 // return. |
955 DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDest(FPDF_DOCUMENT document, | 916 DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDest(FPDF_DOCUMENT document, |
956 int index, | 917 int index, |
957 void* buffer, | 918 void* buffer, |
958 long* buflen); | 919 long* buflen); |
959 | 920 |
960 // Function: FPDF_BStr_Init | 921 // Function: FPDF_BStr_Init |
961 // Helper function to initialize a byte string. | 922 // Helper function to initialize a byte string. |
962 DLLEXPORT FPDF_RESULT STDCALL FPDF_BStr_Init(FPDF_BSTR* str); | 923 DLLEXPORT FPDF_RESULT STDCALL FPDF_BStr_Init(FPDF_BSTR* str); |
963 | 924 |
964 // Function: FPDF_BStr_Set | 925 // Function: FPDF_BStr_Set |
965 // Helper function to set string data. | 926 // Helper function to set string data. |
966 DLLEXPORT FPDF_RESULT STDCALL FPDF_BStr_Set(FPDF_BSTR* str, | 927 DLLEXPORT FPDF_RESULT STDCALL FPDF_BStr_Set(FPDF_BSTR* str, |
967 FPDF_LPCSTR bstr, | 928 FPDF_LPCSTR bstr, |
968 int length); | 929 int length); |
969 | 930 |
970 // Function: FPDF_BStr_Clear | 931 // Function: FPDF_BStr_Clear |
971 // Helper function to clear a byte string. | 932 // Helper function to clear a byte string. |
972 DLLEXPORT FPDF_RESULT STDCALL FPDF_BStr_Clear(FPDF_BSTR* str); | 933 DLLEXPORT FPDF_RESULT STDCALL FPDF_BStr_Clear(FPDF_BSTR* str); |
973 | 934 |
974 #ifdef __cplusplus | 935 #ifdef __cplusplus |
975 } | 936 } |
976 #endif | 937 #endif |
977 | 938 |
978 #endif // PUBLIC_FPDFVIEW_H_ | 939 #endif // PUBLIC_FPDFVIEW_H_ |
OLD | NEW |