1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2014 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6*3ac0a46fSAndroid Build Coastguard Worker 7*3ac0a46fSAndroid Build Coastguard Worker // This is the main header file for embedders of PDFium. It provides APIs to 8*3ac0a46fSAndroid Build Coastguard Worker // initialize the library, load documents, and render pages, amongst other 9*3ac0a46fSAndroid Build Coastguard Worker // things. 10*3ac0a46fSAndroid Build Coastguard Worker // 11*3ac0a46fSAndroid Build Coastguard Worker // NOTE: None of the PDFium APIs are thread-safe. They expect to be called 12*3ac0a46fSAndroid Build Coastguard Worker // from a single thread. Barring that, embedders are required to ensure (via 13*3ac0a46fSAndroid Build Coastguard Worker // a mutex or similar) that only a single PDFium call can be made at a time. 14*3ac0a46fSAndroid Build Coastguard Worker // 15*3ac0a46fSAndroid Build Coastguard Worker // NOTE: External docs refer to this file as "fpdfview.h", so do not rename 16*3ac0a46fSAndroid Build Coastguard Worker // despite lack of consistency with other public files. 17*3ac0a46fSAndroid Build Coastguard Worker 18*3ac0a46fSAndroid Build Coastguard Worker #ifndef PUBLIC_FPDFVIEW_H_ 19*3ac0a46fSAndroid Build Coastguard Worker #define PUBLIC_FPDFVIEW_H_ 20*3ac0a46fSAndroid Build Coastguard Worker 21*3ac0a46fSAndroid Build Coastguard Worker // clang-format off 22*3ac0a46fSAndroid Build Coastguard Worker 23*3ac0a46fSAndroid Build Coastguard Worker #include <stddef.h> 24*3ac0a46fSAndroid Build Coastguard Worker 25*3ac0a46fSAndroid Build Coastguard Worker typedef __SIZE_TYPE__ size_t; 26*3ac0a46fSAndroid Build Coastguard Worker 27*3ac0a46fSAndroid Build Coastguard Worker #if defined(_WIN32) && !defined(__WINDOWS__) 28*3ac0a46fSAndroid Build Coastguard Worker #include <windows.h> 29*3ac0a46fSAndroid Build Coastguard Worker #endif 30*3ac0a46fSAndroid Build Coastguard Worker 31*3ac0a46fSAndroid Build Coastguard Worker #ifdef PDF_ENABLE_XFA 32*3ac0a46fSAndroid Build Coastguard Worker // PDF_USE_XFA is set in confirmation that this version of PDFium can support 33*3ac0a46fSAndroid Build Coastguard Worker // XFA forms as requested by the PDF_ENABLE_XFA setting. 34*3ac0a46fSAndroid Build Coastguard Worker #define PDF_USE_XFA 35*3ac0a46fSAndroid Build Coastguard Worker #endif // PDF_ENABLE_XFA 36*3ac0a46fSAndroid Build Coastguard Worker 37*3ac0a46fSAndroid Build Coastguard Worker // PDF object types 38*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_UNKNOWN 0 39*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_BOOLEAN 1 40*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_NUMBER 2 41*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_STRING 3 42*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_NAME 4 43*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_ARRAY 5 44*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_DICTIONARY 6 45*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_STREAM 7 46*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_NULLOBJ 8 47*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_REFERENCE 9 48*3ac0a46fSAndroid Build Coastguard Worker 49*3ac0a46fSAndroid Build Coastguard Worker // PDF text rendering modes 50*3ac0a46fSAndroid Build Coastguard Worker typedef enum { 51*3ac0a46fSAndroid Build Coastguard Worker FPDF_TEXTRENDERMODE_UNKNOWN = -1, 52*3ac0a46fSAndroid Build Coastguard Worker FPDF_TEXTRENDERMODE_FILL = 0, 53*3ac0a46fSAndroid Build Coastguard Worker FPDF_TEXTRENDERMODE_STROKE = 1, 54*3ac0a46fSAndroid Build Coastguard Worker FPDF_TEXTRENDERMODE_FILL_STROKE = 2, 55*3ac0a46fSAndroid Build Coastguard Worker FPDF_TEXTRENDERMODE_INVISIBLE = 3, 56*3ac0a46fSAndroid Build Coastguard Worker FPDF_TEXTRENDERMODE_FILL_CLIP = 4, 57*3ac0a46fSAndroid Build Coastguard Worker FPDF_TEXTRENDERMODE_STROKE_CLIP = 5, 58*3ac0a46fSAndroid Build Coastguard Worker FPDF_TEXTRENDERMODE_FILL_STROKE_CLIP = 6, 59*3ac0a46fSAndroid Build Coastguard Worker FPDF_TEXTRENDERMODE_CLIP = 7, 60*3ac0a46fSAndroid Build Coastguard Worker FPDF_TEXTRENDERMODE_LAST = FPDF_TEXTRENDERMODE_CLIP, 61*3ac0a46fSAndroid Build Coastguard Worker } FPDF_TEXT_RENDERMODE; 62*3ac0a46fSAndroid Build Coastguard Worker 63*3ac0a46fSAndroid Build Coastguard Worker // PDF types - use incomplete types (never completed) to force API type safety. 64*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_action_t__* FPDF_ACTION; 65*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_annotation_t__* FPDF_ANNOTATION; 66*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_attachment_t__* FPDF_ATTACHMENT; 67*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_avail_t__* FPDF_AVAIL; 68*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_bitmap_t__* FPDF_BITMAP; 69*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_bookmark_t__* FPDF_BOOKMARK; 70*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_clippath_t__* FPDF_CLIPPATH; 71*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_dest_t__* FPDF_DEST; 72*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_document_t__* FPDF_DOCUMENT; 73*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_font_t__* FPDF_FONT; 74*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_form_handle_t__* FPDF_FORMHANDLE; 75*3ac0a46fSAndroid Build Coastguard Worker typedef const struct fpdf_glyphpath_t__* FPDF_GLYPHPATH; 76*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_javascript_action_t* FPDF_JAVASCRIPT_ACTION; 77*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_link_t__* FPDF_LINK; 78*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_page_t__* FPDF_PAGE; 79*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_pagelink_t__* FPDF_PAGELINK; 80*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_pageobject_t__* FPDF_PAGEOBJECT; // (text, path, etc.) 81*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_pageobjectmark_t__* FPDF_PAGEOBJECTMARK; 82*3ac0a46fSAndroid Build Coastguard Worker typedef const struct fpdf_pagerange_t__* FPDF_PAGERANGE; 83*3ac0a46fSAndroid Build Coastguard Worker typedef const struct fpdf_pathsegment_t* FPDF_PATHSEGMENT; 84*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_schhandle_t__* FPDF_SCHHANDLE; 85*3ac0a46fSAndroid Build Coastguard Worker typedef const struct fpdf_signature_t__* FPDF_SIGNATURE; 86*3ac0a46fSAndroid Build Coastguard Worker typedef void* FPDF_SKIA_CANVAS; // Passed into Skia as an SkCanvas. 87*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_structelement_t__* FPDF_STRUCTELEMENT; 88*3ac0a46fSAndroid Build Coastguard Worker typedef const struct fpdf_structelement_attr_t__* FPDF_STRUCTELEMENT_ATTR; 89*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_structtree_t__* FPDF_STRUCTTREE; 90*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_textpage_t__* FPDF_TEXTPAGE; 91*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_widget_t__* FPDF_WIDGET; 92*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_xobject_t__* FPDF_XOBJECT; 93*3ac0a46fSAndroid Build Coastguard Worker 94*3ac0a46fSAndroid Build Coastguard Worker // Basic data types 95*3ac0a46fSAndroid Build Coastguard Worker typedef int FPDF_BOOL; 96*3ac0a46fSAndroid Build Coastguard Worker typedef int FPDF_RESULT; 97*3ac0a46fSAndroid Build Coastguard Worker typedef unsigned long FPDF_DWORD; 98*3ac0a46fSAndroid Build Coastguard Worker typedef float FS_FLOAT; 99*3ac0a46fSAndroid Build Coastguard Worker 100*3ac0a46fSAndroid Build Coastguard Worker // Duplex types 101*3ac0a46fSAndroid Build Coastguard Worker typedef enum _FPDF_DUPLEXTYPE_ { 102*3ac0a46fSAndroid Build Coastguard Worker DuplexUndefined = 0, 103*3ac0a46fSAndroid Build Coastguard Worker Simplex, 104*3ac0a46fSAndroid Build Coastguard Worker DuplexFlipShortEdge, 105*3ac0a46fSAndroid Build Coastguard Worker DuplexFlipLongEdge 106*3ac0a46fSAndroid Build Coastguard Worker } FPDF_DUPLEXTYPE; 107*3ac0a46fSAndroid Build Coastguard Worker 108*3ac0a46fSAndroid Build Coastguard Worker // String types 109*3ac0a46fSAndroid Build Coastguard Worker typedef unsigned short FPDF_WCHAR; 110*3ac0a46fSAndroid Build Coastguard Worker 111*3ac0a46fSAndroid Build Coastguard Worker // The public PDFium API uses three types of strings: byte string, wide string 112*3ac0a46fSAndroid Build Coastguard Worker // (UTF-16LE encoded), and platform dependent string. 113*3ac0a46fSAndroid Build Coastguard Worker 114*3ac0a46fSAndroid Build Coastguard Worker // Public PDFium API type for byte strings. 115*3ac0a46fSAndroid Build Coastguard Worker typedef const char* FPDF_BYTESTRING; 116*3ac0a46fSAndroid Build Coastguard Worker 117*3ac0a46fSAndroid Build Coastguard Worker // The public PDFium API always uses UTF-16LE encoded wide strings, each 118*3ac0a46fSAndroid Build Coastguard Worker // character uses 2 bytes (except surrogation), with the low byte first. 119*3ac0a46fSAndroid Build Coastguard Worker typedef const FPDF_WCHAR* FPDF_WIDESTRING; 120*3ac0a46fSAndroid Build Coastguard Worker 121*3ac0a46fSAndroid Build Coastguard Worker // Structure for persisting a string beyond the duration of a callback. 122*3ac0a46fSAndroid Build Coastguard Worker // Note: although represented as a char*, string may be interpreted as 123*3ac0a46fSAndroid Build Coastguard Worker // a UTF-16LE formated string. Used only by XFA callbacks. 124*3ac0a46fSAndroid Build Coastguard Worker typedef struct FPDF_BSTR_ { 125*3ac0a46fSAndroid Build Coastguard Worker char* str; // String buffer, manipulate only with FPDF_BStr_* methods. 126*3ac0a46fSAndroid Build Coastguard Worker int len; // Length of the string, in bytes. 127*3ac0a46fSAndroid Build Coastguard Worker } FPDF_BSTR; 128*3ac0a46fSAndroid Build Coastguard Worker 129*3ac0a46fSAndroid Build Coastguard Worker // For Windows programmers: In most cases it's OK to treat FPDF_WIDESTRING as a 130*3ac0a46fSAndroid Build Coastguard Worker // Windows unicode string, however, special care needs to be taken if you 131*3ac0a46fSAndroid Build Coastguard Worker // expect to process Unicode larger than 0xffff. 132*3ac0a46fSAndroid Build Coastguard Worker // 133*3ac0a46fSAndroid Build Coastguard Worker // For Linux/Unix programmers: most compiler/library environments use 4 bytes 134*3ac0a46fSAndroid Build Coastguard Worker // for a Unicode character, and you have to convert between FPDF_WIDESTRING and 135*3ac0a46fSAndroid Build Coastguard Worker // system wide string by yourself. 136*3ac0a46fSAndroid Build Coastguard Worker typedef const char* FPDF_STRING; 137*3ac0a46fSAndroid Build Coastguard Worker 138*3ac0a46fSAndroid Build Coastguard Worker // Matrix for transformation, in the form [a b c d e f], equivalent to: 139*3ac0a46fSAndroid Build Coastguard Worker // | a b 0 | 140*3ac0a46fSAndroid Build Coastguard Worker // | c d 0 | 141*3ac0a46fSAndroid Build Coastguard Worker // | e f 1 | 142*3ac0a46fSAndroid Build Coastguard Worker // 143*3ac0a46fSAndroid Build Coastguard Worker // Translation is performed with [1 0 0 1 tx ty]. 144*3ac0a46fSAndroid Build Coastguard Worker // Scaling is performed with [sx 0 0 sy 0 0]. 145*3ac0a46fSAndroid Build Coastguard Worker // See PDF Reference 1.7, 4.2.2 Common Transformations for more. 146*3ac0a46fSAndroid Build Coastguard Worker typedef struct _FS_MATRIX_ { 147*3ac0a46fSAndroid Build Coastguard Worker float a; 148*3ac0a46fSAndroid Build Coastguard Worker float b; 149*3ac0a46fSAndroid Build Coastguard Worker float c; 150*3ac0a46fSAndroid Build Coastguard Worker float d; 151*3ac0a46fSAndroid Build Coastguard Worker float e; 152*3ac0a46fSAndroid Build Coastguard Worker float f; 153*3ac0a46fSAndroid Build Coastguard Worker } FS_MATRIX; 154*3ac0a46fSAndroid Build Coastguard Worker 155*3ac0a46fSAndroid Build Coastguard Worker // Rectangle area(float) in device or page coordinate system. 156*3ac0a46fSAndroid Build Coastguard Worker typedef struct _FS_RECTF_ { 157*3ac0a46fSAndroid Build Coastguard Worker // The x-coordinate of the left-top corner. 158*3ac0a46fSAndroid Build Coastguard Worker float left; 159*3ac0a46fSAndroid Build Coastguard Worker // The y-coordinate of the left-top corner. 160*3ac0a46fSAndroid Build Coastguard Worker float top; 161*3ac0a46fSAndroid Build Coastguard Worker // The x-coordinate of the right-bottom corner. 162*3ac0a46fSAndroid Build Coastguard Worker float right; 163*3ac0a46fSAndroid Build Coastguard Worker // The y-coordinate of the right-bottom corner. 164*3ac0a46fSAndroid Build Coastguard Worker float bottom; 165*3ac0a46fSAndroid Build Coastguard Worker } * FS_LPRECTF, FS_RECTF; 166*3ac0a46fSAndroid Build Coastguard Worker 167*3ac0a46fSAndroid Build Coastguard Worker // Const Pointer to FS_RECTF structure. 168*3ac0a46fSAndroid Build Coastguard Worker typedef const FS_RECTF* FS_LPCRECTF; 169*3ac0a46fSAndroid Build Coastguard Worker 170*3ac0a46fSAndroid Build Coastguard Worker // Rectangle size. Coordinate system agnostic. 171*3ac0a46fSAndroid Build Coastguard Worker typedef struct FS_SIZEF_ { 172*3ac0a46fSAndroid Build Coastguard Worker float width; 173*3ac0a46fSAndroid Build Coastguard Worker float height; 174*3ac0a46fSAndroid Build Coastguard Worker } * FS_LPSIZEF, FS_SIZEF; 175*3ac0a46fSAndroid Build Coastguard Worker 176*3ac0a46fSAndroid Build Coastguard Worker // Const Pointer to FS_SIZEF structure. 177*3ac0a46fSAndroid Build Coastguard Worker typedef const FS_SIZEF* FS_LPCSIZEF; 178*3ac0a46fSAndroid Build Coastguard Worker 179*3ac0a46fSAndroid Build Coastguard Worker // 2D Point. Coordinate system agnostic. 180*3ac0a46fSAndroid Build Coastguard Worker typedef struct FS_POINTF_ { 181*3ac0a46fSAndroid Build Coastguard Worker float x; 182*3ac0a46fSAndroid Build Coastguard Worker float y; 183*3ac0a46fSAndroid Build Coastguard Worker } * FS_LPPOINTF, FS_POINTF; 184*3ac0a46fSAndroid Build Coastguard Worker 185*3ac0a46fSAndroid Build Coastguard Worker // Const Pointer to FS_POINTF structure. 186*3ac0a46fSAndroid Build Coastguard Worker typedef const FS_POINTF* FS_LPCPOINTF; 187*3ac0a46fSAndroid Build Coastguard Worker 188*3ac0a46fSAndroid Build Coastguard Worker typedef struct _FS_QUADPOINTSF { 189*3ac0a46fSAndroid Build Coastguard Worker FS_FLOAT x1; 190*3ac0a46fSAndroid Build Coastguard Worker FS_FLOAT y1; 191*3ac0a46fSAndroid Build Coastguard Worker FS_FLOAT x2; 192*3ac0a46fSAndroid Build Coastguard Worker FS_FLOAT y2; 193*3ac0a46fSAndroid Build Coastguard Worker FS_FLOAT x3; 194*3ac0a46fSAndroid Build Coastguard Worker FS_FLOAT y3; 195*3ac0a46fSAndroid Build Coastguard Worker FS_FLOAT x4; 196*3ac0a46fSAndroid Build Coastguard Worker FS_FLOAT y4; 197*3ac0a46fSAndroid Build Coastguard Worker } FS_QUADPOINTSF; 198*3ac0a46fSAndroid Build Coastguard Worker 199*3ac0a46fSAndroid Build Coastguard Worker // Annotation enums. 200*3ac0a46fSAndroid Build Coastguard Worker typedef int FPDF_ANNOTATION_SUBTYPE; 201*3ac0a46fSAndroid Build Coastguard Worker typedef int FPDF_ANNOT_APPEARANCEMODE; 202*3ac0a46fSAndroid Build Coastguard Worker 203*3ac0a46fSAndroid Build Coastguard Worker // Dictionary value types. 204*3ac0a46fSAndroid Build Coastguard Worker typedef int FPDF_OBJECT_TYPE; 205*3ac0a46fSAndroid Build Coastguard Worker 206*3ac0a46fSAndroid Build Coastguard Worker #if defined(COMPONENT_BUILD) 207*3ac0a46fSAndroid Build Coastguard Worker // FPDF_EXPORT should be consistent with |export| in the pdfium_fuzzer 208*3ac0a46fSAndroid Build Coastguard Worker // template in testing/fuzzers/BUILD.gn. 209*3ac0a46fSAndroid Build Coastguard Worker #if defined(WIN32) 210*3ac0a46fSAndroid Build Coastguard Worker #if defined(FPDF_IMPLEMENTATION) 211*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_EXPORT __declspec(dllexport) 212*3ac0a46fSAndroid Build Coastguard Worker #else 213*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_EXPORT __declspec(dllimport) 214*3ac0a46fSAndroid Build Coastguard Worker #endif // defined(FPDF_IMPLEMENTATION) 215*3ac0a46fSAndroid Build Coastguard Worker #else 216*3ac0a46fSAndroid Build Coastguard Worker #if defined(FPDF_IMPLEMENTATION) 217*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_EXPORT __attribute__((visibility("default"))) 218*3ac0a46fSAndroid Build Coastguard Worker #else 219*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_EXPORT 220*3ac0a46fSAndroid Build Coastguard Worker #endif // defined(FPDF_IMPLEMENTATION) 221*3ac0a46fSAndroid Build Coastguard Worker #endif // defined(WIN32) 222*3ac0a46fSAndroid Build Coastguard Worker #else 223*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_EXPORT 224*3ac0a46fSAndroid Build Coastguard Worker #endif // defined(COMPONENT_BUILD) 225*3ac0a46fSAndroid Build Coastguard Worker 226*3ac0a46fSAndroid Build Coastguard Worker #if defined(WIN32) && defined(FPDFSDK_EXPORTS) 227*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_CALLCONV __stdcall 228*3ac0a46fSAndroid Build Coastguard Worker #else 229*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_CALLCONV 230*3ac0a46fSAndroid Build Coastguard Worker #endif 231*3ac0a46fSAndroid Build Coastguard Worker 232*3ac0a46fSAndroid Build Coastguard Worker // Exported Functions 233*3ac0a46fSAndroid Build Coastguard Worker #ifdef __cplusplus 234*3ac0a46fSAndroid Build Coastguard Worker extern "C" { 235*3ac0a46fSAndroid Build Coastguard Worker #endif 236*3ac0a46fSAndroid Build Coastguard Worker 237*3ac0a46fSAndroid Build Coastguard Worker // PDF renderer types - Experimental. 238*3ac0a46fSAndroid Build Coastguard Worker // Selection of 2D graphics library to use for rendering to FPDF_BITMAPs. 239*3ac0a46fSAndroid Build Coastguard Worker typedef enum { 240*3ac0a46fSAndroid Build Coastguard Worker // Anti-Grain Geometry - https://sourceforge.net/projects/agg/ 241*3ac0a46fSAndroid Build Coastguard Worker FPDF_RENDERERTYPE_AGG = 0, 242*3ac0a46fSAndroid Build Coastguard Worker // Skia - https://skia.org/ 243*3ac0a46fSAndroid Build Coastguard Worker FPDF_RENDERERTYPE_SKIA = 1, 244*3ac0a46fSAndroid Build Coastguard Worker } FPDF_RENDERER_TYPE; 245*3ac0a46fSAndroid Build Coastguard Worker 246*3ac0a46fSAndroid Build Coastguard Worker // Process-wide options for initializing the library. 247*3ac0a46fSAndroid Build Coastguard Worker typedef struct FPDF_LIBRARY_CONFIG_ { 248*3ac0a46fSAndroid Build Coastguard Worker // Version number of the interface. Currently must be 2. 249*3ac0a46fSAndroid Build Coastguard Worker // Support for version 1 will be deprecated in the future. 250*3ac0a46fSAndroid Build Coastguard Worker int version; 251*3ac0a46fSAndroid Build Coastguard Worker 252*3ac0a46fSAndroid Build Coastguard Worker // Array of paths to scan in place of the defaults when using built-in 253*3ac0a46fSAndroid Build Coastguard Worker // FXGE font loading code. The array is terminated by a NULL pointer. 254*3ac0a46fSAndroid Build Coastguard Worker // The Array may be NULL itself to use the default paths. May be ignored 255*3ac0a46fSAndroid Build Coastguard Worker // entirely depending upon the platform. 256*3ac0a46fSAndroid Build Coastguard Worker const char** m_pUserFontPaths; 257*3ac0a46fSAndroid Build Coastguard Worker 258*3ac0a46fSAndroid Build Coastguard Worker // Version 2. 259*3ac0a46fSAndroid Build Coastguard Worker 260*3ac0a46fSAndroid Build Coastguard Worker // Pointer to the v8::Isolate to use, or NULL to force PDFium to create one. 261*3ac0a46fSAndroid Build Coastguard Worker void* m_pIsolate; 262*3ac0a46fSAndroid Build Coastguard Worker 263*3ac0a46fSAndroid Build Coastguard Worker // The embedder data slot to use in the v8::Isolate to store PDFium's 264*3ac0a46fSAndroid Build Coastguard Worker // per-isolate data. The value needs to be in the range 265*3ac0a46fSAndroid Build Coastguard Worker // [0, |v8::Internals::kNumIsolateDataLots|). Note that 0 is fine for most 266*3ac0a46fSAndroid Build Coastguard Worker // embedders. 267*3ac0a46fSAndroid Build Coastguard Worker unsigned int m_v8EmbedderSlot; 268*3ac0a46fSAndroid Build Coastguard Worker 269*3ac0a46fSAndroid Build Coastguard Worker // Version 3 - Experimental. 270*3ac0a46fSAndroid Build Coastguard Worker 271*3ac0a46fSAndroid Build Coastguard Worker // Pointer to the V8::Platform to use. 272*3ac0a46fSAndroid Build Coastguard Worker void* m_pPlatform; 273*3ac0a46fSAndroid Build Coastguard Worker 274*3ac0a46fSAndroid Build Coastguard Worker // Version 4 - Experimental. 275*3ac0a46fSAndroid Build Coastguard Worker 276*3ac0a46fSAndroid Build Coastguard Worker // Explicit specification of core renderer to use. |m_RendererType| must be 277*3ac0a46fSAndroid Build Coastguard Worker // a valid value for |FPDF_LIBRARY_CONFIG| versions of this level or higher, 278*3ac0a46fSAndroid Build Coastguard Worker // or else the initialization will fail with an immediate crash. 279*3ac0a46fSAndroid Build Coastguard Worker // Note that use of a specified |FPDF_RENDERER_TYPE| value for which the 280*3ac0a46fSAndroid Build Coastguard Worker // corresponding render library is not included in the build will similarly 281*3ac0a46fSAndroid Build Coastguard Worker // fail with an immediate crash. 282*3ac0a46fSAndroid Build Coastguard Worker FPDF_RENDERER_TYPE m_RendererType; 283*3ac0a46fSAndroid Build Coastguard Worker } FPDF_LIBRARY_CONFIG; 284*3ac0a46fSAndroid Build Coastguard Worker 285*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_InitLibraryWithConfig 286*3ac0a46fSAndroid Build Coastguard Worker // Initialize the PDFium library and allocate global resources for it. 287*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 288*3ac0a46fSAndroid Build Coastguard Worker // config - configuration information as above. 289*3ac0a46fSAndroid Build Coastguard Worker // Return value: 290*3ac0a46fSAndroid Build Coastguard Worker // None. 291*3ac0a46fSAndroid Build Coastguard Worker // Comments: 292*3ac0a46fSAndroid Build Coastguard Worker // You have to call this function before you can call any PDF 293*3ac0a46fSAndroid Build Coastguard Worker // processing functions. 294*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV 295*3ac0a46fSAndroid Build Coastguard Worker FPDF_InitLibraryWithConfig(const FPDF_LIBRARY_CONFIG* config); 296*3ac0a46fSAndroid Build Coastguard Worker 297*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_InitLibrary 298*3ac0a46fSAndroid Build Coastguard Worker // Initialize the PDFium library (alternative form). 299*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 300*3ac0a46fSAndroid Build Coastguard Worker // None 301*3ac0a46fSAndroid Build Coastguard Worker // Return value: 302*3ac0a46fSAndroid Build Coastguard Worker // None. 303*3ac0a46fSAndroid Build Coastguard Worker // Comments: 304*3ac0a46fSAndroid Build Coastguard Worker // Convenience function to call FPDF_InitLibraryWithConfig() with a 305*3ac0a46fSAndroid Build Coastguard Worker // default configuration for backwards compatibility purposes. New 306*3ac0a46fSAndroid Build Coastguard Worker // code should call FPDF_InitLibraryWithConfig() instead. This will 307*3ac0a46fSAndroid Build Coastguard Worker // be deprecated in the future. 308*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDF_InitLibrary(); 309*3ac0a46fSAndroid Build Coastguard Worker 310*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_DestroyLibrary 311*3ac0a46fSAndroid Build Coastguard Worker // Release global resources allocated to the PDFium library by 312*3ac0a46fSAndroid Build Coastguard Worker // FPDF_InitLibrary() or FPDF_InitLibraryWithConfig(). 313*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 314*3ac0a46fSAndroid Build Coastguard Worker // None. 315*3ac0a46fSAndroid Build Coastguard Worker // Return value: 316*3ac0a46fSAndroid Build Coastguard Worker // None. 317*3ac0a46fSAndroid Build Coastguard Worker // Comments: 318*3ac0a46fSAndroid Build Coastguard Worker // After this function is called, you must not call any PDF 319*3ac0a46fSAndroid Build Coastguard Worker // processing functions. 320*3ac0a46fSAndroid Build Coastguard Worker // 321*3ac0a46fSAndroid Build Coastguard Worker // Calling this function does not automatically close other 322*3ac0a46fSAndroid Build Coastguard Worker // objects. It is recommended to close other objects before 323*3ac0a46fSAndroid Build Coastguard Worker // closing the library with this function. 324*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDF_DestroyLibrary(); 325*3ac0a46fSAndroid Build Coastguard Worker 326*3ac0a46fSAndroid Build Coastguard Worker // Policy for accessing the local machine time. 327*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_POLICY_MACHINETIME_ACCESS 0 328*3ac0a46fSAndroid Build Coastguard Worker 329*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_SetSandBoxPolicy 330*3ac0a46fSAndroid Build Coastguard Worker // Set the policy for the sandbox environment. 331*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 332*3ac0a46fSAndroid Build Coastguard Worker // policy - The specified policy for setting, for example: 333*3ac0a46fSAndroid Build Coastguard Worker // FPDF_POLICY_MACHINETIME_ACCESS. 334*3ac0a46fSAndroid Build Coastguard Worker // enable - True to enable, false to disable the policy. 335*3ac0a46fSAndroid Build Coastguard Worker // Return value: 336*3ac0a46fSAndroid Build Coastguard Worker // None. 337*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDF_SetSandBoxPolicy(FPDF_DWORD policy, 338*3ac0a46fSAndroid Build Coastguard Worker FPDF_BOOL enable); 339*3ac0a46fSAndroid Build Coastguard Worker 340*3ac0a46fSAndroid Build Coastguard Worker #if defined(_WIN32) 341*3ac0a46fSAndroid Build Coastguard Worker // Experimental API. 342*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_SetPrintMode 343*3ac0a46fSAndroid Build Coastguard Worker // Set printing mode when printing on Windows. 344*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 345*3ac0a46fSAndroid Build Coastguard Worker // mode - FPDF_PRINTMODE_EMF to output EMF (default) 346*3ac0a46fSAndroid Build Coastguard Worker // FPDF_PRINTMODE_TEXTONLY to output text only (for charstream 347*3ac0a46fSAndroid Build Coastguard Worker // devices) 348*3ac0a46fSAndroid Build Coastguard Worker // FPDF_PRINTMODE_POSTSCRIPT2 to output level 2 PostScript into 349*3ac0a46fSAndroid Build Coastguard Worker // EMF as a series of GDI comments. 350*3ac0a46fSAndroid Build Coastguard Worker // FPDF_PRINTMODE_POSTSCRIPT3 to output level 3 PostScript into 351*3ac0a46fSAndroid Build Coastguard Worker // EMF as a series of GDI comments. 352*3ac0a46fSAndroid Build Coastguard Worker // FPDF_PRINTMODE_POSTSCRIPT2_PASSTHROUGH to output level 2 353*3ac0a46fSAndroid Build Coastguard Worker // PostScript via ExtEscape() in PASSTHROUGH mode. 354*3ac0a46fSAndroid Build Coastguard Worker // FPDF_PRINTMODE_POSTSCRIPT3_PASSTHROUGH to output level 3 355*3ac0a46fSAndroid Build Coastguard Worker // PostScript via ExtEscape() in PASSTHROUGH mode. 356*3ac0a46fSAndroid Build Coastguard Worker // FPDF_PRINTMODE_EMF_IMAGE_MASKS to output EMF, with more 357*3ac0a46fSAndroid Build Coastguard Worker // efficient processing of documents containing image masks. 358*3ac0a46fSAndroid Build Coastguard Worker // FPDF_PRINTMODE_POSTSCRIPT3_TYPE42 to output level 3 359*3ac0a46fSAndroid Build Coastguard Worker // PostScript with embedded Type 42 fonts, when applicable, into 360*3ac0a46fSAndroid Build Coastguard Worker // EMF as a series of GDI comments. 361*3ac0a46fSAndroid Build Coastguard Worker // FPDF_PRINTMODE_POSTSCRIPT3_TYPE42_PASSTHROUGH to output level 362*3ac0a46fSAndroid Build Coastguard Worker // 3 PostScript with embedded Type 42 fonts, when applicable, 363*3ac0a46fSAndroid Build Coastguard Worker // via ExtEscape() in PASSTHROUGH mode. 364*3ac0a46fSAndroid Build Coastguard Worker // Return value: 365*3ac0a46fSAndroid Build Coastguard Worker // True if successful, false if unsuccessful (typically invalid input). 366*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_SetPrintMode(int mode); 367*3ac0a46fSAndroid Build Coastguard Worker #endif // defined(_WIN32) 368*3ac0a46fSAndroid Build Coastguard Worker 369*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_LoadDocument 370*3ac0a46fSAndroid Build Coastguard Worker // Open and load a PDF document. 371*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 372*3ac0a46fSAndroid Build Coastguard Worker // file_path - Path to the PDF file (including extension). 373*3ac0a46fSAndroid Build Coastguard Worker // password - A string used as the password for the PDF file. 374*3ac0a46fSAndroid Build Coastguard Worker // If no password is needed, empty or NULL can be used. 375*3ac0a46fSAndroid Build Coastguard Worker // See comments below regarding the encoding. 376*3ac0a46fSAndroid Build Coastguard Worker // Return value: 377*3ac0a46fSAndroid Build Coastguard Worker // A handle to the loaded document, or NULL on failure. 378*3ac0a46fSAndroid Build Coastguard Worker // Comments: 379*3ac0a46fSAndroid Build Coastguard Worker // Loaded document can be closed by FPDF_CloseDocument(). 380*3ac0a46fSAndroid Build Coastguard Worker // If this function fails, you can use FPDF_GetLastError() to retrieve 381*3ac0a46fSAndroid Build Coastguard Worker // the reason why it failed. 382*3ac0a46fSAndroid Build Coastguard Worker // 383*3ac0a46fSAndroid Build Coastguard Worker // The encoding for |file_path| is UTF-8. 384*3ac0a46fSAndroid Build Coastguard Worker // 385*3ac0a46fSAndroid Build Coastguard Worker // The encoding for |password| can be either UTF-8 or Latin-1. PDFs, 386*3ac0a46fSAndroid Build Coastguard Worker // depending on the security handler revision, will only accept one or 387*3ac0a46fSAndroid Build Coastguard Worker // the other encoding. If |password|'s encoding and the PDF's expected 388*3ac0a46fSAndroid Build Coastguard Worker // encoding do not match, FPDF_LoadDocument() will automatically 389*3ac0a46fSAndroid Build Coastguard Worker // convert |password| to the other encoding. 390*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_DOCUMENT FPDF_CALLCONV 391*3ac0a46fSAndroid Build Coastguard Worker FPDF_LoadDocument(FPDF_STRING file_path, FPDF_BYTESTRING password); 392*3ac0a46fSAndroid Build Coastguard Worker 393*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_LoadMemDocument 394*3ac0a46fSAndroid Build Coastguard Worker // Open and load a PDF document from memory. 395*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 396*3ac0a46fSAndroid Build Coastguard Worker // data_buf - Pointer to a buffer containing the PDF document. 397*3ac0a46fSAndroid Build Coastguard Worker // size - Number of bytes in the PDF document. 398*3ac0a46fSAndroid Build Coastguard Worker // password - A string used as the password for the PDF file. 399*3ac0a46fSAndroid Build Coastguard Worker // If no password is needed, empty or NULL can be used. 400*3ac0a46fSAndroid Build Coastguard Worker // Return value: 401*3ac0a46fSAndroid Build Coastguard Worker // A handle to the loaded document, or NULL on failure. 402*3ac0a46fSAndroid Build Coastguard Worker // Comments: 403*3ac0a46fSAndroid Build Coastguard Worker // The memory buffer must remain valid when the document is open. 404*3ac0a46fSAndroid Build Coastguard Worker // The loaded document can be closed by FPDF_CloseDocument. 405*3ac0a46fSAndroid Build Coastguard Worker // If this function fails, you can use FPDF_GetLastError() to retrieve 406*3ac0a46fSAndroid Build Coastguard Worker // the reason why it failed. 407*3ac0a46fSAndroid Build Coastguard Worker // 408*3ac0a46fSAndroid Build Coastguard Worker // See the comments for FPDF_LoadDocument() regarding the encoding for 409*3ac0a46fSAndroid Build Coastguard Worker // |password|. 410*3ac0a46fSAndroid Build Coastguard Worker // Notes: 411*3ac0a46fSAndroid Build Coastguard Worker // If PDFium is built with the XFA module, the application should call 412*3ac0a46fSAndroid Build Coastguard Worker // FPDF_LoadXFA() function after the PDF document loaded to support XFA 413*3ac0a46fSAndroid Build Coastguard Worker // fields defined in the fpdfformfill.h file. 414*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_DOCUMENT FPDF_CALLCONV 415*3ac0a46fSAndroid Build Coastguard Worker FPDF_LoadMemDocument(const void* data_buf, int size, FPDF_BYTESTRING password); 416*3ac0a46fSAndroid Build Coastguard Worker 417*3ac0a46fSAndroid Build Coastguard Worker // Experimental API. 418*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_LoadMemDocument64 419*3ac0a46fSAndroid Build Coastguard Worker // Open and load a PDF document from memory. 420*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 421*3ac0a46fSAndroid Build Coastguard Worker // data_buf - Pointer to a buffer containing the PDF document. 422*3ac0a46fSAndroid Build Coastguard Worker // size - Number of bytes in the PDF document. 423*3ac0a46fSAndroid Build Coastguard Worker // password - A string used as the password for the PDF file. 424*3ac0a46fSAndroid Build Coastguard Worker // If no password is needed, empty or NULL can be used. 425*3ac0a46fSAndroid Build Coastguard Worker // Return value: 426*3ac0a46fSAndroid Build Coastguard Worker // A handle to the loaded document, or NULL on failure. 427*3ac0a46fSAndroid Build Coastguard Worker // Comments: 428*3ac0a46fSAndroid Build Coastguard Worker // The memory buffer must remain valid when the document is open. 429*3ac0a46fSAndroid Build Coastguard Worker // The loaded document can be closed by FPDF_CloseDocument. 430*3ac0a46fSAndroid Build Coastguard Worker // If this function fails, you can use FPDF_GetLastError() to retrieve 431*3ac0a46fSAndroid Build Coastguard Worker // the reason why it failed. 432*3ac0a46fSAndroid Build Coastguard Worker // 433*3ac0a46fSAndroid Build Coastguard Worker // See the comments for FPDF_LoadDocument() regarding the encoding for 434*3ac0a46fSAndroid Build Coastguard Worker // |password|. 435*3ac0a46fSAndroid Build Coastguard Worker // Notes: 436*3ac0a46fSAndroid Build Coastguard Worker // If PDFium is built with the XFA module, the application should call 437*3ac0a46fSAndroid Build Coastguard Worker // FPDF_LoadXFA() function after the PDF document loaded to support XFA 438*3ac0a46fSAndroid Build Coastguard Worker // fields defined in the fpdfformfill.h file. 439*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_DOCUMENT FPDF_CALLCONV 440*3ac0a46fSAndroid Build Coastguard Worker FPDF_LoadMemDocument64(const void* data_buf, 441*3ac0a46fSAndroid Build Coastguard Worker size_t size, 442*3ac0a46fSAndroid Build Coastguard Worker FPDF_BYTESTRING password); 443*3ac0a46fSAndroid Build Coastguard Worker 444*3ac0a46fSAndroid Build Coastguard Worker // Structure for custom file access. 445*3ac0a46fSAndroid Build Coastguard Worker typedef struct { 446*3ac0a46fSAndroid Build Coastguard Worker // File length, in bytes. 447*3ac0a46fSAndroid Build Coastguard Worker unsigned long m_FileLen; 448*3ac0a46fSAndroid Build Coastguard Worker 449*3ac0a46fSAndroid Build Coastguard Worker // A function pointer for getting a block of data from a specific position. 450*3ac0a46fSAndroid Build Coastguard Worker // Position is specified by byte offset from the beginning of the file. 451*3ac0a46fSAndroid Build Coastguard Worker // The pointer to the buffer is never NULL and the size is never 0. 452*3ac0a46fSAndroid Build Coastguard Worker // The position and size will never go out of range of the file length. 453*3ac0a46fSAndroid Build Coastguard Worker // It may be possible for PDFium to call this function multiple times for 454*3ac0a46fSAndroid Build Coastguard Worker // the same position. 455*3ac0a46fSAndroid Build Coastguard Worker // Return value: should be non-zero if successful, zero for error. 456*3ac0a46fSAndroid Build Coastguard Worker int (*m_GetBlock)(void* param, 457*3ac0a46fSAndroid Build Coastguard Worker unsigned long position, 458*3ac0a46fSAndroid Build Coastguard Worker unsigned char* pBuf, 459*3ac0a46fSAndroid Build Coastguard Worker unsigned long size); 460*3ac0a46fSAndroid Build Coastguard Worker 461*3ac0a46fSAndroid Build Coastguard Worker // A custom pointer for all implementation specific data. This pointer will 462*3ac0a46fSAndroid Build Coastguard Worker // be used as the first parameter to the m_GetBlock callback. 463*3ac0a46fSAndroid Build Coastguard Worker void* m_Param; 464*3ac0a46fSAndroid Build Coastguard Worker } FPDF_FILEACCESS; 465*3ac0a46fSAndroid Build Coastguard Worker 466*3ac0a46fSAndroid Build Coastguard Worker /* 467*3ac0a46fSAndroid Build Coastguard Worker * Structure for file reading or writing (I/O). 468*3ac0a46fSAndroid Build Coastguard Worker * 469*3ac0a46fSAndroid Build Coastguard Worker * Note: This is a handler and should be implemented by callers, 470*3ac0a46fSAndroid Build Coastguard Worker * and is only used from XFA. 471*3ac0a46fSAndroid Build Coastguard Worker */ 472*3ac0a46fSAndroid Build Coastguard Worker typedef struct FPDF_FILEHANDLER_ { 473*3ac0a46fSAndroid Build Coastguard Worker /* 474*3ac0a46fSAndroid Build Coastguard Worker * User-defined data. 475*3ac0a46fSAndroid Build Coastguard Worker * Note: Callers can use this field to track controls. 476*3ac0a46fSAndroid Build Coastguard Worker */ 477*3ac0a46fSAndroid Build Coastguard Worker void* clientData; 478*3ac0a46fSAndroid Build Coastguard Worker 479*3ac0a46fSAndroid Build Coastguard Worker /* 480*3ac0a46fSAndroid Build Coastguard Worker * Callback function to release the current file stream object. 481*3ac0a46fSAndroid Build Coastguard Worker * 482*3ac0a46fSAndroid Build Coastguard Worker * Parameters: 483*3ac0a46fSAndroid Build Coastguard Worker * clientData - Pointer to user-defined data. 484*3ac0a46fSAndroid Build Coastguard Worker * Returns: 485*3ac0a46fSAndroid Build Coastguard Worker * None. 486*3ac0a46fSAndroid Build Coastguard Worker */ 487*3ac0a46fSAndroid Build Coastguard Worker void (*Release)(void* clientData); 488*3ac0a46fSAndroid Build Coastguard Worker 489*3ac0a46fSAndroid Build Coastguard Worker /* 490*3ac0a46fSAndroid Build Coastguard Worker * Callback function to retrieve the current file stream size. 491*3ac0a46fSAndroid Build Coastguard Worker * 492*3ac0a46fSAndroid Build Coastguard Worker * Parameters: 493*3ac0a46fSAndroid Build Coastguard Worker * clientData - Pointer to user-defined data. 494*3ac0a46fSAndroid Build Coastguard Worker * Returns: 495*3ac0a46fSAndroid Build Coastguard Worker * Size of file stream. 496*3ac0a46fSAndroid Build Coastguard Worker */ 497*3ac0a46fSAndroid Build Coastguard Worker FPDF_DWORD (*GetSize)(void* clientData); 498*3ac0a46fSAndroid Build Coastguard Worker 499*3ac0a46fSAndroid Build Coastguard Worker /* 500*3ac0a46fSAndroid Build Coastguard Worker * Callback function to read data from the current file stream. 501*3ac0a46fSAndroid Build Coastguard Worker * 502*3ac0a46fSAndroid Build Coastguard Worker * Parameters: 503*3ac0a46fSAndroid Build Coastguard Worker * clientData - Pointer to user-defined data. 504*3ac0a46fSAndroid Build Coastguard Worker * offset - Offset position starts from the beginning of file 505*3ac0a46fSAndroid Build Coastguard Worker * stream. This parameter indicates reading position. 506*3ac0a46fSAndroid Build Coastguard Worker * buffer - Memory buffer to store data which are read from 507*3ac0a46fSAndroid Build Coastguard Worker * file stream. This parameter should not be NULL. 508*3ac0a46fSAndroid Build Coastguard Worker * size - Size of data which should be read from file stream, 509*3ac0a46fSAndroid Build Coastguard Worker * in bytes. The buffer indicated by |buffer| must be 510*3ac0a46fSAndroid Build Coastguard Worker * large enough to store specified data. 511*3ac0a46fSAndroid Build Coastguard Worker * Returns: 512*3ac0a46fSAndroid Build Coastguard Worker * 0 for success, other value for failure. 513*3ac0a46fSAndroid Build Coastguard Worker */ 514*3ac0a46fSAndroid Build Coastguard Worker FPDF_RESULT (*ReadBlock)(void* clientData, 515*3ac0a46fSAndroid Build Coastguard Worker FPDF_DWORD offset, 516*3ac0a46fSAndroid Build Coastguard Worker void* buffer, 517*3ac0a46fSAndroid Build Coastguard Worker FPDF_DWORD size); 518*3ac0a46fSAndroid Build Coastguard Worker 519*3ac0a46fSAndroid Build Coastguard Worker /* 520*3ac0a46fSAndroid Build Coastguard Worker * Callback function to write data into the current file stream. 521*3ac0a46fSAndroid Build Coastguard Worker * 522*3ac0a46fSAndroid Build Coastguard Worker * Parameters: 523*3ac0a46fSAndroid Build Coastguard Worker * clientData - Pointer to user-defined data. 524*3ac0a46fSAndroid Build Coastguard Worker * offset - Offset position starts from the beginning of file 525*3ac0a46fSAndroid Build Coastguard Worker * stream. This parameter indicates writing position. 526*3ac0a46fSAndroid Build Coastguard Worker * buffer - Memory buffer contains data which is written into 527*3ac0a46fSAndroid Build Coastguard Worker * file stream. This parameter should not be NULL. 528*3ac0a46fSAndroid Build Coastguard Worker * size - Size of data which should be written into file 529*3ac0a46fSAndroid Build Coastguard Worker * stream, in bytes. 530*3ac0a46fSAndroid Build Coastguard Worker * Returns: 531*3ac0a46fSAndroid Build Coastguard Worker * 0 for success, other value for failure. 532*3ac0a46fSAndroid Build Coastguard Worker */ 533*3ac0a46fSAndroid Build Coastguard Worker FPDF_RESULT (*WriteBlock)(void* clientData, 534*3ac0a46fSAndroid Build Coastguard Worker FPDF_DWORD offset, 535*3ac0a46fSAndroid Build Coastguard Worker const void* buffer, 536*3ac0a46fSAndroid Build Coastguard Worker FPDF_DWORD size); 537*3ac0a46fSAndroid Build Coastguard Worker /* 538*3ac0a46fSAndroid Build Coastguard Worker * Callback function to flush all internal accessing buffers. 539*3ac0a46fSAndroid Build Coastguard Worker * 540*3ac0a46fSAndroid Build Coastguard Worker * Parameters: 541*3ac0a46fSAndroid Build Coastguard Worker * clientData - Pointer to user-defined data. 542*3ac0a46fSAndroid Build Coastguard Worker * Returns: 543*3ac0a46fSAndroid Build Coastguard Worker * 0 for success, other value for failure. 544*3ac0a46fSAndroid Build Coastguard Worker */ 545*3ac0a46fSAndroid Build Coastguard Worker FPDF_RESULT (*Flush)(void* clientData); 546*3ac0a46fSAndroid Build Coastguard Worker 547*3ac0a46fSAndroid Build Coastguard Worker /* 548*3ac0a46fSAndroid Build Coastguard Worker * Callback function to change file size. 549*3ac0a46fSAndroid Build Coastguard Worker * 550*3ac0a46fSAndroid Build Coastguard Worker * Description: 551*3ac0a46fSAndroid Build Coastguard Worker * This function is called under writing mode usually. Implementer 552*3ac0a46fSAndroid Build Coastguard Worker * can determine whether to realize it based on application requests. 553*3ac0a46fSAndroid Build Coastguard Worker * Parameters: 554*3ac0a46fSAndroid Build Coastguard Worker * clientData - Pointer to user-defined data. 555*3ac0a46fSAndroid Build Coastguard Worker * size - New size of file stream, in bytes. 556*3ac0a46fSAndroid Build Coastguard Worker * Returns: 557*3ac0a46fSAndroid Build Coastguard Worker * 0 for success, other value for failure. 558*3ac0a46fSAndroid Build Coastguard Worker */ 559*3ac0a46fSAndroid Build Coastguard Worker FPDF_RESULT (*Truncate)(void* clientData, FPDF_DWORD size); 560*3ac0a46fSAndroid Build Coastguard Worker } FPDF_FILEHANDLER; 561*3ac0a46fSAndroid Build Coastguard Worker 562*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_LoadCustomDocument 563*3ac0a46fSAndroid Build Coastguard Worker // Load PDF document from a custom access descriptor. 564*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 565*3ac0a46fSAndroid Build Coastguard Worker // pFileAccess - A structure for accessing the file. 566*3ac0a46fSAndroid Build Coastguard Worker // password - Optional password for decrypting the PDF file. 567*3ac0a46fSAndroid Build Coastguard Worker // Return value: 568*3ac0a46fSAndroid Build Coastguard Worker // A handle to the loaded document, or NULL on failure. 569*3ac0a46fSAndroid Build Coastguard Worker // Comments: 570*3ac0a46fSAndroid Build Coastguard Worker // The application must keep the file resources |pFileAccess| points to 571*3ac0a46fSAndroid Build Coastguard Worker // valid until the returned FPDF_DOCUMENT is closed. |pFileAccess| 572*3ac0a46fSAndroid Build Coastguard Worker // itself does not need to outlive the FPDF_DOCUMENT. 573*3ac0a46fSAndroid Build Coastguard Worker // 574*3ac0a46fSAndroid Build Coastguard Worker // The loaded document can be closed with FPDF_CloseDocument(). 575*3ac0a46fSAndroid Build Coastguard Worker // 576*3ac0a46fSAndroid Build Coastguard Worker // See the comments for FPDF_LoadDocument() regarding the encoding for 577*3ac0a46fSAndroid Build Coastguard Worker // |password|. 578*3ac0a46fSAndroid Build Coastguard Worker // Notes: 579*3ac0a46fSAndroid Build Coastguard Worker // If PDFium is built with the XFA module, the application should call 580*3ac0a46fSAndroid Build Coastguard Worker // FPDF_LoadXFA() function after the PDF document loaded to support XFA 581*3ac0a46fSAndroid Build Coastguard Worker // fields defined in the fpdfformfill.h file. 582*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_DOCUMENT FPDF_CALLCONV 583*3ac0a46fSAndroid Build Coastguard Worker FPDF_LoadCustomDocument(FPDF_FILEACCESS* pFileAccess, FPDF_BYTESTRING password); 584*3ac0a46fSAndroid Build Coastguard Worker 585*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetFileVersion 586*3ac0a46fSAndroid Build Coastguard Worker // Get the file version of the given PDF document. 587*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 588*3ac0a46fSAndroid Build Coastguard Worker // doc - Handle to a document. 589*3ac0a46fSAndroid Build Coastguard Worker // fileVersion - The PDF file version. File version: 14 for 1.4, 15 590*3ac0a46fSAndroid Build Coastguard Worker // for 1.5, ... 591*3ac0a46fSAndroid Build Coastguard Worker // Return value: 592*3ac0a46fSAndroid Build Coastguard Worker // True if succeeds, false otherwise. 593*3ac0a46fSAndroid Build Coastguard Worker // Comments: 594*3ac0a46fSAndroid Build Coastguard Worker // If the document was created by FPDF_CreateNewDocument, 595*3ac0a46fSAndroid Build Coastguard Worker // then this function will always fail. 596*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_GetFileVersion(FPDF_DOCUMENT doc, 597*3ac0a46fSAndroid Build Coastguard Worker int* fileVersion); 598*3ac0a46fSAndroid Build Coastguard Worker 599*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ERR_SUCCESS 0 // No error. 600*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ERR_UNKNOWN 1 // Unknown error. 601*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ERR_FILE 2 // File not found or could not be opened. 602*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ERR_FORMAT 3 // File not in PDF format or corrupted. 603*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ERR_PASSWORD 4 // Password required or incorrect password. 604*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ERR_SECURITY 5 // Unsupported security scheme. 605*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ERR_PAGE 6 // Page not found or content error. 606*3ac0a46fSAndroid Build Coastguard Worker #ifdef PDF_ENABLE_XFA 607*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ERR_XFALOAD 7 // Load XFA error. 608*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ERR_XFALAYOUT 8 // Layout XFA error. 609*3ac0a46fSAndroid Build Coastguard Worker #endif // PDF_ENABLE_XFA 610*3ac0a46fSAndroid Build Coastguard Worker 611*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetLastError 612*3ac0a46fSAndroid Build Coastguard Worker // Get last error code when a function fails. 613*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 614*3ac0a46fSAndroid Build Coastguard Worker // None. 615*3ac0a46fSAndroid Build Coastguard Worker // Return value: 616*3ac0a46fSAndroid Build Coastguard Worker // A 32-bit integer indicating error code as defined above. 617*3ac0a46fSAndroid Build Coastguard Worker // Comments: 618*3ac0a46fSAndroid Build Coastguard Worker // If the previous SDK call succeeded, the return value of this 619*3ac0a46fSAndroid Build Coastguard Worker // function is not defined. This function only works in conjunction 620*3ac0a46fSAndroid Build Coastguard Worker // with APIs that mention FPDF_GetLastError() in their documentation. 621*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV FPDF_GetLastError(); 622*3ac0a46fSAndroid Build Coastguard Worker 623*3ac0a46fSAndroid Build Coastguard Worker // Experimental API. 624*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_DocumentHasValidCrossReferenceTable 625*3ac0a46fSAndroid Build Coastguard Worker // Whether the document's cross reference table is valid or not. 626*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 627*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to a document. Returned by FPDF_LoadDocument. 628*3ac0a46fSAndroid Build Coastguard Worker // Return value: 629*3ac0a46fSAndroid Build Coastguard Worker // True if the PDF parser did not encounter problems parsing the cross 630*3ac0a46fSAndroid Build Coastguard Worker // reference table. False if the parser could not parse the cross 631*3ac0a46fSAndroid Build Coastguard Worker // reference table and the table had to be rebuild from other data 632*3ac0a46fSAndroid Build Coastguard Worker // within the document. 633*3ac0a46fSAndroid Build Coastguard Worker // Comments: 634*3ac0a46fSAndroid Build Coastguard Worker // The return value can change over time as the PDF parser evolves. 635*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 636*3ac0a46fSAndroid Build Coastguard Worker FPDF_DocumentHasValidCrossReferenceTable(FPDF_DOCUMENT document); 637*3ac0a46fSAndroid Build Coastguard Worker 638*3ac0a46fSAndroid Build Coastguard Worker // Experimental API. 639*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetTrailerEnds 640*3ac0a46fSAndroid Build Coastguard Worker // Get the byte offsets of trailer ends. 641*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 642*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to document. Returned by FPDF_LoadDocument(). 643*3ac0a46fSAndroid Build Coastguard Worker // buffer - The address of a buffer that receives the 644*3ac0a46fSAndroid Build Coastguard Worker // byte offsets. 645*3ac0a46fSAndroid Build Coastguard Worker // length - The size, in ints, of |buffer|. 646*3ac0a46fSAndroid Build Coastguard Worker // Return value: 647*3ac0a46fSAndroid Build Coastguard Worker // Returns the number of ints in the buffer on success, 0 on error. 648*3ac0a46fSAndroid Build Coastguard Worker // 649*3ac0a46fSAndroid Build Coastguard Worker // |buffer| is an array of integers that describes the exact byte offsets of the 650*3ac0a46fSAndroid Build Coastguard Worker // trailer ends in the document. If |length| is less than the returned length, 651*3ac0a46fSAndroid Build Coastguard Worker // or |document| or |buffer| is NULL, |buffer| will not be modified. 652*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV 653*3ac0a46fSAndroid Build Coastguard Worker FPDF_GetTrailerEnds(FPDF_DOCUMENT document, 654*3ac0a46fSAndroid Build Coastguard Worker unsigned int* buffer, 655*3ac0a46fSAndroid Build Coastguard Worker unsigned long length); 656*3ac0a46fSAndroid Build Coastguard Worker 657*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetDocPermission 658*3ac0a46fSAndroid Build Coastguard Worker // Get file permission flags of the document. 659*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 660*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to a document. Returned by FPDF_LoadDocument. 661*3ac0a46fSAndroid Build Coastguard Worker // Return value: 662*3ac0a46fSAndroid Build Coastguard Worker // A 32-bit integer indicating permission flags. Please refer to the 663*3ac0a46fSAndroid Build Coastguard Worker // PDF Reference for detailed descriptions. If the document is not 664*3ac0a46fSAndroid Build Coastguard Worker // protected, 0xffffffff will be returned. 665*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV 666*3ac0a46fSAndroid Build Coastguard Worker FPDF_GetDocPermissions(FPDF_DOCUMENT document); 667*3ac0a46fSAndroid Build Coastguard Worker 668*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetSecurityHandlerRevision 669*3ac0a46fSAndroid Build Coastguard Worker // Get the revision for the security handler. 670*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 671*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to a document. Returned by FPDF_LoadDocument. 672*3ac0a46fSAndroid Build Coastguard Worker // Return value: 673*3ac0a46fSAndroid Build Coastguard Worker // The security handler revision number. Please refer to the PDF 674*3ac0a46fSAndroid Build Coastguard Worker // Reference for a detailed description. If the document is not 675*3ac0a46fSAndroid Build Coastguard Worker // protected, -1 will be returned. 676*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV 677*3ac0a46fSAndroid Build Coastguard Worker FPDF_GetSecurityHandlerRevision(FPDF_DOCUMENT document); 678*3ac0a46fSAndroid Build Coastguard Worker 679*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetPageCount 680*3ac0a46fSAndroid Build Coastguard Worker // Get total number of pages in the document. 681*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 682*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to document. Returned by FPDF_LoadDocument. 683*3ac0a46fSAndroid Build Coastguard Worker // Return value: 684*3ac0a46fSAndroid Build Coastguard Worker // Total number of pages in the document. 685*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDF_GetPageCount(FPDF_DOCUMENT document); 686*3ac0a46fSAndroid Build Coastguard Worker 687*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_LoadPage 688*3ac0a46fSAndroid Build Coastguard Worker // Load a page inside the document. 689*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 690*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to document. Returned by FPDF_LoadDocument 691*3ac0a46fSAndroid Build Coastguard Worker // page_index - Index number of the page. 0 for the first page. 692*3ac0a46fSAndroid Build Coastguard Worker // Return value: 693*3ac0a46fSAndroid Build Coastguard Worker // A handle to the loaded page, or NULL if page load fails. 694*3ac0a46fSAndroid Build Coastguard Worker // Comments: 695*3ac0a46fSAndroid Build Coastguard Worker // The loaded page can be rendered to devices using FPDF_RenderPage. 696*3ac0a46fSAndroid Build Coastguard Worker // The loaded page can be closed using FPDF_ClosePage. 697*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_PAGE FPDF_CALLCONV FPDF_LoadPage(FPDF_DOCUMENT document, 698*3ac0a46fSAndroid Build Coastguard Worker int page_index); 699*3ac0a46fSAndroid Build Coastguard Worker 700*3ac0a46fSAndroid Build Coastguard Worker // Experimental API 701*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetPageWidthF 702*3ac0a46fSAndroid Build Coastguard Worker // Get page width. 703*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 704*3ac0a46fSAndroid Build Coastguard Worker // page - Handle to the page. Returned by FPDF_LoadPage(). 705*3ac0a46fSAndroid Build Coastguard Worker // Return value: 706*3ac0a46fSAndroid Build Coastguard Worker // Page width (excluding non-displayable area) measured in points. 707*3ac0a46fSAndroid Build Coastguard Worker // One point is 1/72 inch (around 0.3528 mm). 708*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT float FPDF_CALLCONV FPDF_GetPageWidthF(FPDF_PAGE page); 709*3ac0a46fSAndroid Build Coastguard Worker 710*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetPageWidth 711*3ac0a46fSAndroid Build Coastguard Worker // Get page width. 712*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 713*3ac0a46fSAndroid Build Coastguard Worker // page - Handle to the page. Returned by FPDF_LoadPage. 714*3ac0a46fSAndroid Build Coastguard Worker // Return value: 715*3ac0a46fSAndroid Build Coastguard Worker // Page width (excluding non-displayable area) measured in points. 716*3ac0a46fSAndroid Build Coastguard Worker // One point is 1/72 inch (around 0.3528 mm). 717*3ac0a46fSAndroid Build Coastguard Worker // Note: 718*3ac0a46fSAndroid Build Coastguard Worker // Prefer FPDF_GetPageWidthF() above. This will be deprecated in the 719*3ac0a46fSAndroid Build Coastguard Worker // future. 720*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT double FPDF_CALLCONV FPDF_GetPageWidth(FPDF_PAGE page); 721*3ac0a46fSAndroid Build Coastguard Worker 722*3ac0a46fSAndroid Build Coastguard Worker // Experimental API 723*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetPageHeightF 724*3ac0a46fSAndroid Build Coastguard Worker // Get page height. 725*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 726*3ac0a46fSAndroid Build Coastguard Worker // page - Handle to the page. Returned by FPDF_LoadPage(). 727*3ac0a46fSAndroid Build Coastguard Worker // Return value: 728*3ac0a46fSAndroid Build Coastguard Worker // Page height (excluding non-displayable area) measured in points. 729*3ac0a46fSAndroid Build Coastguard Worker // One point is 1/72 inch (around 0.3528 mm) 730*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT float FPDF_CALLCONV FPDF_GetPageHeightF(FPDF_PAGE page); 731*3ac0a46fSAndroid Build Coastguard Worker 732*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetPageHeight 733*3ac0a46fSAndroid Build Coastguard Worker // Get page height. 734*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 735*3ac0a46fSAndroid Build Coastguard Worker // page - Handle to the page. Returned by FPDF_LoadPage. 736*3ac0a46fSAndroid Build Coastguard Worker // Return value: 737*3ac0a46fSAndroid Build Coastguard Worker // Page height (excluding non-displayable area) measured in points. 738*3ac0a46fSAndroid Build Coastguard Worker // One point is 1/72 inch (around 0.3528 mm) 739*3ac0a46fSAndroid Build Coastguard Worker // Note: 740*3ac0a46fSAndroid Build Coastguard Worker // Prefer FPDF_GetPageHeightF() above. This will be deprecated in the 741*3ac0a46fSAndroid Build Coastguard Worker // future. 742*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT double FPDF_CALLCONV FPDF_GetPageHeight(FPDF_PAGE page); 743*3ac0a46fSAndroid Build Coastguard Worker 744*3ac0a46fSAndroid Build Coastguard Worker // Experimental API. 745*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetPageBoundingBox 746*3ac0a46fSAndroid Build Coastguard Worker // Get the bounding box of the page. This is the intersection between 747*3ac0a46fSAndroid Build Coastguard Worker // its media box and its crop box. 748*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 749*3ac0a46fSAndroid Build Coastguard Worker // page - Handle to the page. Returned by FPDF_LoadPage. 750*3ac0a46fSAndroid Build Coastguard Worker // rect - Pointer to a rect to receive the page bounding box. 751*3ac0a46fSAndroid Build Coastguard Worker // On an error, |rect| won't be filled. 752*3ac0a46fSAndroid Build Coastguard Worker // Return value: 753*3ac0a46fSAndroid Build Coastguard Worker // True for success. 754*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_GetPageBoundingBox(FPDF_PAGE page, 755*3ac0a46fSAndroid Build Coastguard Worker FS_RECTF* rect); 756*3ac0a46fSAndroid Build Coastguard Worker 757*3ac0a46fSAndroid Build Coastguard Worker // Experimental API. 758*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetPageSizeByIndexF 759*3ac0a46fSAndroid Build Coastguard Worker // Get the size of the page at the given index. 760*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 761*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to document. Returned by FPDF_LoadDocument(). 762*3ac0a46fSAndroid Build Coastguard Worker // page_index - Page index, zero for the first page. 763*3ac0a46fSAndroid Build Coastguard Worker // size - Pointer to a FS_SIZEF to receive the page size. 764*3ac0a46fSAndroid Build Coastguard Worker // (in points). 765*3ac0a46fSAndroid Build Coastguard Worker // Return value: 766*3ac0a46fSAndroid Build Coastguard Worker // Non-zero for success. 0 for error (document or page not found). 767*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 768*3ac0a46fSAndroid Build Coastguard Worker FPDF_GetPageSizeByIndexF(FPDF_DOCUMENT document, 769*3ac0a46fSAndroid Build Coastguard Worker int page_index, 770*3ac0a46fSAndroid Build Coastguard Worker FS_SIZEF* size); 771*3ac0a46fSAndroid Build Coastguard Worker 772*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetPageSizeByIndex 773*3ac0a46fSAndroid Build Coastguard Worker // Get the size of the page at the given index. 774*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 775*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to document. Returned by FPDF_LoadDocument. 776*3ac0a46fSAndroid Build Coastguard Worker // page_index - Page index, zero for the first page. 777*3ac0a46fSAndroid Build Coastguard Worker // width - Pointer to a double to receive the page width 778*3ac0a46fSAndroid Build Coastguard Worker // (in points). 779*3ac0a46fSAndroid Build Coastguard Worker // height - Pointer to a double to receive the page height 780*3ac0a46fSAndroid Build Coastguard Worker // (in points). 781*3ac0a46fSAndroid Build Coastguard Worker // Return value: 782*3ac0a46fSAndroid Build Coastguard Worker // Non-zero for success. 0 for error (document or page not found). 783*3ac0a46fSAndroid Build Coastguard Worker // Note: 784*3ac0a46fSAndroid Build Coastguard Worker // Prefer FPDF_GetPageSizeByIndexF() above. This will be deprecated in 785*3ac0a46fSAndroid Build Coastguard Worker // the future. 786*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document, 787*3ac0a46fSAndroid Build Coastguard Worker int page_index, 788*3ac0a46fSAndroid Build Coastguard Worker double* width, 789*3ac0a46fSAndroid Build Coastguard Worker double* height); 790*3ac0a46fSAndroid Build Coastguard Worker 791*3ac0a46fSAndroid Build Coastguard Worker // Page rendering flags. They can be combined with bit-wise OR. 792*3ac0a46fSAndroid Build Coastguard Worker // 793*3ac0a46fSAndroid Build Coastguard Worker // Set if annotations are to be rendered. 794*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ANNOT 0x01 795*3ac0a46fSAndroid Build Coastguard Worker // Set if using text rendering optimized for LCD display. This flag will only 796*3ac0a46fSAndroid Build Coastguard Worker // take effect if anti-aliasing is enabled for text. 797*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_LCD_TEXT 0x02 798*3ac0a46fSAndroid Build Coastguard Worker // Don't use the native text output available on some platforms 799*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_NO_NATIVETEXT 0x04 800*3ac0a46fSAndroid Build Coastguard Worker // Grayscale output. 801*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_GRAYSCALE 0x08 802*3ac0a46fSAndroid Build Coastguard Worker // Obsolete, has no effect, retained for compatibility. 803*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_DEBUG_INFO 0x80 804*3ac0a46fSAndroid Build Coastguard Worker // Obsolete, has no effect, retained for compatibility. 805*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_NO_CATCH 0x100 806*3ac0a46fSAndroid Build Coastguard Worker // Limit image cache size. 807*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_RENDER_LIMITEDIMAGECACHE 0x200 808*3ac0a46fSAndroid Build Coastguard Worker // Always use halftone for image stretching. 809*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_RENDER_FORCEHALFTONE 0x400 810*3ac0a46fSAndroid Build Coastguard Worker // Render for printing. 811*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_PRINTING 0x800 812*3ac0a46fSAndroid Build Coastguard Worker // Set to disable anti-aliasing on text. This flag will also disable LCD 813*3ac0a46fSAndroid Build Coastguard Worker // optimization for text rendering. 814*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_RENDER_NO_SMOOTHTEXT 0x1000 815*3ac0a46fSAndroid Build Coastguard Worker // Set to disable anti-aliasing on images. 816*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_RENDER_NO_SMOOTHIMAGE 0x2000 817*3ac0a46fSAndroid Build Coastguard Worker // Set to disable anti-aliasing on paths. 818*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_RENDER_NO_SMOOTHPATH 0x4000 819*3ac0a46fSAndroid Build Coastguard Worker // Set whether to render in a reverse Byte order, this flag is only used when 820*3ac0a46fSAndroid Build Coastguard Worker // rendering to a bitmap. 821*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_REVERSE_BYTE_ORDER 0x10 822*3ac0a46fSAndroid Build Coastguard Worker // Set whether fill paths need to be stroked. This flag is only used when 823*3ac0a46fSAndroid Build Coastguard Worker // FPDF_COLORSCHEME is passed in, since with a single fill color for paths the 824*3ac0a46fSAndroid Build Coastguard Worker // boundaries of adjacent fill paths are less visible. 825*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_CONVERT_FILL_TO_STROKE 0x20 826*3ac0a46fSAndroid Build Coastguard Worker 827*3ac0a46fSAndroid Build Coastguard Worker // Struct for color scheme. 828*3ac0a46fSAndroid Build Coastguard Worker // Each should be a 32-bit value specifying the color, in 8888 ARGB format. 829*3ac0a46fSAndroid Build Coastguard Worker typedef struct FPDF_COLORSCHEME_ { 830*3ac0a46fSAndroid Build Coastguard Worker FPDF_DWORD path_fill_color; 831*3ac0a46fSAndroid Build Coastguard Worker FPDF_DWORD path_stroke_color; 832*3ac0a46fSAndroid Build Coastguard Worker FPDF_DWORD text_fill_color; 833*3ac0a46fSAndroid Build Coastguard Worker FPDF_DWORD text_stroke_color; 834*3ac0a46fSAndroid Build Coastguard Worker } FPDF_COLORSCHEME; 835*3ac0a46fSAndroid Build Coastguard Worker 836*3ac0a46fSAndroid Build Coastguard Worker #ifdef _WIN32 837*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_RenderPage 838*3ac0a46fSAndroid Build Coastguard Worker // Render contents of a page to a device (screen, bitmap, or printer). 839*3ac0a46fSAndroid Build Coastguard Worker // This function is only supported on Windows. 840*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 841*3ac0a46fSAndroid Build Coastguard Worker // dc - Handle to the device context. 842*3ac0a46fSAndroid Build Coastguard Worker // page - Handle to the page. Returned by FPDF_LoadPage. 843*3ac0a46fSAndroid Build Coastguard Worker // start_x - Left pixel position of the display area in 844*3ac0a46fSAndroid Build Coastguard Worker // device coordinates. 845*3ac0a46fSAndroid Build Coastguard Worker // start_y - Top pixel position of the display area in device 846*3ac0a46fSAndroid Build Coastguard Worker // coordinates. 847*3ac0a46fSAndroid Build Coastguard Worker // size_x - Horizontal size (in pixels) for displaying the page. 848*3ac0a46fSAndroid Build Coastguard Worker // size_y - Vertical size (in pixels) for displaying the page. 849*3ac0a46fSAndroid Build Coastguard Worker // rotate - Page orientation: 850*3ac0a46fSAndroid Build Coastguard Worker // 0 (normal) 851*3ac0a46fSAndroid Build Coastguard Worker // 1 (rotated 90 degrees clockwise) 852*3ac0a46fSAndroid Build Coastguard Worker // 2 (rotated 180 degrees) 853*3ac0a46fSAndroid Build Coastguard Worker // 3 (rotated 90 degrees counter-clockwise) 854*3ac0a46fSAndroid Build Coastguard Worker // flags - 0 for normal display, or combination of flags 855*3ac0a46fSAndroid Build Coastguard Worker // defined above. 856*3ac0a46fSAndroid Build Coastguard Worker // Return value: 857*3ac0a46fSAndroid Build Coastguard Worker // None. 858*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDF_RenderPage(HDC dc, 859*3ac0a46fSAndroid Build Coastguard Worker FPDF_PAGE page, 860*3ac0a46fSAndroid Build Coastguard Worker int start_x, 861*3ac0a46fSAndroid Build Coastguard Worker int start_y, 862*3ac0a46fSAndroid Build Coastguard Worker int size_x, 863*3ac0a46fSAndroid Build Coastguard Worker int size_y, 864*3ac0a46fSAndroid Build Coastguard Worker int rotate, 865*3ac0a46fSAndroid Build Coastguard Worker int flags); 866*3ac0a46fSAndroid Build Coastguard Worker #endif 867*3ac0a46fSAndroid Build Coastguard Worker 868*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_RenderPageBitmap 869*3ac0a46fSAndroid Build Coastguard Worker // Render contents of a page to a device independent bitmap. 870*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 871*3ac0a46fSAndroid Build Coastguard Worker // bitmap - Handle to the device independent bitmap (as the 872*3ac0a46fSAndroid Build Coastguard Worker // output buffer). The bitmap handle can be created 873*3ac0a46fSAndroid Build Coastguard Worker // by FPDFBitmap_Create or retrieved from an image 874*3ac0a46fSAndroid Build Coastguard Worker // object by FPDFImageObj_GetBitmap. 875*3ac0a46fSAndroid Build Coastguard Worker // page - Handle to the page. Returned by FPDF_LoadPage 876*3ac0a46fSAndroid Build Coastguard Worker // start_x - Left pixel position of the display area in 877*3ac0a46fSAndroid Build Coastguard Worker // bitmap coordinates. 878*3ac0a46fSAndroid Build Coastguard Worker // start_y - Top pixel position of the display area in bitmap 879*3ac0a46fSAndroid Build Coastguard Worker // coordinates. 880*3ac0a46fSAndroid Build Coastguard Worker // size_x - Horizontal size (in pixels) for displaying the page. 881*3ac0a46fSAndroid Build Coastguard Worker // size_y - Vertical size (in pixels) for displaying the page. 882*3ac0a46fSAndroid Build Coastguard Worker // rotate - Page orientation: 883*3ac0a46fSAndroid Build Coastguard Worker // 0 (normal) 884*3ac0a46fSAndroid Build Coastguard Worker // 1 (rotated 90 degrees clockwise) 885*3ac0a46fSAndroid Build Coastguard Worker // 2 (rotated 180 degrees) 886*3ac0a46fSAndroid Build Coastguard Worker // 3 (rotated 90 degrees counter-clockwise) 887*3ac0a46fSAndroid Build Coastguard Worker // flags - 0 for normal display, or combination of the Page 888*3ac0a46fSAndroid Build Coastguard Worker // Rendering flags defined above. With the FPDF_ANNOT 889*3ac0a46fSAndroid Build Coastguard Worker // flag, it renders all annotations that do not require 890*3ac0a46fSAndroid Build Coastguard Worker // user-interaction, which are all annotations except 891*3ac0a46fSAndroid Build Coastguard Worker // widget and popup annotations. 892*3ac0a46fSAndroid Build Coastguard Worker // Return value: 893*3ac0a46fSAndroid Build Coastguard Worker // None. 894*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDF_RenderPageBitmap(FPDF_BITMAP bitmap, 895*3ac0a46fSAndroid Build Coastguard Worker FPDF_PAGE page, 896*3ac0a46fSAndroid Build Coastguard Worker int start_x, 897*3ac0a46fSAndroid Build Coastguard Worker int start_y, 898*3ac0a46fSAndroid Build Coastguard Worker int size_x, 899*3ac0a46fSAndroid Build Coastguard Worker int size_y, 900*3ac0a46fSAndroid Build Coastguard Worker int rotate, 901*3ac0a46fSAndroid Build Coastguard Worker int flags); 902*3ac0a46fSAndroid Build Coastguard Worker 903*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_RenderPageBitmapWithMatrix 904*3ac0a46fSAndroid Build Coastguard Worker // Render contents of a page to a device independent bitmap. 905*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 906*3ac0a46fSAndroid Build Coastguard Worker // bitmap - Handle to the device independent bitmap (as the 907*3ac0a46fSAndroid Build Coastguard Worker // output buffer). The bitmap handle can be created 908*3ac0a46fSAndroid Build Coastguard Worker // by FPDFBitmap_Create or retrieved by 909*3ac0a46fSAndroid Build Coastguard Worker // FPDFImageObj_GetBitmap. 910*3ac0a46fSAndroid Build Coastguard Worker // page - Handle to the page. Returned by FPDF_LoadPage. 911*3ac0a46fSAndroid Build Coastguard Worker // matrix - The transform matrix, which must be invertible. 912*3ac0a46fSAndroid Build Coastguard Worker // See PDF Reference 1.7, 4.2.2 Common Transformations. 913*3ac0a46fSAndroid Build Coastguard Worker // clipping - The rect to clip to in device coords. 914*3ac0a46fSAndroid Build Coastguard Worker // flags - 0 for normal display, or combination of the Page 915*3ac0a46fSAndroid Build Coastguard Worker // Rendering flags defined above. With the FPDF_ANNOT 916*3ac0a46fSAndroid Build Coastguard Worker // flag, it renders all annotations that do not require 917*3ac0a46fSAndroid Build Coastguard Worker // user-interaction, which are all annotations except 918*3ac0a46fSAndroid Build Coastguard Worker // widget and popup annotations. 919*3ac0a46fSAndroid Build Coastguard Worker // Return value: 920*3ac0a46fSAndroid Build Coastguard Worker // None. Note that behavior is undefined if det of |matrix| is 0. 921*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV 922*3ac0a46fSAndroid Build Coastguard Worker FPDF_RenderPageBitmapWithMatrix(FPDF_BITMAP bitmap, 923*3ac0a46fSAndroid Build Coastguard Worker FPDF_PAGE page, 924*3ac0a46fSAndroid Build Coastguard Worker const FS_MATRIX* matrix, 925*3ac0a46fSAndroid Build Coastguard Worker const FS_RECTF* clipping, 926*3ac0a46fSAndroid Build Coastguard Worker int flags); 927*3ac0a46fSAndroid Build Coastguard Worker 928*3ac0a46fSAndroid Build Coastguard Worker #if defined(_SKIA_SUPPORT_) 929*3ac0a46fSAndroid Build Coastguard Worker // Experimental API. 930*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_RenderPageSkia 931*3ac0a46fSAndroid Build Coastguard Worker // Render contents of a page to a Skia SkCanvas. 932*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 933*3ac0a46fSAndroid Build Coastguard Worker // canvas - SkCanvas to render to. 934*3ac0a46fSAndroid Build Coastguard Worker // page - Handle to the page. 935*3ac0a46fSAndroid Build Coastguard Worker // size_x - Horizontal size (in pixels) for displaying the page. 936*3ac0a46fSAndroid Build Coastguard Worker // size_y - Vertical size (in pixels) for displaying the page. 937*3ac0a46fSAndroid Build Coastguard Worker // Return value: 938*3ac0a46fSAndroid Build Coastguard Worker // None. 939*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDF_RenderPageSkia(FPDF_SKIA_CANVAS canvas, 940*3ac0a46fSAndroid Build Coastguard Worker FPDF_PAGE page, 941*3ac0a46fSAndroid Build Coastguard Worker int size_x, 942*3ac0a46fSAndroid Build Coastguard Worker int size_y); 943*3ac0a46fSAndroid Build Coastguard Worker #endif 944*3ac0a46fSAndroid Build Coastguard Worker 945*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_ClosePage 946*3ac0a46fSAndroid Build Coastguard Worker // Close a loaded PDF page. 947*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 948*3ac0a46fSAndroid Build Coastguard Worker // page - Handle to the loaded page. 949*3ac0a46fSAndroid Build Coastguard Worker // Return value: 950*3ac0a46fSAndroid Build Coastguard Worker // None. 951*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDF_ClosePage(FPDF_PAGE page); 952*3ac0a46fSAndroid Build Coastguard Worker 953*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_CloseDocument 954*3ac0a46fSAndroid Build Coastguard Worker // Close a loaded PDF document. 955*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 956*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to the loaded document. 957*3ac0a46fSAndroid Build Coastguard Worker // Return value: 958*3ac0a46fSAndroid Build Coastguard Worker // None. 959*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDF_CloseDocument(FPDF_DOCUMENT document); 960*3ac0a46fSAndroid Build Coastguard Worker 961*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_DeviceToPage 962*3ac0a46fSAndroid Build Coastguard Worker // Convert the screen coordinates of a point to page coordinates. 963*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 964*3ac0a46fSAndroid Build Coastguard Worker // page - Handle to the page. Returned by FPDF_LoadPage. 965*3ac0a46fSAndroid Build Coastguard Worker // start_x - Left pixel position of the display area in 966*3ac0a46fSAndroid Build Coastguard Worker // device coordinates. 967*3ac0a46fSAndroid Build Coastguard Worker // start_y - Top pixel position of the display area in device 968*3ac0a46fSAndroid Build Coastguard Worker // coordinates. 969*3ac0a46fSAndroid Build Coastguard Worker // size_x - Horizontal size (in pixels) for displaying the page. 970*3ac0a46fSAndroid Build Coastguard Worker // size_y - Vertical size (in pixels) for displaying the page. 971*3ac0a46fSAndroid Build Coastguard Worker // rotate - Page orientation: 972*3ac0a46fSAndroid Build Coastguard Worker // 0 (normal) 973*3ac0a46fSAndroid Build Coastguard Worker // 1 (rotated 90 degrees clockwise) 974*3ac0a46fSAndroid Build Coastguard Worker // 2 (rotated 180 degrees) 975*3ac0a46fSAndroid Build Coastguard Worker // 3 (rotated 90 degrees counter-clockwise) 976*3ac0a46fSAndroid Build Coastguard Worker // device_x - X value in device coordinates to be converted. 977*3ac0a46fSAndroid Build Coastguard Worker // device_y - Y value in device coordinates to be converted. 978*3ac0a46fSAndroid Build Coastguard Worker // page_x - A pointer to a double receiving the converted X 979*3ac0a46fSAndroid Build Coastguard Worker // value in page coordinates. 980*3ac0a46fSAndroid Build Coastguard Worker // page_y - A pointer to a double receiving the converted Y 981*3ac0a46fSAndroid Build Coastguard Worker // value in page coordinates. 982*3ac0a46fSAndroid Build Coastguard Worker // Return value: 983*3ac0a46fSAndroid Build Coastguard Worker // Returns true if the conversion succeeds, and |page_x| and |page_y| 984*3ac0a46fSAndroid Build Coastguard Worker // successfully receives the converted coordinates. 985*3ac0a46fSAndroid Build Coastguard Worker // Comments: 986*3ac0a46fSAndroid Build Coastguard Worker // The page coordinate system has its origin at the left-bottom corner 987*3ac0a46fSAndroid Build Coastguard Worker // of the page, with the X-axis on the bottom going to the right, and 988*3ac0a46fSAndroid Build Coastguard Worker // the Y-axis on the left side going up. 989*3ac0a46fSAndroid Build Coastguard Worker // 990*3ac0a46fSAndroid Build Coastguard Worker // NOTE: this coordinate system can be altered when you zoom, scroll, 991*3ac0a46fSAndroid Build Coastguard Worker // or rotate a page, however, a point on the page should always have 992*3ac0a46fSAndroid Build Coastguard Worker // the same coordinate values in the page coordinate system. 993*3ac0a46fSAndroid Build Coastguard Worker // 994*3ac0a46fSAndroid Build Coastguard Worker // The device coordinate system is device dependent. For screen device, 995*3ac0a46fSAndroid Build Coastguard Worker // its origin is at the left-top corner of the window. However this 996*3ac0a46fSAndroid Build Coastguard Worker // origin can be altered by the Windows coordinate transformation 997*3ac0a46fSAndroid Build Coastguard Worker // utilities. 998*3ac0a46fSAndroid Build Coastguard Worker // 999*3ac0a46fSAndroid Build Coastguard Worker // You must make sure the start_x, start_y, size_x, size_y 1000*3ac0a46fSAndroid Build Coastguard Worker // and rotate parameters have exactly same values as you used in 1001*3ac0a46fSAndroid Build Coastguard Worker // the FPDF_RenderPage() function call. 1002*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_DeviceToPage(FPDF_PAGE page, 1003*3ac0a46fSAndroid Build Coastguard Worker int start_x, 1004*3ac0a46fSAndroid Build Coastguard Worker int start_y, 1005*3ac0a46fSAndroid Build Coastguard Worker int size_x, 1006*3ac0a46fSAndroid Build Coastguard Worker int size_y, 1007*3ac0a46fSAndroid Build Coastguard Worker int rotate, 1008*3ac0a46fSAndroid Build Coastguard Worker int device_x, 1009*3ac0a46fSAndroid Build Coastguard Worker int device_y, 1010*3ac0a46fSAndroid Build Coastguard Worker double* page_x, 1011*3ac0a46fSAndroid Build Coastguard Worker double* page_y); 1012*3ac0a46fSAndroid Build Coastguard Worker 1013*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_PageToDevice 1014*3ac0a46fSAndroid Build Coastguard Worker // Convert the page coordinates of a point to screen coordinates. 1015*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1016*3ac0a46fSAndroid Build Coastguard Worker // page - Handle to the page. Returned by FPDF_LoadPage. 1017*3ac0a46fSAndroid Build Coastguard Worker // start_x - Left pixel position of the display area in 1018*3ac0a46fSAndroid Build Coastguard Worker // device coordinates. 1019*3ac0a46fSAndroid Build Coastguard Worker // start_y - Top pixel position of the display area in device 1020*3ac0a46fSAndroid Build Coastguard Worker // coordinates. 1021*3ac0a46fSAndroid Build Coastguard Worker // size_x - Horizontal size (in pixels) for displaying the page. 1022*3ac0a46fSAndroid Build Coastguard Worker // size_y - Vertical size (in pixels) for displaying the page. 1023*3ac0a46fSAndroid Build Coastguard Worker // rotate - Page orientation: 1024*3ac0a46fSAndroid Build Coastguard Worker // 0 (normal) 1025*3ac0a46fSAndroid Build Coastguard Worker // 1 (rotated 90 degrees clockwise) 1026*3ac0a46fSAndroid Build Coastguard Worker // 2 (rotated 180 degrees) 1027*3ac0a46fSAndroid Build Coastguard Worker // 3 (rotated 90 degrees counter-clockwise) 1028*3ac0a46fSAndroid Build Coastguard Worker // page_x - X value in page coordinates. 1029*3ac0a46fSAndroid Build Coastguard Worker // page_y - Y value in page coordinate. 1030*3ac0a46fSAndroid Build Coastguard Worker // device_x - A pointer to an integer receiving the result X 1031*3ac0a46fSAndroid Build Coastguard Worker // value in device coordinates. 1032*3ac0a46fSAndroid Build Coastguard Worker // device_y - A pointer to an integer receiving the result Y 1033*3ac0a46fSAndroid Build Coastguard Worker // value in device coordinates. 1034*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1035*3ac0a46fSAndroid Build Coastguard Worker // Returns true if the conversion succeeds, and |device_x| and 1036*3ac0a46fSAndroid Build Coastguard Worker // |device_y| successfully receives the converted coordinates. 1037*3ac0a46fSAndroid Build Coastguard Worker // Comments: 1038*3ac0a46fSAndroid Build Coastguard Worker // See comments for FPDF_DeviceToPage(). 1039*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_PageToDevice(FPDF_PAGE page, 1040*3ac0a46fSAndroid Build Coastguard Worker int start_x, 1041*3ac0a46fSAndroid Build Coastguard Worker int start_y, 1042*3ac0a46fSAndroid Build Coastguard Worker int size_x, 1043*3ac0a46fSAndroid Build Coastguard Worker int size_y, 1044*3ac0a46fSAndroid Build Coastguard Worker int rotate, 1045*3ac0a46fSAndroid Build Coastguard Worker double page_x, 1046*3ac0a46fSAndroid Build Coastguard Worker double page_y, 1047*3ac0a46fSAndroid Build Coastguard Worker int* device_x, 1048*3ac0a46fSAndroid Build Coastguard Worker int* device_y); 1049*3ac0a46fSAndroid Build Coastguard Worker 1050*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFBitmap_Create 1051*3ac0a46fSAndroid Build Coastguard Worker // Create a device independent bitmap (FXDIB). 1052*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1053*3ac0a46fSAndroid Build Coastguard Worker // width - The number of pixels in width for the bitmap. 1054*3ac0a46fSAndroid Build Coastguard Worker // Must be greater than 0. 1055*3ac0a46fSAndroid Build Coastguard Worker // height - The number of pixels in height for the bitmap. 1056*3ac0a46fSAndroid Build Coastguard Worker // Must be greater than 0. 1057*3ac0a46fSAndroid Build Coastguard Worker // alpha - A flag indicating whether the alpha channel is used. 1058*3ac0a46fSAndroid Build Coastguard Worker // Non-zero for using alpha, zero for not using. 1059*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1060*3ac0a46fSAndroid Build Coastguard Worker // The created bitmap handle, or NULL if a parameter error or out of 1061*3ac0a46fSAndroid Build Coastguard Worker // memory. 1062*3ac0a46fSAndroid Build Coastguard Worker // Comments: 1063*3ac0a46fSAndroid Build Coastguard Worker // The bitmap always uses 4 bytes per pixel. The first byte is always 1064*3ac0a46fSAndroid Build Coastguard Worker // double word aligned. 1065*3ac0a46fSAndroid Build Coastguard Worker // 1066*3ac0a46fSAndroid Build Coastguard Worker // The byte order is BGRx (the last byte unused if no alpha channel) or 1067*3ac0a46fSAndroid Build Coastguard Worker // BGRA. 1068*3ac0a46fSAndroid Build Coastguard Worker // 1069*3ac0a46fSAndroid Build Coastguard Worker // The pixels in a horizontal line are stored side by side, with the 1070*3ac0a46fSAndroid Build Coastguard Worker // left most pixel stored first (with lower memory address). 1071*3ac0a46fSAndroid Build Coastguard Worker // Each line uses width * 4 bytes. 1072*3ac0a46fSAndroid Build Coastguard Worker // 1073*3ac0a46fSAndroid Build Coastguard Worker // Lines are stored one after another, with the top most line stored 1074*3ac0a46fSAndroid Build Coastguard Worker // first. There is no gap between adjacent lines. 1075*3ac0a46fSAndroid Build Coastguard Worker // 1076*3ac0a46fSAndroid Build Coastguard Worker // This function allocates enough memory for holding all pixels in the 1077*3ac0a46fSAndroid Build Coastguard Worker // bitmap, but it doesn't initialize the buffer. Applications can use 1078*3ac0a46fSAndroid Build Coastguard Worker // FPDFBitmap_FillRect() to fill the bitmap using any color. If the OS 1079*3ac0a46fSAndroid Build Coastguard Worker // allows it, this function can allocate up to 4 GB of memory. 1080*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BITMAP FPDF_CALLCONV FPDFBitmap_Create(int width, 1081*3ac0a46fSAndroid Build Coastguard Worker int height, 1082*3ac0a46fSAndroid Build Coastguard Worker int alpha); 1083*3ac0a46fSAndroid Build Coastguard Worker 1084*3ac0a46fSAndroid Build Coastguard Worker // More DIB formats 1085*3ac0a46fSAndroid Build Coastguard Worker // Unknown or unsupported format. 1086*3ac0a46fSAndroid Build Coastguard Worker #define FPDFBitmap_Unknown 0 1087*3ac0a46fSAndroid Build Coastguard Worker // Gray scale bitmap, one byte per pixel. 1088*3ac0a46fSAndroid Build Coastguard Worker #define FPDFBitmap_Gray 1 1089*3ac0a46fSAndroid Build Coastguard Worker // 3 bytes per pixel, byte order: blue, green, red. 1090*3ac0a46fSAndroid Build Coastguard Worker #define FPDFBitmap_BGR 2 1091*3ac0a46fSAndroid Build Coastguard Worker // 4 bytes per pixel, byte order: blue, green, red, unused. 1092*3ac0a46fSAndroid Build Coastguard Worker #define FPDFBitmap_BGRx 3 1093*3ac0a46fSAndroid Build Coastguard Worker // 4 bytes per pixel, byte order: blue, green, red, alpha. 1094*3ac0a46fSAndroid Build Coastguard Worker #define FPDFBitmap_BGRA 4 1095*3ac0a46fSAndroid Build Coastguard Worker 1096*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFBitmap_CreateEx 1097*3ac0a46fSAndroid Build Coastguard Worker // Create a device independent bitmap (FXDIB) 1098*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1099*3ac0a46fSAndroid Build Coastguard Worker // width - The number of pixels in width for the bitmap. 1100*3ac0a46fSAndroid Build Coastguard Worker // Must be greater than 0. 1101*3ac0a46fSAndroid Build Coastguard Worker // height - The number of pixels in height for the bitmap. 1102*3ac0a46fSAndroid Build Coastguard Worker // Must be greater than 0. 1103*3ac0a46fSAndroid Build Coastguard Worker // format - A number indicating for bitmap format, as defined 1104*3ac0a46fSAndroid Build Coastguard Worker // above. 1105*3ac0a46fSAndroid Build Coastguard Worker // first_scan - A pointer to the first byte of the first line if 1106*3ac0a46fSAndroid Build Coastguard Worker // using an external buffer. If this parameter is NULL, 1107*3ac0a46fSAndroid Build Coastguard Worker // then a new buffer will be created. 1108*3ac0a46fSAndroid Build Coastguard Worker // stride - Number of bytes for each scan line. The value must 1109*3ac0a46fSAndroid Build Coastguard Worker // be 0 or greater. When the value is 0, 1110*3ac0a46fSAndroid Build Coastguard Worker // FPDFBitmap_CreateEx() will automatically calculate 1111*3ac0a46fSAndroid Build Coastguard Worker // the appropriate value using |width| and |format|. 1112*3ac0a46fSAndroid Build Coastguard Worker // When using an external buffer, it is recommended for 1113*3ac0a46fSAndroid Build Coastguard Worker // the caller to pass in the value. 1114*3ac0a46fSAndroid Build Coastguard Worker // When not using an external buffer, it is recommended 1115*3ac0a46fSAndroid Build Coastguard Worker // for the caller to pass in 0. 1116*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1117*3ac0a46fSAndroid Build Coastguard Worker // The bitmap handle, or NULL if parameter error or out of memory. 1118*3ac0a46fSAndroid Build Coastguard Worker // Comments: 1119*3ac0a46fSAndroid Build Coastguard Worker // Similar to FPDFBitmap_Create function, but allows for more formats 1120*3ac0a46fSAndroid Build Coastguard Worker // and an external buffer is supported. The bitmap created by this 1121*3ac0a46fSAndroid Build Coastguard Worker // function can be used in any place that a FPDF_BITMAP handle is 1122*3ac0a46fSAndroid Build Coastguard Worker // required. 1123*3ac0a46fSAndroid Build Coastguard Worker // 1124*3ac0a46fSAndroid Build Coastguard Worker // If an external buffer is used, then the caller should destroy the 1125*3ac0a46fSAndroid Build Coastguard Worker // buffer. FPDFBitmap_Destroy() will not destroy the buffer. 1126*3ac0a46fSAndroid Build Coastguard Worker // 1127*3ac0a46fSAndroid Build Coastguard Worker // It is recommended to use FPDFBitmap_GetStride() to get the stride 1128*3ac0a46fSAndroid Build Coastguard Worker // value. 1129*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BITMAP FPDF_CALLCONV FPDFBitmap_CreateEx(int width, 1130*3ac0a46fSAndroid Build Coastguard Worker int height, 1131*3ac0a46fSAndroid Build Coastguard Worker int format, 1132*3ac0a46fSAndroid Build Coastguard Worker void* first_scan, 1133*3ac0a46fSAndroid Build Coastguard Worker int stride); 1134*3ac0a46fSAndroid Build Coastguard Worker 1135*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFBitmap_GetFormat 1136*3ac0a46fSAndroid Build Coastguard Worker // Get the format of the bitmap. 1137*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1138*3ac0a46fSAndroid Build Coastguard Worker // bitmap - Handle to the bitmap. Returned by FPDFBitmap_Create 1139*3ac0a46fSAndroid Build Coastguard Worker // or FPDFImageObj_GetBitmap. 1140*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1141*3ac0a46fSAndroid Build Coastguard Worker // The format of the bitmap. 1142*3ac0a46fSAndroid Build Coastguard Worker // Comments: 1143*3ac0a46fSAndroid Build Coastguard Worker // Only formats supported by FPDFBitmap_CreateEx are supported by this 1144*3ac0a46fSAndroid Build Coastguard Worker // function; see the list of such formats above. 1145*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFBitmap_GetFormat(FPDF_BITMAP bitmap); 1146*3ac0a46fSAndroid Build Coastguard Worker 1147*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFBitmap_FillRect 1148*3ac0a46fSAndroid Build Coastguard Worker // Fill a rectangle in a bitmap. 1149*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1150*3ac0a46fSAndroid Build Coastguard Worker // bitmap - The handle to the bitmap. Returned by 1151*3ac0a46fSAndroid Build Coastguard Worker // FPDFBitmap_Create. 1152*3ac0a46fSAndroid Build Coastguard Worker // left - The left position. Starting from 0 at the 1153*3ac0a46fSAndroid Build Coastguard Worker // left-most pixel. 1154*3ac0a46fSAndroid Build Coastguard Worker // top - The top position. Starting from 0 at the 1155*3ac0a46fSAndroid Build Coastguard Worker // top-most line. 1156*3ac0a46fSAndroid Build Coastguard Worker // width - Width in pixels to be filled. 1157*3ac0a46fSAndroid Build Coastguard Worker // height - Height in pixels to be filled. 1158*3ac0a46fSAndroid Build Coastguard Worker // color - A 32-bit value specifing the color, in 8888 ARGB 1159*3ac0a46fSAndroid Build Coastguard Worker // format. 1160*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1161*3ac0a46fSAndroid Build Coastguard Worker // None. 1162*3ac0a46fSAndroid Build Coastguard Worker // Comments: 1163*3ac0a46fSAndroid Build Coastguard Worker // This function sets the color and (optionally) alpha value in the 1164*3ac0a46fSAndroid Build Coastguard Worker // specified region of the bitmap. 1165*3ac0a46fSAndroid Build Coastguard Worker // 1166*3ac0a46fSAndroid Build Coastguard Worker // NOTE: If the alpha channel is used, this function does NOT 1167*3ac0a46fSAndroid Build Coastguard Worker // composite the background with the source color, instead the 1168*3ac0a46fSAndroid Build Coastguard Worker // background will be replaced by the source color and the alpha. 1169*3ac0a46fSAndroid Build Coastguard Worker // 1170*3ac0a46fSAndroid Build Coastguard Worker // If the alpha channel is not used, the alpha parameter is ignored. 1171*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDFBitmap_FillRect(FPDF_BITMAP bitmap, 1172*3ac0a46fSAndroid Build Coastguard Worker int left, 1173*3ac0a46fSAndroid Build Coastguard Worker int top, 1174*3ac0a46fSAndroid Build Coastguard Worker int width, 1175*3ac0a46fSAndroid Build Coastguard Worker int height, 1176*3ac0a46fSAndroid Build Coastguard Worker FPDF_DWORD color); 1177*3ac0a46fSAndroid Build Coastguard Worker 1178*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFBitmap_GetBuffer 1179*3ac0a46fSAndroid Build Coastguard Worker // Get data buffer of a bitmap. 1180*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1181*3ac0a46fSAndroid Build Coastguard Worker // bitmap - Handle to the bitmap. Returned by FPDFBitmap_Create 1182*3ac0a46fSAndroid Build Coastguard Worker // or FPDFImageObj_GetBitmap. 1183*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1184*3ac0a46fSAndroid Build Coastguard Worker // The pointer to the first byte of the bitmap buffer. 1185*3ac0a46fSAndroid Build Coastguard Worker // Comments: 1186*3ac0a46fSAndroid Build Coastguard Worker // The stride may be more than width * number of bytes per pixel 1187*3ac0a46fSAndroid Build Coastguard Worker // 1188*3ac0a46fSAndroid Build Coastguard Worker // Applications can use this function to get the bitmap buffer pointer, 1189*3ac0a46fSAndroid Build Coastguard Worker // then manipulate any color and/or alpha values for any pixels in the 1190*3ac0a46fSAndroid Build Coastguard Worker // bitmap. 1191*3ac0a46fSAndroid Build Coastguard Worker // 1192*3ac0a46fSAndroid Build Coastguard Worker // Use FPDFBitmap_GetFormat() to find out the format of the data. 1193*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void* FPDF_CALLCONV FPDFBitmap_GetBuffer(FPDF_BITMAP bitmap); 1194*3ac0a46fSAndroid Build Coastguard Worker 1195*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFBitmap_GetWidth 1196*3ac0a46fSAndroid Build Coastguard Worker // Get width of a bitmap. 1197*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1198*3ac0a46fSAndroid Build Coastguard Worker // bitmap - Handle to the bitmap. Returned by FPDFBitmap_Create 1199*3ac0a46fSAndroid Build Coastguard Worker // or FPDFImageObj_GetBitmap. 1200*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1201*3ac0a46fSAndroid Build Coastguard Worker // The width of the bitmap in pixels. 1202*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFBitmap_GetWidth(FPDF_BITMAP bitmap); 1203*3ac0a46fSAndroid Build Coastguard Worker 1204*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFBitmap_GetHeight 1205*3ac0a46fSAndroid Build Coastguard Worker // Get height of a bitmap. 1206*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1207*3ac0a46fSAndroid Build Coastguard Worker // bitmap - Handle to the bitmap. Returned by FPDFBitmap_Create 1208*3ac0a46fSAndroid Build Coastguard Worker // or FPDFImageObj_GetBitmap. 1209*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1210*3ac0a46fSAndroid Build Coastguard Worker // The height of the bitmap in pixels. 1211*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFBitmap_GetHeight(FPDF_BITMAP bitmap); 1212*3ac0a46fSAndroid Build Coastguard Worker 1213*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFBitmap_GetStride 1214*3ac0a46fSAndroid Build Coastguard Worker // Get number of bytes for each line in the bitmap buffer. 1215*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1216*3ac0a46fSAndroid Build Coastguard Worker // bitmap - Handle to the bitmap. Returned by FPDFBitmap_Create 1217*3ac0a46fSAndroid Build Coastguard Worker // or FPDFImageObj_GetBitmap. 1218*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1219*3ac0a46fSAndroid Build Coastguard Worker // The number of bytes for each line in the bitmap buffer. 1220*3ac0a46fSAndroid Build Coastguard Worker // Comments: 1221*3ac0a46fSAndroid Build Coastguard Worker // The stride may be more than width * number of bytes per pixel. 1222*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFBitmap_GetStride(FPDF_BITMAP bitmap); 1223*3ac0a46fSAndroid Build Coastguard Worker 1224*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFBitmap_Destroy 1225*3ac0a46fSAndroid Build Coastguard Worker // Destroy a bitmap and release all related buffers. 1226*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1227*3ac0a46fSAndroid Build Coastguard Worker // bitmap - Handle to the bitmap. Returned by FPDFBitmap_Create 1228*3ac0a46fSAndroid Build Coastguard Worker // or FPDFImageObj_GetBitmap. 1229*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1230*3ac0a46fSAndroid Build Coastguard Worker // None. 1231*3ac0a46fSAndroid Build Coastguard Worker // Comments: 1232*3ac0a46fSAndroid Build Coastguard Worker // This function will not destroy any external buffers provided when 1233*3ac0a46fSAndroid Build Coastguard Worker // the bitmap was created. 1234*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDFBitmap_Destroy(FPDF_BITMAP bitmap); 1235*3ac0a46fSAndroid Build Coastguard Worker 1236*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_VIEWERREF_GetPrintScaling 1237*3ac0a46fSAndroid Build Coastguard Worker // Whether the PDF document prefers to be scaled or not. 1238*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1239*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to the loaded document. 1240*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1241*3ac0a46fSAndroid Build Coastguard Worker // None. 1242*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 1243*3ac0a46fSAndroid Build Coastguard Worker FPDF_VIEWERREF_GetPrintScaling(FPDF_DOCUMENT document); 1244*3ac0a46fSAndroid Build Coastguard Worker 1245*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_VIEWERREF_GetNumCopies 1246*3ac0a46fSAndroid Build Coastguard Worker // Returns the number of copies to be printed. 1247*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1248*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to the loaded document. 1249*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1250*3ac0a46fSAndroid Build Coastguard Worker // The number of copies to be printed. 1251*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV 1252*3ac0a46fSAndroid Build Coastguard Worker FPDF_VIEWERREF_GetNumCopies(FPDF_DOCUMENT document); 1253*3ac0a46fSAndroid Build Coastguard Worker 1254*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_VIEWERREF_GetPrintPageRange 1255*3ac0a46fSAndroid Build Coastguard Worker // Page numbers to initialize print dialog box when file is printed. 1256*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1257*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to the loaded document. 1258*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1259*3ac0a46fSAndroid Build Coastguard Worker // The print page range to be used for printing. 1260*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_PAGERANGE FPDF_CALLCONV 1261*3ac0a46fSAndroid Build Coastguard Worker FPDF_VIEWERREF_GetPrintPageRange(FPDF_DOCUMENT document); 1262*3ac0a46fSAndroid Build Coastguard Worker 1263*3ac0a46fSAndroid Build Coastguard Worker // Experimental API. 1264*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_VIEWERREF_GetPrintPageRangeCount 1265*3ac0a46fSAndroid Build Coastguard Worker // Returns the number of elements in a FPDF_PAGERANGE. 1266*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1267*3ac0a46fSAndroid Build Coastguard Worker // pagerange - Handle to the page range. 1268*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1269*3ac0a46fSAndroid Build Coastguard Worker // The number of elements in the page range. Returns 0 on error. 1270*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT size_t FPDF_CALLCONV 1271*3ac0a46fSAndroid Build Coastguard Worker FPDF_VIEWERREF_GetPrintPageRangeCount(FPDF_PAGERANGE pagerange); 1272*3ac0a46fSAndroid Build Coastguard Worker 1273*3ac0a46fSAndroid Build Coastguard Worker // Experimental API. 1274*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_VIEWERREF_GetPrintPageRangeElement 1275*3ac0a46fSAndroid Build Coastguard Worker // Returns an element from a FPDF_PAGERANGE. 1276*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1277*3ac0a46fSAndroid Build Coastguard Worker // pagerange - Handle to the page range. 1278*3ac0a46fSAndroid Build Coastguard Worker // index - Index of the element. 1279*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1280*3ac0a46fSAndroid Build Coastguard Worker // The value of the element in the page range at a given index. 1281*3ac0a46fSAndroid Build Coastguard Worker // Returns -1 on error. 1282*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV 1283*3ac0a46fSAndroid Build Coastguard Worker FPDF_VIEWERREF_GetPrintPageRangeElement(FPDF_PAGERANGE pagerange, size_t index); 1284*3ac0a46fSAndroid Build Coastguard Worker 1285*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_VIEWERREF_GetDuplex 1286*3ac0a46fSAndroid Build Coastguard Worker // Returns the paper handling option to be used when printing from 1287*3ac0a46fSAndroid Build Coastguard Worker // the print dialog. 1288*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1289*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to the loaded document. 1290*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1291*3ac0a46fSAndroid Build Coastguard Worker // The paper handling option to be used when printing. 1292*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_DUPLEXTYPE FPDF_CALLCONV 1293*3ac0a46fSAndroid Build Coastguard Worker FPDF_VIEWERREF_GetDuplex(FPDF_DOCUMENT document); 1294*3ac0a46fSAndroid Build Coastguard Worker 1295*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_VIEWERREF_GetName 1296*3ac0a46fSAndroid Build Coastguard Worker // Gets the contents for a viewer ref, with a given key. The value must 1297*3ac0a46fSAndroid Build Coastguard Worker // be of type "name". 1298*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1299*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to the loaded document. 1300*3ac0a46fSAndroid Build Coastguard Worker // key - Name of the key in the viewer pref dictionary, 1301*3ac0a46fSAndroid Build Coastguard Worker // encoded in UTF-8. 1302*3ac0a46fSAndroid Build Coastguard Worker // buffer - A string to write the contents of the key to. 1303*3ac0a46fSAndroid Build Coastguard Worker // length - Length of the buffer. 1304*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1305*3ac0a46fSAndroid Build Coastguard Worker // The number of bytes in the contents, including the NULL terminator. 1306*3ac0a46fSAndroid Build Coastguard Worker // Thus if the return value is 0, then that indicates an error, such 1307*3ac0a46fSAndroid Build Coastguard Worker // as when |document| is invalid or |buffer| is NULL. If |length| is 1308*3ac0a46fSAndroid Build Coastguard Worker // less than the returned length, or |buffer| is NULL, |buffer| will 1309*3ac0a46fSAndroid Build Coastguard Worker // not be modified. 1310*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV 1311*3ac0a46fSAndroid Build Coastguard Worker FPDF_VIEWERREF_GetName(FPDF_DOCUMENT document, 1312*3ac0a46fSAndroid Build Coastguard Worker FPDF_BYTESTRING key, 1313*3ac0a46fSAndroid Build Coastguard Worker char* buffer, 1314*3ac0a46fSAndroid Build Coastguard Worker unsigned long length); 1315*3ac0a46fSAndroid Build Coastguard Worker 1316*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_CountNamedDests 1317*3ac0a46fSAndroid Build Coastguard Worker // Get the count of named destinations in the PDF document. 1318*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1319*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to a document 1320*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1321*3ac0a46fSAndroid Build Coastguard Worker // The count of named destinations. 1322*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_DWORD FPDF_CALLCONV 1323*3ac0a46fSAndroid Build Coastguard Worker FPDF_CountNamedDests(FPDF_DOCUMENT document); 1324*3ac0a46fSAndroid Build Coastguard Worker 1325*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetNamedDestByName 1326*3ac0a46fSAndroid Build Coastguard Worker // Get a the destination handle for the given name. 1327*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1328*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to the loaded document. 1329*3ac0a46fSAndroid Build Coastguard Worker // name - The name of a destination. 1330*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1331*3ac0a46fSAndroid Build Coastguard Worker // The handle to the destination. 1332*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_DEST FPDF_CALLCONV 1333*3ac0a46fSAndroid Build Coastguard Worker FPDF_GetNamedDestByName(FPDF_DOCUMENT document, FPDF_BYTESTRING name); 1334*3ac0a46fSAndroid Build Coastguard Worker 1335*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetNamedDest 1336*3ac0a46fSAndroid Build Coastguard Worker // Get the named destination by index. 1337*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1338*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to a document 1339*3ac0a46fSAndroid Build Coastguard Worker // index - The index of a named destination. 1340*3ac0a46fSAndroid Build Coastguard Worker // buffer - The buffer to store the destination name, 1341*3ac0a46fSAndroid Build Coastguard Worker // used as wchar_t*. 1342*3ac0a46fSAndroid Build Coastguard Worker // buflen [in/out] - Size of the buffer in bytes on input, 1343*3ac0a46fSAndroid Build Coastguard Worker // length of the result in bytes on output 1344*3ac0a46fSAndroid Build Coastguard Worker // or -1 if the buffer is too small. 1345*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1346*3ac0a46fSAndroid Build Coastguard Worker // The destination handle for a given index, or NULL if there is no 1347*3ac0a46fSAndroid Build Coastguard Worker // named destination corresponding to |index|. 1348*3ac0a46fSAndroid Build Coastguard Worker // Comments: 1349*3ac0a46fSAndroid Build Coastguard Worker // Call this function twice to get the name of the named destination: 1350*3ac0a46fSAndroid Build Coastguard Worker // 1) First time pass in |buffer| as NULL and get buflen. 1351*3ac0a46fSAndroid Build Coastguard Worker // 2) Second time pass in allocated |buffer| and buflen to retrieve 1352*3ac0a46fSAndroid Build Coastguard Worker // |buffer|, which should be used as wchar_t*. 1353*3ac0a46fSAndroid Build Coastguard Worker // 1354*3ac0a46fSAndroid Build Coastguard Worker // If buflen is not sufficiently large, it will be set to -1 upon 1355*3ac0a46fSAndroid Build Coastguard Worker // return. 1356*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_DEST FPDF_CALLCONV FPDF_GetNamedDest(FPDF_DOCUMENT document, 1357*3ac0a46fSAndroid Build Coastguard Worker int index, 1358*3ac0a46fSAndroid Build Coastguard Worker void* buffer, 1359*3ac0a46fSAndroid Build Coastguard Worker long* buflen); 1360*3ac0a46fSAndroid Build Coastguard Worker 1361*3ac0a46fSAndroid Build Coastguard Worker // Experimental API. 1362*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetXFAPacketCount 1363*3ac0a46fSAndroid Build Coastguard Worker // Get the number of valid packets in the XFA entry. 1364*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1365*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to the document. 1366*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1367*3ac0a46fSAndroid Build Coastguard Worker // The number of valid packets, or -1 on error. 1368*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDF_GetXFAPacketCount(FPDF_DOCUMENT document); 1369*3ac0a46fSAndroid Build Coastguard Worker 1370*3ac0a46fSAndroid Build Coastguard Worker // Experimental API. 1371*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetXFAPacketName 1372*3ac0a46fSAndroid Build Coastguard Worker // Get the name of a packet in the XFA array. 1373*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1374*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to the document. 1375*3ac0a46fSAndroid Build Coastguard Worker // index - Index number of the packet. 0 for the first packet. 1376*3ac0a46fSAndroid Build Coastguard Worker // buffer - Buffer for holding the name of the XFA packet. 1377*3ac0a46fSAndroid Build Coastguard Worker // buflen - Length of |buffer| in bytes. 1378*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1379*3ac0a46fSAndroid Build Coastguard Worker // The length of the packet name in bytes, or 0 on error. 1380*3ac0a46fSAndroid Build Coastguard Worker // 1381*3ac0a46fSAndroid Build Coastguard Worker // |document| must be valid and |index| must be in the range [0, N), where N is 1382*3ac0a46fSAndroid Build Coastguard Worker // the value returned by FPDF_GetXFAPacketCount(). 1383*3ac0a46fSAndroid Build Coastguard Worker // |buffer| is only modified if it is non-NULL and |buflen| is greater than or 1384*3ac0a46fSAndroid Build Coastguard Worker // equal to the length of the packet name. The packet name includes a 1385*3ac0a46fSAndroid Build Coastguard Worker // terminating NUL character. |buffer| is unmodified on error. 1386*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV FPDF_GetXFAPacketName( 1387*3ac0a46fSAndroid Build Coastguard Worker FPDF_DOCUMENT document, 1388*3ac0a46fSAndroid Build Coastguard Worker int index, 1389*3ac0a46fSAndroid Build Coastguard Worker void* buffer, 1390*3ac0a46fSAndroid Build Coastguard Worker unsigned long buflen); 1391*3ac0a46fSAndroid Build Coastguard Worker 1392*3ac0a46fSAndroid Build Coastguard Worker // Experimental API. 1393*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetXFAPacketContent 1394*3ac0a46fSAndroid Build Coastguard Worker // Get the content of a packet in the XFA array. 1395*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1396*3ac0a46fSAndroid Build Coastguard Worker // document - Handle to the document. 1397*3ac0a46fSAndroid Build Coastguard Worker // index - Index number of the packet. 0 for the first packet. 1398*3ac0a46fSAndroid Build Coastguard Worker // buffer - Buffer for holding the content of the XFA packet. 1399*3ac0a46fSAndroid Build Coastguard Worker // buflen - Length of |buffer| in bytes. 1400*3ac0a46fSAndroid Build Coastguard Worker // out_buflen - Pointer to the variable that will receive the minimum 1401*3ac0a46fSAndroid Build Coastguard Worker // buffer size needed to contain the content of the XFA 1402*3ac0a46fSAndroid Build Coastguard Worker // packet. 1403*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1404*3ac0a46fSAndroid Build Coastguard Worker // Whether the operation succeeded or not. 1405*3ac0a46fSAndroid Build Coastguard Worker // 1406*3ac0a46fSAndroid Build Coastguard Worker // |document| must be valid and |index| must be in the range [0, N), where N is 1407*3ac0a46fSAndroid Build Coastguard Worker // the value returned by FPDF_GetXFAPacketCount(). |out_buflen| must not be 1408*3ac0a46fSAndroid Build Coastguard Worker // NULL. When the aforementioned arguments are valid, the operation succeeds, 1409*3ac0a46fSAndroid Build Coastguard Worker // and |out_buflen| receives the content size. |buffer| is only modified if 1410*3ac0a46fSAndroid Build Coastguard Worker // |buffer| is non-null and long enough to contain the content. Callers must 1411*3ac0a46fSAndroid Build Coastguard Worker // check both the return value and the input |buflen| is no less than the 1412*3ac0a46fSAndroid Build Coastguard Worker // returned |out_buflen| before using the data in |buffer|. 1413*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_GetXFAPacketContent( 1414*3ac0a46fSAndroid Build Coastguard Worker FPDF_DOCUMENT document, 1415*3ac0a46fSAndroid Build Coastguard Worker int index, 1416*3ac0a46fSAndroid Build Coastguard Worker void* buffer, 1417*3ac0a46fSAndroid Build Coastguard Worker unsigned long buflen, 1418*3ac0a46fSAndroid Build Coastguard Worker unsigned long* out_buflen); 1419*3ac0a46fSAndroid Build Coastguard Worker 1420*3ac0a46fSAndroid Build Coastguard Worker #ifdef PDF_ENABLE_V8 1421*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetRecommendedV8Flags 1422*3ac0a46fSAndroid Build Coastguard Worker // Returns a space-separated string of command line flags that are 1423*3ac0a46fSAndroid Build Coastguard Worker // recommended to be passed into V8 via V8::SetFlagsFromString() 1424*3ac0a46fSAndroid Build Coastguard Worker // prior to initializing the PDFium library. 1425*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1426*3ac0a46fSAndroid Build Coastguard Worker // None. 1427*3ac0a46fSAndroid Build Coastguard Worker // Return value: 1428*3ac0a46fSAndroid Build Coastguard Worker // NUL-terminated string of the form "--flag1 --flag2". 1429*3ac0a46fSAndroid Build Coastguard Worker // The caller must not attempt to modify or free the result. 1430*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT const char* FPDF_CALLCONV FPDF_GetRecommendedV8Flags(); 1431*3ac0a46fSAndroid Build Coastguard Worker 1432*3ac0a46fSAndroid Build Coastguard Worker // Experimental API. 1433*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetArrayBufferAllocatorSharedInstance() 1434*3ac0a46fSAndroid Build Coastguard Worker // Helper function for initializing V8 isolates that will 1435*3ac0a46fSAndroid Build Coastguard Worker // use PDFium's internal memory management. 1436*3ac0a46fSAndroid Build Coastguard Worker // Parameters: 1437*3ac0a46fSAndroid Build Coastguard Worker // None. 1438*3ac0a46fSAndroid Build Coastguard Worker // Return Value: 1439*3ac0a46fSAndroid Build Coastguard Worker // Pointer to a suitable v8::ArrayBuffer::Allocator, returned 1440*3ac0a46fSAndroid Build Coastguard Worker // as void for C compatibility. 1441*3ac0a46fSAndroid Build Coastguard Worker // Notes: 1442*3ac0a46fSAndroid Build Coastguard Worker // Use is optional, but allows external creation of isolates 1443*3ac0a46fSAndroid Build Coastguard Worker // matching the ones PDFium will make when none is provided 1444*3ac0a46fSAndroid Build Coastguard Worker // via |FPDF_LIBRARY_CONFIG::m_pIsolate|. 1445*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void* FPDF_CALLCONV FPDF_GetArrayBufferAllocatorSharedInstance(); 1446*3ac0a46fSAndroid Build Coastguard Worker #endif // PDF_ENABLE_V8 1447*3ac0a46fSAndroid Build Coastguard Worker 1448*3ac0a46fSAndroid Build Coastguard Worker #ifdef PDF_ENABLE_XFA 1449*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_BStr_Init 1450*3ac0a46fSAndroid Build Coastguard Worker // Helper function to initialize a FPDF_BSTR. 1451*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_RESULT FPDF_CALLCONV FPDF_BStr_Init(FPDF_BSTR* bstr); 1452*3ac0a46fSAndroid Build Coastguard Worker 1453*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_BStr_Set 1454*3ac0a46fSAndroid Build Coastguard Worker // Helper function to copy string data into the FPDF_BSTR. 1455*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_RESULT FPDF_CALLCONV FPDF_BStr_Set(FPDF_BSTR* bstr, 1456*3ac0a46fSAndroid Build Coastguard Worker const char* cstr, 1457*3ac0a46fSAndroid Build Coastguard Worker int length); 1458*3ac0a46fSAndroid Build Coastguard Worker 1459*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_BStr_Clear 1460*3ac0a46fSAndroid Build Coastguard Worker // Helper function to clear a FPDF_BSTR. 1461*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_RESULT FPDF_CALLCONV FPDF_BStr_Clear(FPDF_BSTR* bstr); 1462*3ac0a46fSAndroid Build Coastguard Worker #endif // PDF_ENABLE_XFA 1463*3ac0a46fSAndroid Build Coastguard Worker 1464*3ac0a46fSAndroid Build Coastguard Worker #ifdef __cplusplus 1465*3ac0a46fSAndroid Build Coastguard Worker } 1466*3ac0a46fSAndroid Build Coastguard Worker #endif 1467*3ac0a46fSAndroid Build Coastguard Worker 1468*3ac0a46fSAndroid Build Coastguard Worker #endif // PUBLIC_FPDFVIEW_H_ 1469