1. wrapper for pdfium

hi, my second wrapper. it is for pdfium´- you can get the dll (32/64) easy, if you make an vs C++ project and import them with nuget. i use that for creating and reading pdf's. the libs are also available for linux etc. as far as i know.

i left the ugly comments in there, so that one has kind of a reference. my be some can use that.

include std/dll.e 
include std/machine.e 
include std/math.e 
 
-- CCopyright 2014 PDFium Authors. All rights reserved. 
-- Use of this source code is governed by a BSD-style license that can be 
-- found in the LICENSE file. 
-- Original code copyright 2014 Foxit Software Inc. http:--www.foxitsoftware.com 
-- NOTE: External docs refer to this file as "fpdfview.h", so do not rename 
-- despite lack of consistency with other public files. 
 
/* 

Macro FPDF_ARGB(a, r, g, b) 
    ((((b) & 0xff) | (((g) & 0xff) << 8) | (((r) & 0xff) << 16) | (((a) & 0xff) << 24))) 
EndMacro 
 
Macro  FPDF_GetBValue(argb)  
  argb 
EndMacro 
Macro FPDF_GetGValue(argb)  
  ((argb)) >> 8) 
EndMacro 
Macro FPDF_GetRValue(argb)  
  ((argb) >> 16) 
EndMacro 
Macro FPDF_GetAValue(argb)  
  ((argb) >> 24) 
EndMacro 
*/ 
 
 
-- PDF_USE_XFA is set in confirmation that this version of PDFium can support 
-- XFA forms as requested by the PDF_ENABLE_XFA setting. 
public constant PDF_USE_XFA = 1 
-- Policy for accessing the local machine time. 
public constant FPDF_POLICY_MACHINETIME_ACCESS = 0 
public constant FPDF_ERR_SUCCESS = 0    -- No error. 
public constant FPDF_ERR_UNKNOWN = 1    -- Unknown error. 
public constant FPDF_ERR_FILE    = 2    -- File not found or could not be opened. 
public constant FPDF_ERR_FORMAT  = 3    -- File not in PDF format or corrupted. 
public constant FPDF_ERR_PASSWORD = 4   -- Password required or incorrect password. 
public constant FPDF_ERR_SECURITY = 5   -- Unsupported security scheme. 
public constant FPDF_ERR_PAGE    = 6    -- Page not found or content error. 
public constant FPDF_ERR_XFALOAD = 7    -- Load XFA error. 
public constant FPDF_ERR_XFALAYOUT = 8  -- Layout XFA error. 
-- Page rendering flags. They can be combined with bit-wise OR. 
-- 
-- Set if annotations are to be rendered. 
public constant FPDF_ANNOT = 0x01 
-- Set if using text rendering optimized for LCD display. 
public constant FPDF_LCD_TEXT = 0x02 
-- Don't use the native text output available on some platforms 
public constant FPDF_NO_NATIVETEXT = 0x04 
-- Grayscale output. 
public constant FPDF_GRAYSCALE = 0x08 
-- Set if you want to get some debug info. 
public constant FPDF_DEBUG_INFO = 0x80 
-- Set if you don't want to catch exceptions. 
public constant FPDF_NO_CATCH = 0x100 
-- Limit image cache size. 
public constant FPDF_RENDER_LIMITEDIMAGECACHE = 0x200 
-- Always use halftone for image stretching. 
public constant FPDF_RENDER_FORCEHALFTONE = 0x400 
-- Render for printing. 
public constant FPDF_PRINTING = 0x800 
-- Set to disable anti-aliasing on text. 
public constant FPDF_RENDER_NO_SMOOTHTEXT = 0x1000 
-- Set to disable anti-aliasing on images. 
public constant FPDF_RENDER_NO_SMOOTHIMAGE = 0x2000 
-- Set to disable anti-aliasing on paths. 
public constant FPDF_RENDER_NO_SMOOTHPATH = 0x4000 
-- Set whether to render in a reverse Byte order, this flag is only used when rendering to a bitmap. 
public constant FPDF_REVERSE_BYTE_ORDER = 0x10 
 
-- More DIB formats 
-- Gray scale bitmap, one byte per pixel. 
public constant FPDFBitmap_Gray = 1 
-- 3 bytes per pixel, byte order: blue, green, red. 
public constant FPDFBitmap_BGR = 2 
-- 4 bytes per pixel, byte order: blue, green, red, unused. 
public constant FPDFBitmap_BGRx = 3 
-- 4 bytes per pixel, byte order: blue, green, red, alpha. 
public constant FPDFBitmap_BGRA = 4 
 
public constant PDF_LINEARIZATION_UNKNOWN = -1 
public constant PDF_NOT_LINEARIZED = 0 
public constant PDF_LINEARIZED = 1 
 
public constant PDF_DATA_ERROR = -1 
public constant PDF_DATA_NOTAVAIL = 0 
public constant PDF_DATA_AVAIL = 1 
 
public constant PDF_FORM_ERROR = -1 
public constant PDF_FORM_NOTAVAIL = 0 
public constant PDF_FORM_AVAIL = 1 
public constant PDF_FORM_NOTEXIST = 2 
 
-- Unsupported action type. 
public constant PDFACTION_UNSUPPORTED = 0 
-- Go to a destination within current document. 
public constant PDFACTION_GOTO = 1 
-- Go to a destination within another document. 
public constant PDFACTION_REMOTEGOTO = 2 
-- URI, including web pages and other Internet resources. 
public constant PDFACTION_URI = 3 
-- Launch an application or open a file. 
public constant PDFACTION_LAUNCH = 4 
 
-- The page object constants. 
public constant FPDF_PAGEOBJ_TEXT = 1 
public constant FPDF_PAGEOBJ_PATH = 2 
public constant FPDF_PAGEOBJ_IMAGE = 3 
public constant FPDF_PAGEOBJ_SHADING = 4 
public constant FPDF_PAGEOBJ_FORM = 5 
 
-- Unsupported XFA form. 
public constant FPDF_UNSP_DOC_XFAFORM = 1 
-- Unsupported portable collection. 
public constant FPDF_UNSP_DOC_PORTABLECOLLECTION = 2 
-- Unsupported attachment. 
public constant FPDF_UNSP_DOC_ATTACHMENT = 3 
-- Unsupported security. 
public constant FPDF_UNSP_DOC_SECURITY = 4 
-- Unsupported shared review. 
public constant FPDF_UNSP_DOC_SHAREDREVIEW = 5 
-- Unsupported shared form, acrobat. 
public constant FPDF_UNSP_DOC_SHAREDFORM_ACROBAT = 6 
-- Unsupported shared form, filesystem. 
public constant FPDF_UNSP_DOC_SHAREDFORM_FILESYSTEM = 7 
-- Unsupported shared form, email. 
public constant FPDF_UNSP_DOC_SHAREDFORM_EMAIL = 8 
-- Unsupported 3D annotation. 
public constant FPDF_UNSP_ANNOT_3DANNOT = 11 
-- Unsupported movie annotation. 
public constant FPDF_UNSP_ANNOT_MOVIE = 12 
-- Unsupported sound annotation. 
public constant FPDF_UNSP_ANNOT_SOUND = 13 
-- Unsupported screen media annotation. 
public constant FPDF_UNSP_ANNOT_SCREEN_MEDIA = 14 
-- Unsupported screen rich media annotation. 
public constant FPDF_UNSP_ANNOT_SCREEN_RICHMEDIA = 15 
-- Unsupported attachment annotation. 
public constant FPDF_UNSP_ANNOT_ATTACHMENT = 16 
-- Unsupported signature annotation. 
public constant FPDF_UNSP_ANNOT_SIG = 17 
 
-- Unknown page mode. 
public constant PAGEMODE_UNKNOWN = -1 
-- Document outline, and thumbnails hidden. 
public constant PAGEMODE_USENONE = 0 
-- Document outline visible. 
public constant PAGEMODE_USEOUTLINES = 1 
-- Thumbnail images visible. 
public constant PAGEMODE_USETHUMBS = 2 
-- Full-screen mode, no menu bar, window controls, or other decorations visible. 
public constant PAGEMODE_FULLSCREEN = 3 
-- Optional content group panel visible. 
public constant PAGEMODE_USEOC = 4 
-- Attachments panel visible. 
public constant PAGEMODE_USEATTACHMENTS = 5 
 
-- Flatten operation failed. 
public constant FLATTEN_FAIL = 0 
-- Flatten operation succeed. 
public constant FLATTEN_SUCCESS = 1 
-- Nothing to be flattened. 
public constant FLATTEN_NOTHINGTODO = 2 
 
-- Flatten for normal display. 
public constant FLAT_NORMALDISPLAY = 0 
-- Flatten for print. 
public constant FLAT_PRINT = 1 
 
public constant DOCTYPE_PDF = 0          -- Normal pdf Document 
public constant DOCTYPE_DYNAMIC_XFA = 1  -- Dynamic xfa Document Type 
public constant DOCTYPE_STATIC_XFA = 2   -- Static xfa Document Type 
 
-- Flags for Cursor type 
public constant FXCT_ARROW = 0 
public constant FXCT_NESW = 1 
public constant FXCT_NWSE = 2 
public constant FXCT_VBEAM = 3 
public constant FXCT_HBEAM = 4 
public constant FXCT_HAND = 5 
 
-- XFA 
-- Pageview  event flags 
-- After a new pageview is added. 
public constant FXFA_PAGEVIEWEVENT_POSTADDED = 1 
-- After a pageview is removed. 
public constant FXFA_PAGEVIEWEVENT_POSTREMOVED = 3 
 
-- menu 
-- Macro Definitions For Right Context Menu Features Of XFA Fields 
public constant FXFA_MENU_COPY = 1 
public constant FXFA_MENU_CUT = 2 
public constant FXFA_MENU_SELECTALL = 4 
public constant FXFA_MENU_UNDO = 8 
public constant FXFA_MENU_REDO = 16 
public constant FXFA_MENU_PASTE = 32 
 
-- file type 
-- Macro Definitions For File Type. 
public constant FXFA_SAVEAS_XML = 1 
public constant FXFA_SAVEAS_XDP = 2 
 
-- additional actions type of document. 
public constant FPDFDOC_AACTION_WC = 0x10  -- WC, before closing document, JavaScript action. 
public constant FPDFDOC_AACTION_WS = 0x11  -- WS, before saving document, JavaScript action. 
public constant FPDFDOC_AACTION_DS = 0x12  -- DS, after saving document, JavaScript action. 
public constant FPDFDOC_AACTION_WP = 0x13  -- WP, before printing document, JavaScript action. 
public constant FPDFDOC_AACTION_DP = 0x14  -- DP, after printing document, JavaScript action. 
 
-- Additional-action types of page object 
public constant FPDFPAGE_AACTION_OPEN = 0  -- /O -- An action to be performed when the page is opened 
public constant FPDFPAGE_AACTION_CLOSE = 1 -- /C -- An action to be performed when the page is closed 
 
-- Field Types 
public constant FPDF_FORMFIELD_UNKNOWN = 0      -- Unknown. 
public constant FPDF_FORMFIELD_PUSHBUTTON = 1   -- push button type. 
public constant FPDF_FORMFIELD_CHECKBOX = 2     -- check box type. 
public constant FPDF_FORMFIELD_RADIOBUTTON = 3  -- radio button type. 
public constant FPDF_FORMFIELD_COMBOBOX = 4     -- combo box type. 
public constant FPDF_FORMFIELD_LISTBOX = 5      -- list box type. 
public constant FPDF_FORMFIELD_TEXTFIELD = 6    -- text field type. 
public constant FPDF_FORMFIELD_XFA = 7          -- text field type. 
 
-- Flags for progressive process status. 
public constant FPDF_RENDER_READER = 0 
public constant FPDF_RENDER_TOBECOUNTINUED = 1 
public constant FPDF_RENDER_DONE = 2 
public constant FPDF_RENDER_FAILED = 3 
 
-- Incremental. 
public constant FPDF_INCREMENTAL = 1 
-- No Incremental. 
public constant FPDF_NO_INCREMENTAL = 2 
-- Remove security. 
public constant FPDF_REMOVE_SECURITY = 3 
 
-- Character sets For the font 
public constant FXFONT_ANSI_CHARSET = 0 
public constant FXFONT_DEFAULT_CHARSET = 1 
public constant FXFONT_SYMBOL_CHARSET = 2 
public constant FXFONT_SHIFTJIS_CHARSET = 128 
public constant FXFONT_HANGEUL_CHARSET = 129 
public constant FXFONT_GB2312_CHARSET = 134 
public constant FXFONT_CHINESEBIG5_CHARSET = 136 
 
-- Font pitch And family flags 
public constant FXFONT_FF_FIXEDPITCH = 1 
public constant FXFONT_FF_ROMAN = shift_bits(1, -4) 
public constant FXFONT_FF_SCRIPT = shift_bits(4, -4) 
 
-- Typical weight values 
public constant FXFONT_FW_NORMAL = 400 
public constant FXFONT_FW_BOLD = 700 
 
-- Flags used by FPDFText_FindStart function. 
public constant FPDF_MATCHCASE = 0x00000001  -- If not set, it will not match case by default. 
public constant FPDF_MATCHWHOLEWORD = 0x00000002  -- If not set, it will not match the whole word by default. 
 
 
-- PDF types 
-- typedef void* FPDF_ACTION-- 
-- typedef void* FPDF_BITMAP-- 
-- typedef void* FPDF_BOOKMARK-- 
-- typedef void* FPDF_CLIPPATH-- 
-- typedef void* FPDF_DEST-- 
-- typedef void* FPDF_DOCSCHHANDLE-- 
-- typedef void* FPDF_DOCUMENT-- 
-- typedef void* FPDF_FONT-- 
-- typedef void* FPDF_HMODULE-- 
-- typedef void* FPDF_LINK-- 
-- typedef void* FPDF_MODULEMGR-- 
-- typedef void* FPDF_PAGE-- 
-- typedef void* FPDF_PAGELINK-- 
-- typedef void* FPDF_PAGEOBJECT--  -- Page object(text, path, etc) 
-- typedef void* FPDF_PAGERANGE-- 
-- typedef void* FPDF_PATH-- 
-- typedef void* FPDF_RECORDER-- 
-- typedef void* FPDF_SCHHANDLE-- 
-- typedef void* FPDF_TEXTPAGE-- 
-- typedef void* FPDF_STRINGHANDLE-- 
-- typedef void* FPDF_WIDGET-- 
 
-- Basic data types 
-- typedef int FPDF_BOOL-- 
-- typedef int FPDF_ERROR-- 
-- typedef unsigned long FPDF_DWORD-- 
-- typedef float FS_FLOAT-- 
-- typedef void* FPDF_LPVOID-- 
-- typedef void const* FPDF_LPCVOID-- 
-- typedef char const* FPDF_LPCSTR-- 
-- typedef int FPDF_RESULT-- 
 
-- Duplex types 
enum type FPDF_DUPLEXTYPE 
  DuplexUndefined = 0, 
  Simplex, 
  DuplexFlipShortEdge, 
  DuplexFlipLongEdge 
end type 
 
-- String types 
--typedef unsigned short FPDF_WCHAR-- 
--typedef unsigned char const* FPDF_LPCBYTE-- 
 
-- FPDFSDK may use three types of strings: byte string, wide string (UTF-16LE 
-- encoded), and platform dependent string 
--typedef const char* FPDF_BYTESTRING-- 
 
-- FPDFSDK always uses UTF-16LE encoded wide strings, each character uses 2 
-- bytes (except surrogation), with the low byte first. 
--typedef const unsigned short* FPDF_WIDESTRING-- 
 
-- Structure for a byte string. 
-- Note, a byte string commonly means a UTF-16LE formated string. 
/*************************************************************** 

Structure FPDF_BSTR 
  -- String buffer. 
  *str 
  -- Length of the string, in bytes. 
  len.l 
EndStructure 
***************************************************************/ 
public constant SizeOf_FPDF_BSTR = 12 
 
-- For Windows programmers: In most cases it's OK to treat FPDF_WIDESTRING as a 
-- Windows unicode string, however, special care needs to be taken if you 
-- expect to process Unicode larger than 0xffff. 
-- 
-- For Linux/Unix programmers: most compiler/library environments use 4 bytes 
-- for a Unicode character, and you have to convert between FPDF_WIDESTRING and 
-- system wide string by yourself. 
--typedef const char* FPDF_STRING-- 
 
-- Matrix for transformation. 
/*************************************************************** 

Structure FS_MATRIX 
  a.f 
  b.f 
  c.f 
  d.f 
  e.f 
  f.f 
EndStructure 
***************************************************************/ 
public constant SizeOf_FS_MATRIX = 24 
 
-- Rectangle area(float) in device or page coordinate system. 
/*************************************************************** 

Structure FS_RECTF 
  -- The x-coordinate of the left-top corner. 
  left.f 
  -- The y-coordinate of the left-top corner. 
  top.f 
  -- The x-coordinate of the right-bottom corner. 
  right.f 
  -- The y-coordinate of the right-bottom corner. 
  bottom.f 
EndStructure --* FS_LPRECTF, FS_RECTF 
***************************************************************/ 
public constant SizeOf_FS_RECTF = 16 
 
-- Const Pointer to FS_RECTF structure. 
--typedef const FS_RECTF* FS_LPCRECTF-- 
 
-- Process-wide options for initializing the library. 
/*************************************************************** 

Structure FPDF_LIBRARY_CONFIG 
  -- Version number of the interface. Currently must be 2. 
  version.l 
 
  -- Array of paths to scan in place of the defaults when using built-in 
  -- FXGE font loading code. The array is terminated by a NULL pointer. 
  -- The Array may be NULL itself to use the default paths. May be ignored 
  -- entirely depending upon the platform. 
  --*m_pUserFontPaths 
 
  -- Version 2. 
 
  -- pointer to the v8::Isolate to use, or NULL to force PDFium to create one. 
  --m_pIsolate-- 
 
  -- The embedder data slot to use in the v8::Isolate to store PDFium's 
  -- per-isolate data. The value needs to be between 0 and 
  -- v8::Internals::kNumIsolateDataLots (exclusive). Note that 0 is fine 
  -- for most embedders. 
  m_v8EmbedderSlot.l-- 
EndStructure 
***************************************************************/ 
public constant SizeOf_FPDF_LIBRARY_CONFIG = 8 
 
 
-- Prototype.i m_GetBlock(*param, position.i, *pBuf, size.i) 
 
 
-- Structure for custom file access. 
/*************************************************************** 

Structure FPDF_FILEACCESS 
  -- File length, in bytes. 
  m_FileLen.i 
 
  -- A function pointer for getting a block of data from a specific position. 
  -- Position is specified by byte offset from the beginning of the file. 
  -- The position and size will never go out of range of the file length. 
  -- It may be possible for FPDFSDK to call this function multiple times for 
  -- the same position. 
  -- Return value: should be non-zero if successful, zero for error. 
  fptr.m_GetBlock --Int (*m_GetBlock)(void* param, unsigned long position, unsigned char* pBuf, unsigned long size)-- 
 
  -- A custom pointer for all implementation specific data.  This pointer will 
  -- be used as the first parameter to the m_GetBlock callback. 
  *m_Param-- 
EndStructure 
***************************************************************/ 
public constant SizeOf_FPDF_FILEACCESS = 24 
 
 
 
-- Prototype   Release(*clientData) 
-- Prototype.l GetSize(*clientData) 
-- Prototype.l ReadBlock(*clientData, offset.i, *buffer, size.i) 
-- Prototype.l WriteBlock(*clientData, offset.i, *buffer, size.i) 
-- Prototype.l Flush(*clientData) 
-- Prototype.l Truncate(*clientData, size.i) 
 
-- 
-- Structure For file reading Or writing (I/O). 
-- 
-- This is a handler And should be implemented by callers. 
-- 
/*************************************************************** 

Structure FPDF_FILEHANDLER 
  -- 
  -- User-defined Data. 
  -- Callers can use this field To track controls. 
  -- 
  --clientData-- 
  -- 
  -- Callback function To release the current file stream object. 
  -- param[in] clientData    Pointer To user-defined Data. 
  -- return None. 
  -- 
  fptr0.Release --void (*Release)(FPDF_LPVOID clientData)-- 
  -- 
  -- Callback function To retrieve the current file stream size. 
  -- param[in] clientData    Pointer To user-defined Data. 
  -- return Size of file stream. 
  -- 
  fptr1.GetSize --FPDF_DWORD (*GetSize)(FPDF_LPVOID clientData) 
  -- 
  -- Callback function To Read Data from the current file stream. 
  -- param[in]   clientData  Pointer To user-defined Data. 
  -- param[in]   offset      Offset position starts from the beginning of file stream. This parameter indicates reading position. 
  -- param[in]   buffer      Memory buffer To store Data which are Read from file stream. This parameter should Not be <b>NULL</b>. 
  -- param[in]   size        Size of Data which should be Read from file stream, in bytes. The buffer indicated by the parameter <i>buffer</i> 
  --                         should be enough To store specified Data. 
  -- return 0 For success, other value For failure. 
  -- 
  fptr2.ReadBlock --(*ReadBlock)(FPDF_LPVOID clientData, FPDF_DWORD offset, FPDF_LPVOID buffer, FPDF_DWORD size) 
  -- 
  -- Callback function To write Data into the current file stream. 
  -- param[in]   clientData  Pointer To user-defined Data. 
  -- param[in]   offset      Offset position starts from the beginning of file stream. This parameter indicates writing position. 
  -- param[in]   buffer      Memory buffer contains Data which is written into file stream. This parameter should Not be <b>NULL</b>. 
  -- param[in]   size        Size of Data which should be written into file stream, in bytes. 
  -- return 0 For success, other value For failure. 
  -- 
  fptr3.WriteBlock --FPDF_RESULT (*WriteBlock)(FPDF_LPVOID clientData, FPDF_DWORD offset, FPDF_LPCVOID buffer, FPDF_DWORD size)-- 
  -- 
  -- Callback function To flush all internal accessing buffers. 
  -- param[in]   clientData  Pointer To user-defined Data. 
  -- return 0 For success, other value For failure. 
  -- 
  fptr4.Flush --FPDF_RESULT (*Flush)(FPDF_LPVOID clientData)-- 
  -- 
  -- Callback function To change file size. details This function is called under writing mode usually. Implementer can determine whether To realize it based on application requests. 
  -- param[in]   clientData  Pointer To user-defined Data. 
  -- param[in]   size        New size of file stream, in bytes. 
  -- return 0 For success, other value For failure. 
  -- 
  fptr5.Truncate --FPDF_RESULT (*Truncate)(FPDF_LPVOID clientData, FPDF_DWORD size)-- 
EndStructure -- FPDF_FILEHANDLER,--FPDF_LPFILEHANDLER-- 
***************************************************************/ 
public constant SizeOf_FPDF_FILEHANDLER = 48 
 
---------------------------------------------------------------------------------------------------------------------------------- 
-- prototype.l IsDataAvail(*pThis.FX_FILEAVAIL, offset.i, size.i) 
---------------------------------------------------------------------------------------------------------------------------------- 
-- Prototype.l IsDataAvail(*pThis, offset.i, size.i) 
 
-- Interface for checking whether sections of the file are available. 
/*************************************************************** 

Structure FX_FILEAVAIL 
  -- Version number of the interface. Must be 1. 
  version.l 
 
  -- Reports if the specified data section is currently available. A section is 
  -- available if all bytes in the section are available. 
  -- 
  -- Interface Version: 1 
  -- Implementation Required: Yes 
  -- 
  --   pThis  - pointer to the interface structure. 
  --   offset - the offset of the data section in the file. 
  --   size   - the size of the data section. 
  -- 
  -- Returns true if the specified data section at |offset| of |size| 
  -- is available. 
  fptr.IsDataAvail -- FPDF_BOOL (*IsDataAvail)(structure _FX_FILEAVAIL* pThis, size_t offset, size_t size)-- 
EndStructure --FX_FILEAVAIL 
--typedef void* FPDF_AVAIL-- 
***************************************************************/ 
public constant SizeOf_FX_FILEAVAIL = 12 
 
---------------------------------------------------------------------------------------------------------------------------------- 
--prototype AddSegment(*pThis.FX_DOWNLOADHINTS, offset.i, size.i) 
---------------------------------------------------------------------------------------------------------------------------------- 
-- Prototype AddSegment(*pThis, offset.i, size.i) 
-- Download hints interface. Used to receive hints for further downloading. 
/*************************************************************** 

Structure FX_DOWNLOADHINTS 
  -- Version number of the interface. Must be 1. 
  version.l 
 
  -- Add a section to be downloaded. 
  -- 
  -- Interface Version: 1 
  -- Implementation Required: Yes 
  -- 
  --   pThis  - pointer to the interface structure. 
  --   offset - the offset of the hint reported to be downloaded. 
  --   size   - the size of the hint reported to be downloaded. 
  -- 
  -- The |offset| and |size| of the section may not be unique. Part of the 
  -- section might be already available. The download manager must deal with 
  -- overlapping sections. 
  fptr.AddSegment-- void (*AddSegment)(structure _FX_DOWNLOADHINTS* pThis, size_t offset, size_t size)-- 
EndStructure 
***************************************************************/ 
public constant SizeOf_FX_DOWNLOADHINTS = 12 
 
 
/*************************************************************** 

Structure FS_QUADPOINTSF 
  x1.f 
  y1.f 
  x2.f 
  y2.f 
  x3.f 
  y3.f 
  x4.f 
  y4.f 
EndStructure 
***************************************************************/ 
public constant SizeOf_FS_QUADPOINTSF = 32 
 
---------------------------------------------------------------------------------------------------------------------------------- 
--prototype FSDK_UnSupport_Handler(*pThis.UNSUPPORT_INFO, nType.l) 
---------------------------------------------------------------------------------------------------------------------------------- 
-- Prototype FSDK_UnSupport_Handler(*pThis, nType.l) 
 
-- Interface for unsupported feature notifications. 
/*************************************************************** 

Structure UNSUPPORT_INFO 
  -- Version number of the interface. Must be 1. 
  version.l 
 
  -- Unsupported object notification function. 
  -- Interface Version: 1 
  -- Implementation Required: Yes 
  -- 
  --   pThis - pointer to the interface structure. 
  --   nType - the type of unsupported object. One of the |FPDF_UNSP_*| entries. 
  fptr.FSDK_UnSupport_Handler -- void (*FSDK_UnSupport_Handler)(structure _UNSUPPORT_INFO* pThis, int nType)-- 
EndStructure 
***************************************************************/ 
public constant SizeOf_UNSUPPORT_INFO = 12 
 
--typedef void* FPDF_FORMHANDLE-- 
 
-- -- Prototype.l app_alert(*pThis.IPDF_JsPlatform, *Msg.string, *Title.string, Type.l, Icon.l)-- 
-- -- Prototype app_beep(*pThis.IPDF_JsPlatform, nType.l) 
-- -- Prototype.l app_response(*pThis.IPDF_JsPlatform, *Question.string, *Title.string, *Default.string, *cLabel.string, bPassword.l, void* response, int length) 
-- -- Prototype.l Doc_getFilePath(*pThis.IPDF_JsPlatform, *filePath, length.l) 
-- -- Prototype Doc_mail(*pThis.IPDF_JsPlatform, *mailData, length.l, bUI.l, *To.string, *Subject.string, *CC.string, *BCC.string, *Msg.string) 
-- -- Prototype Doc_print(*pThis.IPDF_JsPlatform, bUI.l, nStart.l, int nEnd, bSilent.l, bShrinkToFit.l, bPrintAsImage.l, bReverse.l, bAnnotations.l)-- 
-- -- Prototype Doc_submitForm(*pThis.IPDF_JsPlatform, *formData, length.l, *URL.string) 
-- -- Prototype Doc_gotoPage(*pThis.IPDF_JsPlatform, nPageNum.l) 
-- -- Prototype.l Field_browse(*pThis.IPDF_JsPlatform, *filePath, length.l) 
 
-- Prototype.l app_alert(*pThis, *Msg.string, *Title.string, Type.l, Icon.l)-- 
-- Prototype app_beep(*pThis, nType.l) 
-- Prototype.l app_response(*pThis, *Question.string, *Title.string, *Default.string, *cLabel.string, bPassword.l, *response, length.l) 
-- Prototype.l Doc_getFilePath(*pThis, *filePath, length.l) 
-- Prototype Doc_mail(*pThis, *mailData, length.l, bUI.l, *To.string, *Subject.string, *CC.string, *BCC.string, *Msg.string) 
-- Prototype Doc_print(*pThis, bUI.l, nStart.l, nEnd.l, bSilent.l, bShrinkToFit.l, bPrintAsImage.l, bReverse.l, bAnnotations.l) 
-- Prototype Doc_submitForm(*pThis, *formData, length.l, *URL.string) 
-- Prototype Doc_gotoPage(*pThis, nPageNum.l) 
-- Prototype.l Field_browse(*pThis, *filePath, length.l) 
 
/*************************************************************** 

Structure IPDF_JSPLATFORM --IPDF_JsPlatform 
  -- 
  -- Version number of the Interface. Currently must be 2. 
  -- 
  version.l 
 
  -- Version 1. 
 
  -- 
  -- Method: app_alert 
  --           pop up a dialog To show warning Or hint. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --           pThis       -   Pointer To the Interface Structure itself 
  --           Msg         -   A string containing the message To be displayed. 
  --           Title       -   The title of the dialog. 
  --           Type        -   The stype of button group. 
  --                           0-OK(Default)-- 
  --                           1-OK,Cancel-- 
  --                           2-Yes,NO-- 
  --                           3-Yes, NO, Cancel. 
  --           nIcon       -   The Icon type. 
  --                           0-Error(Default)-- 
  --                           1-Warning-- 
  --                           2-Question-- 
  --                           3-Status. 
  --                           4-Asterisk 
  -- Return Value: 
  --           The Return value could be the folowing type: 
  --                           1-OK-- 
  --                           2-Cancel-- 
  --                           3-NO-- 
  --                           4-Yes-- 
  -- 
  fptr.app_alert  --Int (*app_alert)(structure _IPDF_JsPlatform* pThis, FPDF_WIDESTRING Msg, FPDF_WIDESTRING Title, int Type, int Icon)-- 
 
  -- 
  -- Method: app_beep 
  --           Causes the system To play a sound. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --           pThis       -   Pointer To the Interface Structure itself 
  --           nType       -   The sound type. 
  --                           0 - Error 
  --                           1 - Warning 
  --                           2 - Question 
  --                           3 - Status 
  --                           4 - Default (Default value) 
  -- Return Value: 
  --           None 
  -- 
  fptr1.app_beep -- void (*app_beep)(structure _IPDF_JsPlatform* pThis, int nType)-- 
 
  -- 
  -- Method: app_response 
  --           Displays a dialog box containing a question And an entry field For 
  -- the user To reply To the question. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --           pThis       -   Pointer To the Interface Structure itself 
  --           Question    -   The question To be posed To the user. 
  --           Title       -   The title of the dialog box. 
  --           Default     -   A Default value For the answer To the question. If 
  -- Not specified, no Default value is presented. 
  --           cLabel      -   A short string To appear in front of And on the 
  -- same line As the edit text field. 
  --           bPassword   -   If true, indicates that the user's response should 
  -- show As asterisks (*) Or bullets (?) To mask the response, which might be 
  -- sensitive information. The Default is false. 
  --           response    -   A string buffer allocated by SDK, To receive the 
  -- user's response. 
  --           length      -   The length of the buffer, number of bytes. 
  -- Currently, It's always be 2048. 
  -- Return Value: 
  --       Number of bytes the complete user input would actually require, Not 
  -- including trailing zeros, regardless of the value of the length 
  --       parameter Or the presence of the response buffer. 
  -- Comments: 
  --       No matter on what platform, the response buffer should be always 
  -- written using UTF-16LE encoding. If a response buffer is 
  --       present And the size of the user input exceeds the capacity of the 
  -- buffer As specified by the length parameter, only the 
  --       first "length" bytes of the user input are To be written To the 
  -- buffer. 
  -- 
  fptr2.app_response -- Int (*app_response)(structure _IPDF_JsPlatform* pThis, FPDF_WIDESTRING Question, FPDF_WIDESTRING Title, FPDF_WIDESTRING Default, FPDF_WIDESTRING cLabel, FPDF_BOOL bPassword, void* response, int length)-- 
 
  -- 
  -- Method: Doc_getFilePath 
  --           Get the file path of the current document. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --           pThis       -   Pointer To the Interface Structure itself 
  --           filePath    -   The string buffer To receive the file path. Can be 
  -- NULL. 
  --           length      -   The length of the buffer, number of bytes. Can be 
  -- 0. 
  -- Return Value: 
  --       Number of bytes the filePath consumes, including trailing zeros. 
  -- Comments: 
  --       The filePath should be always input in local encoding. 
  -- 
  --       The Return value always indicated number of bytes required For the 
  -- buffer, even when there is 
  --       no buffer specified, Or the buffer size is less then required. In this 
  -- Case, the buffer will Not 
  --       be modified. 
  -- 
  fptr3.Doc_getFilePath  -- Int (*Doc_getFilePath)(structure _IPDF_JsPlatform* pThis, void* filePath, int length)-- 
 
  -- 
  -- Method: Doc_mail 
  --           Mails the Data buffer As an attachment To all recipients, With Or 
  -- without user interaction. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --           pThis       -   Pointer To the Interface Structure itself 
  --           mailData    -   Pointer To the Data buffer To be sent.Can be NULL. 
  --           length      -   The size,in bytes, of the buffer pointed by 
  -- mailData parameter.Can be 0. 
  --           bUI         -   If true, the rest of the parameters are used in a 
  -- compose-new-message window that is displayed To the user. If false, the cTo 
  -- parameter is required And all others are optional. 
  --           To          -   A semicolon-delimited List of recipients For the 
  -- message. 
  --           Subject     -   The subject of the message. The length limit is 64 
  -- KB. 
  --           CC          -   A semicolon-delimited List of CC recipients For 
  -- the message. 
  --           BCC         -   A semicolon-delimited List of BCC recipients For 
  -- the message. 
  --           Msg         -   The content of the message. The length limit is 64 
  -- KB. 
  -- Return Value: 
  --           None. 
  -- Comments: 
  --           If the parameter mailData is NULL Or length is 0, the current 
  -- document will be mailed As an attachment To all recipients. 
  -- 
  fptr4.Doc_mail -- void (*Doc_mail)(structure _IPDF_JsPlatform* pThis, void* mailData, int length, FPDF_BOOL bUI, FPDF_WIDESTRING To, FPDF_WIDESTRING Subject, FPDF_WIDESTRING CC, FPDF_WIDESTRING BCC, FPDF_WIDESTRING Msg)-- 
 
  -- 
  -- Method: Doc_print 
  --           Prints all Or a specific number of pages of the document. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --           pThis       -   Pointer To the Interface Structure itself. 
  --           bUI         -   If true, will cause a UI To be presented To the 
  -- user To obtain printing information And confirm the action. 
  --           nStart      -   A 0-based index that defines the start of an 
  -- inclusive range of pages. 
  --           nEnd        -   A 0-based index that defines the End of an 
  -- inclusive page range. 
  --           bSilent     -   If true, suppresses the cancel dialog box While 
  -- the document is printing. The Default is false. 
  --           bShrinkToFit    -   If true, the page is shrunk (If necessary) To 
  -- fit within the imageable area of the printed page. 
  --           bPrintAsImage   -   If true, print pages As an image. 
  --           bReverse    -   If true, print from nEnd To nStart. 
  --           bAnnotations    -   If true (the Default), annotations are 
  -- printed. 
  -- 
  fptr5.Doc_print -- void (*Doc_print)(structure _IPDF_JsPlatform* pThis, FPDF_BOOL bUI, int nStart, int nEnd, FPDF_BOOL bSilent, FPDF_BOOL bShrinkToFit, FPDF_BOOL bPrintAsImage, FPDF_BOOL bReverse, FPDF_BOOL bAnnotations)-- 
 
  -- 
  -- Method: Doc_submitForm 
  --           Send the form Data To a specified URL. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --           pThis       -   Pointer To the Interface Structure itself 
  --           formData    -   Pointer To the Data buffer To be sent. 
  --           length      -   The size,in bytes, of the buffer pointed by 
  -- formData parameter. 
  --           URL         -   The URL To send To. 
  -- Return Value: 
  --           None. 
  -- 
  -- 
  fptr6.Doc_submitForm -- void (*Doc_submitForm)(structure _IPDF_JsPlatform* pThis, void* formData, int length, FPDF_WIDESTRING URL)-- 
 
  -- 
  -- Method: Doc_gotoPage 
  --           Jump To a specified page. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --           pThis       -   Pointer To the Interface Structure itself 
  --           nPageNum    -   The specified page number, zero For the first 
  -- page. 
  -- Return Value: 
  --           None. 
  -- 
  -- 
  fptr7.Doc_gotoPage   -- void (*Doc_gotoPage)(structure _IPDF_JsPlatform* pThis, int nPageNum)-- 
  -- 
  -- Method: Field_browse 
  --           Show a file selection dialog, And Return the selected file path. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --           pThis       -   Pointer To the Interface Structure itself. 
  --           filePath    -   Pointer To the Data buffer To receive the file 
  -- path.Can be NULL. 
  --           length      -   The length of the buffer, number of bytes. Can be 
  -- 0. 
  -- Return Value: 
  --       Number of bytes the filePath consumes, including trailing zeros. 
  -- Comments: 
  --       The filePath shoule be always input in local encoding. 
  -- 
  fptr8.Field_browse -- Int (*Field_browse)(structure _IPDF_JsPlatform* pThis, void* filePath, int length)-- 
 
  -- 
  --   pointer To FPDF_FORMFILLINFO Interface. 
  -- 
  *m_pFormfillinfo-- 
 
  -- Version 2. 
 
  *m_isolate--          -- Unused in v3, retain for compatibility. 
  m_v8EmbedderSlot.l   -- Unused in v3, retain for compatibility. 
 
  -- Version 3. 
  -- Version 3 moves m_Isolate And m_v8EmbedderSlot To FPDF_LIBRARY_CONFIG. 
EndStructure 
***************************************************************/ 
public constant SizeOf_IPDF_JSPLATFORM = 96 
 
/*************************************************************** 

-- Declares of a structure type To the local system time. 
Structure FPDF_SYSTEMTIME 
  wYear.l         -- years since 1900 
  wMonth.l        -- months since January - [0,11] 
  wDayOfWeek.l    -- days since Sunday - [0,6] 
  wDay.l          -- day of the month - [1,31] 
  wHour.l         -- hours since midnight - [0,23] 
  wMinute.l       -- minutes after the hour - [0,59] 
  wSecond.l       -- seconds after the minute - [0,59] 
  wMilliseconds.l -- milliseconds after the second - [0,999] 
EndStructure 
***************************************************************/ 
public constant SizeOf_FPDF_SYSTEMTIME = 32 
 
-- Prototype lpTimerFunc()-- TimerCallback lpTimerFunc 
-- Prototype ReleaseFORMFILLINFO(*pThis) 
-- Prototype FFI_Invalidate(*pThis, *page, left.d, top.d, right.d, bottom.d) 
-- Prototype FFI_OutputSelectedRect(*pThis, *page, left.d, top.d, right.d, bottom.d) 
-- Prototype FFI_SetCursor(*pThis, nCursorType.l) 
-- Prototype.l FFI_SetTimer(*pThis, uElapse.l, TimerCallback.lpTimerFunc) 
-- Prototype FFI_KillTimer(*pThis, nTimerID.l) 
-- Prototype.i FFI_GetLocalTime(*pThis) 
-- Prototype FFI_OnChange(*pThis) 
-- Prototype.i FFI_GetPage(*pThis, *document, nPageIndex.l) 
-- Prototype.i FFI_GetCurrentPage(*pThis, *document) 
-- Prototype.l FFI_GetRotation(*pThis, *page) 
-- Prototype FFI_ExecuteNamedAction(*pThis, *namedAction.string) 
-- Prototype FFI_SetTextFieldFocus(*pThis, *stringvalue.string, valueLen.i, is_focus.l) 
-- Prototype FFI_DoURIAction(*pThis, *bsURI.p-ascii) 
-- Prototype FFI_DoGoToAction(*pThis, nPageIndex.l, zoomMode.l, *fPosArray.float, sizeofArray.l) 
-- Prototype FFI_DisplayCaret(*pThis, *page, bVisible.l, left.d, top.d, right.d, bottom.d) 
-- Prototype.l FFI_GetCurrentPageIndex(*pThis, *document) 
-- Prototype FFI_SetCurrentPage(*pThis, *document, iCurPage.l) 
-- Prototype FFI_GotoURL(*pThis, *document, *wsURL.string) 
-- Prototype FFI_GetPageViewRect(*pThis, *page, *left.double, *top.double, *right.double, *bottom.double) 
-- Prototype FFI_PageEvent(*pThis, page_count.l, event_type.i) 
-- Prototype.l FFI_PopupMenu(*pThis, *page, *hWidget, menuFlag.l, x.f, y.f) 
-- Prototype.i FFI_OpenFile(*pThis, fileFlag.l, *wsURL.string, mode.p-ascii) 
-- Prototype FFI_EmailTo(*pThis, *fileHandler.FPDF_FILEHANDLER, *pTo.string, *pSubject.string, *pCC.string, *pBcc.string, *pMsg.string) 
-- Prototype FFI_UploadTo(*pThis, *fileHandler.FPDF_FILEHANDLER, fileFlag.l, *uploadTo.string) 
-- Prototype.l FFI_GetPlatform(*pThis, *platform, length.l) 
-- Prototype.l FFI_GetLanguage(*pThis, *language, length.l) 
-- Prototype.i FFI_DownloadFromURL(*pThis, *URL.string) 
-- Prototype.l FFI_PostRequestURL(*pThis, *wsURL.string, *wsData.string, *wsContentType.string, *wsEncode.string, *wsHeader.string, *respone.FPDF_BSTR) 
-- Prototype.l FFI_PutRequestURL(*pThis, *wsURL.string, *wsData.string, *wsEncode.string) 
 
/*************************************************************** 

Structure FPDF_FORMFILLINFO 
  -- 
   -- Version number of the Interface. Currently must be 1 (when PDFium is built 
   --  without the XFA Module) Or must be 2 (when built With the XFA Module). 
   -- 
  version.l 
 
  -- Version 1. 
  -- 
   --Method: Release 
   --         Give implementation a chance To release any Data after the 
   --         Interface is no longer used 
   --Interface Version: 
   --         1 
   --Implementation Required: 
   --         No 
   --Comments: 
   --         Called by Foxit SDK during the final cleanup process. 
   --Parameters: 
   --         pThis       -   Pointer To the Interface Structure itself 
   --Return Value: 
   --         None 
   -- 
  fptr.ReleaseFORMFILLINFO  -- void (*ReleaseFORMFILLINFO)(structure _FPDF_FORMFILLINFO* pThis)-- 
 
  -- 
   -- Method: FFI_Invalidate 
   --          Invalidate the client area within the specified rectangle. 
   -- Interface Version: 
   --          1 
   -- Implementation Required: 
      --           yes 
   -- Parameters: 
   --          pThis       -   Pointer To the Interface Structure itself. 
   --          page        -   Handle To the page. Returned by FPDF_LoadPage 
   --function. 
   --          left        -   Left position of the client area in PDF page 
   --coordinate. 
   --          top         -   Top  position of the client area in PDF page 
   --coordinate. 
   --          right       -   Right position of the client area in PDF page 
   --coordinate. 
   --          bottom      -   Bottom position of the client area in PDF page 
   --coordinate. 
   -- Return Value: 
   --          None. 
   -- 
   --comments: 
   --          All positions are measured in PDF "user space". 
   --          Implementation should call FPDF_RenderPageBitmap() function For repainting a specified page area. 
  -- 
  fptr1.FFI_Invalidate  -- void (*FFI_Invalidate)(structure _FPDF_FORMFILLINFO* pThis, FPDF_PAGE page, double left, double top, double right, double bottom)-- 
 
  -- 
   -- Method: FFI_OutputSelectedRect 
   --          When user is taking the mouse To Select texts on a form field, * this callback function will keep 
   --          returning the selected areas To the implementation. 
   -- 
   -- Interface Version: 
   --          1 
   -- Implementation Required: 
   --          No 
   -- Parameters: 
   --          pThis       -   Pointer To the Interface Structure itself. 
   --          page        -   Handle To the page. Returned by FPDF_LoadPage 
   -- function. 
   --          left        -   Left position of the client area in PDF page 
   -- coordinate. 
   --          top         -   Top  position of the client area in PDF page 
   -- coordinate. 
   --          right       -   Right position of the client area in PDF page 
   -- coordinate. 
   --          bottom      -   Bottom position of the client area in PDF page 
   -- coordinate. 
   -- Return Value: 
   --          None. 
   -- 
   -- comments: 
   --          This CALLBACK function is useful For implementing special text 
   -- selection effect. Implementation should 
   --          first records the returned rectangles, then draw them one by one 
   -- at the painting period, last,remove all 
   --          the recorded rectangles when finish painting. 
  -- 
  fptr2.FFI_OutputSelectedRect  -- void (*FFI_OutputSelectedRect)(structure _FPDF_FORMFILLINFO* pThis, FPDF_PAGE page, double left, double top, double right, double bottom)-- 
 
  -- 
  -- Method: FFI_SetCursor 
  --           Set the Cursor shape. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --       pThis       -   Pointer To the Interface Structure itself. 
  --       nCursorType -   Cursor type. see Flags For Cursor type For the 
  -- details. 
  --   Return value: 
  --       None. 
  -- 
  fptr3.FFI_SetCursor  -- void (*FFI_SetCursor)(structure _FPDF_FORMFILLINFO* pThis, int nCursorType)-- 
 
  -- 
  -- Method: FFI_SetTimer 
  --       This method installs a system timer. An interval value is specified, *       And every time that interval elapses, the system must call into the 
  --       callback function With the timer ID As returned by this function. 
  -- Interface Version: 
  --       1 
  -- Implementation Required: 
  --       yes 
  -- Parameters: 
  --       pThis       -   Pointer To the Interface Structure itself. 
  --       uElapse     -   Specifies the time-out value, in milliseconds. 
  --       lpTimerFunc -   A pointer To the callback function-TimerCallback. 
  -- Return value: 
  --       The timer identifier of the new timer If the function is successful. 
  --       An application passes this value To the FFI_KillTimer method To kill 
  --       the timer. Nonzero If it is successful-- otherwise, it is zero. 
  -- 
  fptr4.FFI_SetTimer  -- Int (*FFI_SetTimer)(structure _FPDF_FORMFILLINFO* pThis, int uElapse, TimerCallback lpTimerFunc)-- 
 
  -- 
  -- Method: FFI_KillTimer 
  --       This method uninstalls a system timer identified by nIDEvent, As 
  --       set by an earlier call To FFI_SetTimer. 
  -- Interface Version: 
  --       1 
  -- Implementation Required: 
  --       yes 
  -- Parameters: 
  --       pThis       -   Pointer To the Interface Structure itself. 
  --       nTimerID    -   The timer ID returned by FFI_SetTimer function. 
  -- Return value: 
  --       None. 
  -- 
  fptr5.FFI_KillTimer  -- void (*FFI_KillTimer)(structure _FPDF_FORMFILLINFO* pThis, int nTimerID)-- 
 
  -- 
  -- Method: FFI_GetLocalTime 
  --           This method receives the current local time on the system. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --       pThis       -   Pointer To the Interface Structure itself. 
  --   Return value: 
  --       None. 
  -- 
  fptr6.FFI_GetLocalTime  -- FPDF_SYSTEMTIME (*FFI_GetLocalTime)(structure _FPDF_FORMFILLINFO* pThis)-- 
 
  -- 
  -- Method: FFI_OnChange 
  --           This method will be invoked To notify implementation when the 
  -- value of any FormField on the document had been changed. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           no 
  -- Parameters: 
  --       pThis       -   Pointer To the Interface Structure itself. 
  --   Return value: 
  --       None. 
  -- 
  fptr7.FFI_OnChange  -- void (*FFI_OnChange)(structure _FPDF_FORMFILLINFO* pThis)-- 
 
  -- 
  -- Method: FFI_GetPage 
  --           This method receives the page pointer associated With a specified 
  -- page index. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --       pThis       -   Pointer To the Interface Structure itself. 
  --       document    -   Handle To document. Returned by FPDF_LoadDocument 
  -- function. 
  --       nPageIndex  -   Index number of the page. 0 For the first page. 
  -- Return value: 
  --       Handle To the page. Returned by FPDF_LoadPage function. 
  -- Comments: 
  --       In some cases, the document-level JavaScript action may refer To a 
  -- page which hadn't been loaded yet. 
  --       To successfully run the javascript action, implementation need To load 
  -- the page For SDK. 
  -- 
  fptr8.FFI_GetPage  -- FPDF_PAGE (*FFI_GetPage)(structure _FPDF_FORMFILLINFO* pThis, FPDF_DOCUMENT document, int nPageIndex)-- 
 
  -- 
  -- Method: FFI_GetCurrentPage 
  --       This method receives the current page pointer. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --       pThis       -   Pointer To the Interface Structure itself. 
  --       document    -   Handle To document. Returned by FPDF_LoadDocument 
  -- function. 
  -- Return value: 
  --       Handle To the page. Returned by FPDF_LoadPage function. 
  -- 
  fptr9.FFI_GetCurrentPage  -- FPDF_PAGE (*FFI_GetCurrentPage)(structure _FPDF_FORMFILLINFO* pThis, FPDF_DOCUMENT document)-- 
 
  -- 
  -- Method: FFI_GetRotation 
  --           This method receives currently rotation of the page view. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --       pThis       -   Pointer To the Interface Structure itself. 
  --       page        -   Handle To page. Returned by FPDF_LoadPage function. 
  -- Return value: 
  --       The page rotation. Should be 0(0 degree),1(90 degree),2(180 
  -- degree),3(270 degree), in a clockwise direction. 
  -- 
  -- Note: Unused. 
  -- 
  fptr10.FFI_GetRotation  -- Int (*FFI_GetRotation)(structure _FPDF_FORMFILLINFO* pThis, FPDF_PAGE page)-- 
 
  -- 
  -- Method: FFI_ExecuteNamedAction 
  --           This method will execute an named action. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --       pThis           -   Pointer To the Interface Structure itself. 
  --       namedAction     -   A byte string which indicates the named action, * terminated by 0. 
  -- Return value: 
  --       None. 
  -- Comments: 
  --       See the named actions description of <<PDF Reference, version 1.7>> 
  -- For more details. 
  -- 
  fptr11.FFI_ExecuteNamedAction  -- void (*FFI_ExecuteNamedAction)(structure _FPDF_FORMFILLINFO* pThis, FPDF_BYTESTRING namedAction)-- 
   
  -- 
  -- @brief This method will be called when a text field is getting Or losing a 
  -- focus. 
  -- 
  -- @param[in] pThis      Pointer To the Interface Structure itself. 
  -- @param[in] value      The string value of the form field, in UTF-16LE 
  -- format. 
  -- @param[in] valueLen   The length of the string value, number of characters 
  -- (Not bytes). 
  -- @param[in] is_focus   True If the form field is getting a focus, False For 
  -- losing a focus. 
  -- 
  -- @return None. 
  -- 
  -- @note Currently,only support text field And combobox field. 
  -- 
  fptr12.FFI_SetTextFieldFocus  -- void (*FFI_SetTextFieldFocus)(structure _FPDF_FORMFILLINFO* pThis, FPDF_WIDESTRING value, FPDF_DWORD valueLen, FPDF_BOOL is_focus)-- 
 
  -- 
  -- Method: FFI_DoURIAction 
  --           This action resolves To a uniform resource identifier. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           No 
  -- Parameters: 
  --       pThis           -   Pointer To the Interface Structure itself. 
  --       bsURI           -   A byte string which indicates the uniform resource 
  -- identifier, terminated by 0. 
  -- Return value: 
  --       None. 
  -- Comments: 
  --       See the URI actions description of <<PDF Reference, version 1.7>> For 
  -- more details. 
  -- 
  fptr13.FFI_DoURIAction  -- void (*FFI_DoURIAction)(structure _FPDF_FORMFILLINFO* pThis, FPDF_BYTESTRING bsURI)-- 
 
  -- 
  -- Method: FFI_DoGoToAction 
  --           This action changes the view To a specified destination. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           No 
  -- Parameters: 
  --       pThis           -   Pointer To the Interface Structure itself. 
  --       nPageIndex      -   The index of the PDF page. 
  --       zoomMode        -   The zoom mode For viewing page. See below. 
  --       fPosArray       -   The float Array which carries the position info. 
  --       sizeofArray     -   The size of float Array. 
  -- 
  -- PDFZoom values: 
  --   - XYZ = 1 
  --   - FITPAGE = 2 
  --   - FITHORZ = 3 
  --   - FITVERT = 4 
  --   - FITRECT = 5 
  --   - FITBBOX = 6 
  --   - FITBHORZ = 7 
  --   - FITBVERT = 8 
  -- 
  -- Return value: 
  --       None. 
  -- Comments: 
  --       See the Destinations description of <<PDF Reference, version 1.7>> in 
  --8.2.1 For more details. 
  -- 
  fptr14.FFI_DoGoToAction  -- void (*FFI_DoGoToAction)(structure _FPDF_FORMFILLINFO* pThis, int nPageIndex, int zoomMode, float* fPosArray, int sizeofArray)-- 
 
  -- 
  --   pointer To IPDF_JSPLATFORM Interface 
  -- 
  *m_pJsPlatform.IPDF_JSPLATFORM-- 
 
  -- Version 2. 
  -- 
    -- Method: FFI_DisplayCaret 
    --           This method will show the caret at specified position. 
    -- Interface Version: 
    --           2 
    -- Implementation Required: 
    --           yes 
    -- Parameters: 
    --       pThis           -   Pointer To the Interface Structure itself. 
    --       page            -   Handle To page. Returned by FPDF_LoadPage 
    --function. 
    --       left            -   Left position of the client area in PDF page 
    --coordinate. 
    --       top             -   Top position of the client area in PDF page 
    --coordinate. 
    --       right           -   Right position of the client area in PDF page 
    --coordinate. 
    --       bottom          -   Bottom position of the client area in PDF page 
    --coordinate. 
    -- Return value: 
    --       None. 
    -- 
  fptr15.FFI_DisplayCaret  -- void (*FFI_DisplayCaret)(structure _FPDF_FORMFILLINFO* pThis, FPDF_PAGE page, FPDF_BOOL bVisible, double left, double top, double right, double bottom)-- 
 
  -- 
  -- Method: FFI_GetCurrentPageIndex 
  --           This method will get the current page index. 
  -- Interface Version: 
  --           2 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --       pThis           -   Pointer To the Interface Structure itself. 
  --       document        -   Handle To document. Returned by FPDF_LoadDocument 
  --function. 
  -- Return value: 
  --       The index of current page. 
  -- 
  fptr16.FFI_GetCurrentPageIndex  -- Int (*FFI_GetCurrentPageIndex)(structure _FPDF_FORMFILLINFO* pThis, FPDF_DOCUMENT document)-- 
 
  -- 
  -- Method: FFI_SetCurrentPage 
  --           This method will set the current page. 
  -- Interface Version: 
  --           2 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --       pThis           -   Pointer To the Interface Structure itself. 
  --       document        -   Handle To document. Returned by FPDF_LoadDocument 
  --function. 
  --       iCurPage        -   The index of the PDF page. 
  -- Return value: 
  --       None. 
  -- 
  fptr17.FFI_SetCurrentPage  -- void (*FFI_SetCurrentPage)(structure _FPDF_FORMFILLINFO* pThis, FPDF_DOCUMENT document, int iCurPage)-- 
 
  -- 
  -- Method: FFI_GotoURL 
  --           This method will link To the specified URL. 
  -- Interface Version: 
  --           2 
  -- Implementation Required: 
  --           no 
  -- Parameters: 
  --       pThis           -   Pointer To the Interface Structure itself. 
  --       document        -   Handle To document. Returned by FPDF_LoadDocument 
  --function. 
  --       wsURL           -   The string value of the URL, in UTF-16LE format. 
  -- Return value: 
  --       None. 
  -- 
  fptr18.FFI_GotoURL  -- void (*FFI_GotoURL)(structure _FPDF_FORMFILLINFO* pThis, FPDF_DOCUMENT document, FPDF_WIDESTRING wsURL)-- 
 
  -- 
  -- Method: FFI_GetPageViewRect 
  --           This method will get the current page view rectangle. 
  -- Interface Version: 
  --           2 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --       pThis           -   Pointer To the Interface Structure itself. 
  --       page            -   Handle To page. Returned by FPDF_LoadPage 
  --function. 
  --       left            -   The pointer To receive left position of the page 
  --view area in PDF page coordinate. 
  --       top             -   The pointer To receive top position of the page 
  --view area in PDF page coordinate. 
  --       right           -   The pointer To receive right position of the 
  --client area in PDF page coordinate. 
  --       bottom          -   The pointer To receive bottom position of the 
  --client area in PDF page coordinate. 
  -- Return value: 
  --       None. 
  -- 
  fptr19.FFI_GetPageViewRect  -- void (*FFI_GetPageViewRect)(structure _FPDF_FORMFILLINFO* pThis, FPDF_PAGE page, double* left, double* top, double* right, double* bottom)-- 
 
  -- 
  -- Method: FFI_PageEvent 
  --     This method fires when pages have been added To Or deleted from the XFA 
  --     document. 
  -- Interface Version: 
  --     2 
  -- Implementation Required: 
  --     yes 
  -- Parameters: 
  --     pThis       -   Pointer To the Interface Structure itself. 
  --     page_count  -   The number of pages To be added To Or deleted from the 
  --                     document. 
  --     event_type  -   See FXFA_PAGEVIEWEVENT_* above. 
  -- Return value: 
  --       None. 
  -- Comments: 
  --           The pages To be added Or deleted always start from the last page 
  --           of document. This means that If parameter page_count is 2 And 
  --           event type is FXFA_PAGEVIEWEVENT_POSTADDED, 2 new pages have been 
  --           appended To the tail of document-- If page_count is 2 and 
  --           event type is FXFA_PAGEVIEWEVENT_POSTREMOVED, the last 2 pages 
  --           have been deleted. 
  -- 
  fptr20.FFI_PageEvent  -- void (*FFI_PageEvent)(structure _FPDF_FORMFILLINFO* pThis, int page_count, FPDF_DWORD event_type)-- 
 
  -- 
  -- Method: FFI_PopupMenu 
  --           This method will track the right context menu For XFA fields. 
  -- Interface Version: 
  --           2 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --       pThis           -   Pointer To the Interface Structure itself. 
  --       page            -   Handle To page. Returned by FPDF_LoadPage 
  --function. 
  --       hWidget         -   Handle To XFA fields. 
  --       menuFlag        -   The menu flags. Please refer To Macro definition 
  --of FXFA_MENU_XXX And this can be one Or a combination of these macros. 
  --       x               -   X position of the client area in PDF page 
  --coordinate. 
  --       y               -   Y position of the client area in PDF page 
  --coordinate. 
  -- Return value: 
  --       TRUE indicates success-- otherwise false. 
  -- 
  fptr21.FFI_PopupMenu  -- FPDF_BOOL (*FFI_PopupMenu)(structure _FPDF_FORMFILLINFO* pThis, FPDF_PAGE page, FPDF_WIDGET hWidget, int menuFlag, float x, float y)-- 
 
  -- 
  -- Method: FFI_OpenFile 
  --           This method will open the specified file With the specified mode. 
  -- Interface Version 
  --           2 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --       pThis           -   Pointer To the Interface Structure itself. 
  --       fileFlag        -   The file flag.Please refer To Macro definition of 
  --FXFA_SAVEAS_XXX And this can be one of these macros. 
  --       wsURL           -   The string value of the file URL, in UTF-16LE 
  --format. 
  --       mode            -   The mode For open file. 
  -- Return value: 
  --       The handle To FPDF_FILEHANDLER. 
  -- 
  fptr22.FFI_OpenFile  -- FPDF_FILEHANDLER* (*FFI_OpenFile)(structure _FPDF_FORMFILLINFO* pThis, int fileFlag, FPDF_WIDESTRING wsURL, const char* mode)-- 
 
  -- 
  -- Method: FFI_EmailTo 
  --           This method will email the specified file stream To the specified 
  --contacter. 
  -- Interface Version: 
  --           2 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --       pThis           -   Pointer To the Interface Structure itself. 
  --       pFileHandler    -   Handle To the FPDF_FILEHANDLER. 
  --       pTo             -   A semicolon-delimited List of recipients For the 
  --message,in UTF-16LE format. 
  --       pSubject        -   The subject of the message,in UTF-16LE format. 
  --       pCC             -   A semicolon-delimited List of CC recipients For 
  --the message,in UTF-16LE format. 
  --       pBcc            -   A semicolon-delimited List of BCC recipients For 
  --the message,in UTF-16LE format. 
  --       pMsg            -   Pointer To the Data buffer To be sent.Can be 
  --NULL,in UTF-16LE format. 
  -- Return value: 
  --       None. 
  -- 
  fptr23.FFI_EmailTo  -- void (*FFI_EmailTo)(structure _FPDF_FORMFILLINFO* pThis, FPDF_FILEHANDLER* fileHandler, FPDF_WIDESTRING pTo, FPDF_WIDESTRING pSubject, FPDF_WIDESTRING pCC, FPDF_WIDESTRING pBcc, FPDF_WIDESTRING pMsg)-- 
 
  -- 
  -- Method: FFI_UploadTo 
  --           This method will get upload the specified file stream To the 
  --specified URL. 
  -- Interface Version: 
  --           2 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --       pThis           -   Pointer To the Interface Structure itself. 
  --       pFileHandler    -   Handle To the FPDF_FILEHANDLER. 
  --       fileFlag        -   The file flag.Please refer To Macro definition of 
  --FXFA_SAVEAS_XXX And this can be one of these macros. 
  --       uploadTo        -   Pointer To the URL path, in UTF-16LE format. 
  -- Return value: 
  --       None. 
  -- 
  fptr24.FFI_UploadTo  -- void (*FFI_UploadTo)(structure _FPDF_FORMFILLINFO* pThis, FPDF_FILEHANDLER* fileHandler, int fileFlag, FPDF_WIDESTRING uploadTo)-- 
 
  -- 
  -- Method: FFI_GetPlatform 
  --           This method will get the current platform. 
  -- Interface Version: 
  --           2 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --       pThis           -   Pointer To the Interface Structure itself. 
  --       platform        -   Pointer To the Data buffer To receive the 
  --platform.Can be NULL,in UTF-16LE format. 
  --       length          -   The length of the buffer, number of bytes. Can be 
  --0. 
  -- Return value: 
  --       The length of the buffer, number of bytes. 
  -- 
  fptr25.FFI_GetPlatform  -- Int (*FFI_GetPlatform)(structure _FPDF_FORMFILLINFO* pThis, void* platform, int length)-- 
 
  -- 
  -- Method: FFI_GetLanguage 
  --           This method will get the current language. 
  -- Interface Version: 
  --           2 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --       pThis           -   Pointer To the Interface Structure itself. 
  --       language        -   Pointer To the Data buffer To receive the current 
  --language.Can be NULL. 
  --       length          -   The length of the buffer, number of bytes. Can be 
  --0. 
  -- Return value: 
  --       The length of the buffer, number of bytes. 
  -- 
  fptr26.FFI_GetLanguage  -- Int (*FFI_GetLanguage)(structure _FPDF_FORMFILLINFO* pThis, void* language, int length)-- 
 
  -- 
  -- Method: FFI_DownloadFromURL 
  --           This method will download the specified file from the URL. 
  -- Interface Version: 
  --           2 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --       pThis           -   Pointer To the Interface Structure itself. 
  --       URL             -   The string value of the file URL, in UTF-16LE 
  --format. 
  -- Return value: 
  --       The handle To FPDF_FILEHANDLER. 
  -- 
  fptr27.FFI_DownloadFromURL  -- FPDF_LPFILEHANDLER (*FFI_DownloadFromURL)(structure _FPDF_FORMFILLINFO* pThis, FPDF_WIDESTRING URL)-- 
  -- 
  -- Method: FFI_PostRequestURL 
  --           This method will post the request To the server URL. 
  -- Interface Version: 
  --           2 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --       pThis           -   Pointer To the Interface Structure itself. 
  --       wsURL           -   The string value of the server URL, in UTF-16LE 
  --format. 
  --       wsData          -   The post Data,in UTF-16LE format. 
  --       wsContentType   -   The content type of the request Data,in UTF-16LE 
  --format. 
  --       wsEncode        -   The encode type,in UTF-16LE format. 
  --       wsHeader        -   The request header,in UTF-16LE format. 
  --       response        -   Pointer To the FPDF_BSTR To receive the response 
  --data from server,,in UTF-16LE format. 
  -- Return value: 
  --       TRUE indicates success, otherwise FALSE. 
  -- 
  fptr28.FFI_PostRequestURL  -- FPDF_BOOL (*FFI_PostRequestURL)(structure _FPDF_FORMFILLINFO* pThis, FPDF_WIDESTRING wsURL, FPDF_WIDESTRING wsData, FPDF_WIDESTRING wsContentType, FPDF_WIDESTRING wsEncode, FPDF_WIDESTRING wsHeader, FPDF_BSTR* respone)-- 
 
  -- 
  -- Method: FFI_PutRequestURL 
  --           This method will put the request To the server URL. 
  -- Interface Version: 
  --           2 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --       pThis           -   Pointer To the Interface Structure itself. 
  --       wsURL           -   The string value of the server URL, in UTF-16LE 
  --format. 
  --       wsData          -   The put Data, in UTF-16LE format. 
  --       wsEncode        -   The encode type, in UTR-16LE format. 
  -- Return value: 
  --       TRUE indicates success, otherwise FALSE. 
  -- 
  fptr29.FFI_PutRequestURL  -- FPDF_BOOL (*FFI_PutRequestURL)(structure _FPDF_FORMFILLINFO* pThis, FPDF_WIDESTRING wsURL, FPDF_WIDESTRING wsData, FPDF_WIDESTRING wsEncode)-- 
EndStructure -- FPDF_FORMFILLINFO 
***************************************************************/ 
public constant SizeOf_FPDF_FORMFILLINFO = 252 
 
 
 
--typedef int FPDF_INT32-- 
--typedef unsigned int FPDF_UINT32-- 
--typedef float FPDF_FLOAT-- 
 
-- Event types. 
enum type FWL_EVENTTYPE 
  FWL_EVENTTYPE_Mouse = 0, 
  FWL_EVENTTYPE_MouseWheel, 
  FWL_EVENTTYPE_Key 
end type 
 
-- Key flags. 
--enum type FWL_EVENTFLAG 
public constant FWL_EVENTFLAG_ShiftKey = shift_bits(1, 0) 
public constant FWL_EVENTFLAG_ControlKey = shift_bits(1, -1) 
public constant FWL_EVENTFLAG_AltKey = shift_bits(1, -2) 
public constant FWL_EVENTFLAG_MetaKey = shift_bits(1, -3) 
public constant FWL_EVENTFLAG_KeyPad = shift_bits(1, -4) 
public constant FWL_EVENTFLAG_AutoRepeat = shift_bits(1, -5) 
public constant FWL_EVENTFLAG_LeftButtonDown = shift_bits(1, -6) 
public constant FWL_EVENTFLAG_MiddleButtonDown = shift_bits(1, -7) 
public constant FWL_EVENTFLAG_RightButtonDown = shift_bits(1, -8) 
 
-- Mouse messages. 
enum type FWL_EVENT_MOUSECMD 
  FWL_EVENTMOUSECMD_LButtonDown = 1, 
  FWL_EVENTMOUSECMD_LButtonUp, 
  FWL_EVENTMOUSECMD_LButtonDblClk, 
  FWL_EVENTMOUSECMD_RButtonDown, 
  FWL_EVENTMOUSECMD_RButtonUp, 
  FWL_EVENTMOUSECMD_RButtonDblClk, 
  FWL_EVENTMOUSECMD_MButtonDown, 
  FWL_EVENTMOUSECMD_MButtonUp, 
  FWL_EVENTMOUSECMD_MButtonDblClk, 
  FWL_EVENTMOUSECMD_MouseMove, 
  FWL_EVENTMOUSECMD_MouseEnter, 
  FWL_EVENTMOUSECMD_MouseHover, 
  FWL_EVENTMOUSECMD_MouseLeave 
end type 
 
-- Mouse events. 
/*************************************************************** 

Structure FWL_EVENT_MOUSE 
  command.l-- 
  flag.i-- 
  x.f-- 
  y.f-- 
EndStructure 
***************************************************************/ 
public constant SizeOf_FWL_EVENT_MOUSE = 20 
 
 
 
-- Mouse wheel events. 
/*************************************************************** 

Structure FWL_EVENT_MOUSEWHEEL 
  flag.i-- 
  x.f-- 
  y.f-- 
  deltaX.f-- 
  deltaY.f-- 
EndStructure 
***************************************************************/ 
public constant SizeOf_FWL_EVENT_MOUSEWHEEL = 24 
 
-- Virtual keycodes. 
--Enumeration FWL_VKEYCODE 
public constant FWL_VKEY_Back = 0x08 
public constant FWL_VKEY_Tab = 0x09 
public constant FWL_VKEY_Clear = 0x0C 
public constant FWL_VKEY_Return = 0x0D 
public constant FWL_VKEY_Shift = 0x10 
public constant FWL_VKEY_Control = 0x11 
public constant FWL_VKEY_Menu = 0x12 
public constant FWL_VKEY_Pause = 0x13 
public constant FWL_VKEY_Capital = 0x14 
public constant FWL_VKEY_Kana = 0x15 
public constant FWL_VKEY_Hangul = 0x15 
public constant FWL_VKEY_Junja = 0x17 
public constant FWL_VKEY_Final = 0x18 
public constant FWL_VKEY_Hanja = 0x19 
public constant FWL_VKEY_Kanji = 0x19 
public constant FWL_VKEY_Escape = 0x1B 
public constant FWL_VKEY_Convert = 0x1C 
public constant FWL_VKEY_NonConvert = 0x1D 
public constant FWL_VKEY_Accept = 0x1E 
public constant FWL_VKEY_ModeChange = 0x1F 
public constant FWL_VKEY_Space = 0x20 
public constant FWL_VKEY_Prior = 0x21 
public constant FWL_VKEY_Next = 0x22 
public constant FWL_VKEY_End = 0x23 
public constant FWL_VKEY_Home = 0x24 
public constant FWL_VKEY_Left = 0x25 
public constant FWL_VKEY_Up = 0x26 
public constant FWL_VKEY_Right = 0x27 
public constant FWL_VKEY_Down = 0x28 
public constant FWL_VKEY_Select = 0x29 
public constant FWL_VKEY_Print = 0x2A 
public constant FWL_VKEY_Execute = 0x2B 
public constant FWL_VKEY_Snapshot = 0x2C 
public constant FWL_VKEY_Insert = 0x2D 
public constant FWL_VKEY_Delete = 0x2E 
public constant FWL_VKEY_Help = 0x2F 
public constant FWL_VKEY_0 = 0x30 
public constant FWL_VKEY_1 = 0x31 
public constant FWL_VKEY_2 = 0x32 
public constant FWL_VKEY_3 = 0x33 
public constant FWL_VKEY_4 = 0x34 
public constant FWL_VKEY_5 = 0x35 
public constant FWL_VKEY_6 = 0x36 
public constant FWL_VKEY_7 = 0x37 
public constant FWL_VKEY_8 = 0x38 
public constant FWL_VKEY_9 = 0x39 
public constant FWL_VKEY_A = 0x41 
public constant FWL_VKEY_B = 0x42 
public constant FWL_VKEY_C = 0x43 
public constant FWL_VKEY_D = 0x44 
public constant FWL_VKEY_E = 0x45 
public constant FWL_VKEY_F = 0x46 
public constant FWL_VKEY_G = 0x47 
public constant FWL_VKEY_H = 0x48 
public constant FWL_VKEY_I = 0x49 
public constant FWL_VKEY_J = 0x4A 
public constant FWL_VKEY_K = 0x4B 
public constant FWL_VKEY_L = 0x4C 
public constant FWL_VKEY_M = 0x4D 
public constant FWL_VKEY_N = 0x4E 
public constant FWL_VKEY_O = 0x4F 
public constant FWL_VKEY_P = 0x50 
public constant FWL_VKEY_Q = 0x51 
public constant FWL_VKEY_R = 0x52 
public constant FWL_VKEY_S = 0x53 
public constant FWL_VKEY_T = 0x54 
public constant FWL_VKEY_U = 0x55 
public constant FWL_VKEY_V = 0x56 
public constant FWL_VKEY_W = 0x57 
public constant FWL_VKEY_X = 0x58 
public constant FWL_VKEY_Y = 0x59 
public constant FWL_VKEY_Z = 0x5A 
public constant FWL_VKEY_LWin = 0x5B 
public constant FWL_VKEY_Command = 0x5B 
public constant FWL_VKEY_RWin = 0x5C 
public constant FWL_VKEY_Apps = 0x5D 
public constant FWL_VKEY_Sleep = 0x5F 
public constant FWL_VKEY_NumPad0 = 0x60 
public constant FWL_VKEY_NumPad1 = 0x61 
public constant FWL_VKEY_NumPad2 = 0x62 
public constant FWL_VKEY_NumPad3 = 0x63 
public constant FWL_VKEY_NumPad4 = 0x64 
public constant FWL_VKEY_NumPad5 = 0x65 
public constant FWL_VKEY_NumPad6 = 0x66 
public constant FWL_VKEY_NumPad7 = 0x67 
public constant FWL_VKEY_NumPad8 = 0x68 
public constant FWL_VKEY_NumPad9 = 0x69 
public constant FWL_VKEY_Multiply = 0x6A 
public constant FWL_VKEY_Add = 0x6B 
public constant FWL_VKEY_Separator = 0x6C 
public constant FWL_VKEY_Subtract = 0x6D 
public constant FWL_VKEY_Decimal = 0x6E 
public constant FWL_VKEY_Divide = 0x6F 
public constant FWL_VKEY_F1 = 0x70 
public constant FWL_VKEY_F2 = 0x71 
public constant FWL_VKEY_F3 = 0x72 
public constant FWL_VKEY_F4 = 0x73 
public constant FWL_VKEY_F5 = 0x74 
public constant FWL_VKEY_F6 = 0x75 
public constant FWL_VKEY_F7 = 0x76 
public constant FWL_VKEY_F8 = 0x77 
public constant FWL_VKEY_F9 = 0x78 
public constant FWL_VKEY_F10 = 0x79 
public constant FWL_VKEY_F11 = 0x7A 
public constant FWL_VKEY_F12 = 0x7B 
public constant FWL_VKEY_F13 = 0x7C 
public constant FWL_VKEY_F14 = 0x7D 
public constant FWL_VKEY_F15 = 0x7E 
public constant FWL_VKEY_F16 = 0x7F 
public constant FWL_VKEY_F17 = 0x80 
public constant FWL_VKEY_F18 = 0x81 
public constant FWL_VKEY_F19 = 0x82 
public constant FWL_VKEY_F20 = 0x83 
public constant FWL_VKEY_F21 = 0x84 
public constant FWL_VKEY_F22 = 0x85 
public constant FWL_VKEY_F23 = 0x86 
public constant FWL_VKEY_F24 = 0x87 
public constant FWL_VKEY_NunLock = 0x90 
public constant FWL_VKEY_Scroll = 0x91 
public constant FWL_VKEY_LShift = 0xA0 
public constant FWL_VKEY_RShift = 0xA1 
public constant FWL_VKEY_LControl = 0xA2 
public constant FWL_VKEY_RControl = 0xA3 
public constant FWL_VKEY_LMenu = 0xA4 
public constant FWL_VKEY_RMenu = 0xA5 
public constant FWL_VKEY_BROWSER_Back = 0xA6 
public constant FWL_VKEY_BROWSER_Forward = 0xA7 
public constant FWL_VKEY_BROWSER_Refresh = 0xA8 
public constant FWL_VKEY_BROWSER_Stop = 0xA9 
public constant FWL_VKEY_BROWSER_Search = 0xAA 
public constant FWL_VKEY_BROWSER_Favorites = 0xAB 
public constant FWL_VKEY_BROWSER_Home = 0xAC 
public constant FWL_VKEY_VOLUME_Mute = 0xAD 
public constant FWL_VKEY_VOLUME_Down = 0xAE 
public constant FWL_VKEY_VOLUME_Up = 0xAF 
public constant FWL_VKEY_MEDIA_NEXT_Track = 0xB0 
public constant FWL_VKEY_MEDIA_PREV_Track = 0xB1 
public constant FWL_VKEY_MEDIA_Stop = 0xB2 
public constant FWL_VKEY_MEDIA_PLAY_Pause = 0xB3 
public constant FWL_VKEY_MEDIA_LAUNCH_Mail = 0xB4 
public constant FWL_VKEY_MEDIA_LAUNCH_MEDIA_Select = 0xB5 
public constant FWL_VKEY_MEDIA_LAUNCH_APP1 = 0xB6 
public constant FWL_VKEY_MEDIA_LAUNCH_APP2 = 0xB7 
public constant FWL_VKEY_OEM_1 = 0xBA 
public constant FWL_VKEY_OEM_Plus = 0xBB 
public constant FWL_VKEY_OEM_Comma = 0xBC 
public constant FWL_VKEY_OEM_Minus = 0xBD 
public constant FWL_VKEY_OEM_Period = 0xBE 
public constant FWL_VKEY_OEM_2 = 0xBF 
public constant FWL_VKEY_OEM_3 = 0xC0 
public constant FWL_VKEY_OEM_4 = 0xDB 
public constant FWL_VKEY_OEM_5 = 0xDC 
public constant FWL_VKEY_OEM_6 = 0xDD 
public constant FWL_VKEY_OEM_7 = 0xDE 
public constant FWL_VKEY_OEM_8 = 0xDF 
public constant FWL_VKEY_OEM_102 = 0xE2 
public constant FWL_VKEY_ProcessKey = 0xE5 
public constant FWL_VKEY_Packet = 0xE7 
public constant FWL_VKEY_Attn = 0xF6 
public constant FWL_VKEY_Crsel = 0xF7 
public constant FWL_VKEY_Exsel = 0xF8 
public constant FWL_VKEY_Ereof = 0xF9 
public constant FWL_VKEY_Play = 0xFA 
public constant FWL_VKEY_Zoom = 0xFB 
public constant FWL_VKEY_NoName = 0xFC 
public constant FWL_VKEY_PA1 = 0xFD 
public constant FWL_VKEY_OEM_Clear = 0xFE 
public constant FWL_VKEY_Unknown = 0 
--end type 
 
-- Key event commands. 
enum type FWL_EVENTKEYCMD 
  FWL_EVENTKEYCMD_KeyDown = 1, 
  FWL_EVENTKEYCMD_KeyUp, 
  FWL_EVENTKEYCMD_Char 
end type 
 
-- Key events. 
/*************************************************************** 

Structure FWL_EVENT_KEY 
  command.l 
  flag.i 
  StructureUnion 
    -- Virtual key code. 
    vkcode.l 
    -- Character code. 
    charcode.i 
  EndStructureUnion --} code 
EndStructure 
***************************************************************/ 
public constant SizeOf_FWL_EVENT_KEY = 20 
 
-- Event types. 
/*************************************************************** 

Structure FWL_EVENT 
  -- Structure size. 
  size.l 
  -- FWL_EVENTTYPE. 
  type.l 
  StructureUnion 
    mouse.FWL_EVENT_MOUSE 
    wheel.FWL_EVENT_MOUSEWHEEL  
    key.FWL_EVENT_KEY  
  EndStructureUnion --} s 
EndStructure 
***************************************************************/ 
public constant SizeOf_FWL_EVENT = 32 
 
 
-- Prototype.l NeedToPauseNow(*pThis) 
-- IFPDF_RENDERINFO interface. 
/*************************************************************** 

Structure IFSDK_PAUSE 
  -- 
  -- Version number of the Interface. Currently must be 1. 
  -- 
  version.l 
 
  -- 
  -- Method: NeedToPauseNow 
  --           Check If we need To pause a progressive process now. 
  -- Interface Version: 
  --           1 
  -- Implementation Required: 
  --           yes 
  -- Parameters: 
  --           pThis       -   Pointer To the Interface Structure itself 
  -- Return Value: 
  --            Non-zero For pause now, 0 For Continue. 
  -- 
  -- 
  fptr.NeedToPauseNow --FPDF_BOOL (*NeedToPauseNow)(Structure _IFSDK_PAUSE* pThis)-- 
 
  -- A user defined data pointer, used by user's application. Can be NULL. 
  *user 
EndStructure 
***************************************************************/ 
public constant SizeOf_IFSDK_PAUSE = 20 
 
 
-- Prototype.l WriteBlockFPDF_FILEWRITE(*pThis, *pData, size.i) 
   
-- Structure for custom file write 
/*************************************************************** 

Structure FPDF_FILEWRITE 
  -- 
  -- Version number of the interface. Currently must be 1. 
  -- 
  version.l 
 
  -- 
  -- Method: WriteBlock 
  --          Output a block of data in your custom way. 
  -- Interface Version: 
  --          1 
  -- Implementation Required: 
  --          Yes 
  -- Comments: 
  --          Called by function FPDF_SaveDocument 
  -- Parameters: 
  --          pThis       -   Pointer to the structure itself 
  --          pData       -   Pointer to a buffer to output 
  --          size        -   The size of the buffer. 
  -- Return value: 
  --          Should be non-zero if successful, zero for error. 
  -- 
  fptr.WriteBlockFPDF_FILEWRITE --Int (*WriteBlock)(Structure FPDF_FILEWRITE_* pThis, const void* pData, unsigned long size)-- 
EndStructure 
***************************************************************/ 
public constant SizeOf_FPDF_FILEWRITE = 12 
 
 
-- 
-- Interface: FPDF_SYSFONTINFO 
--          Interface For getting system font information And font mapping 
 
-- Prototype ReleaseSYSFONTINFO(*pThis) 
-- Prototype EnumFonts(*pThis, *pMapper) 
-- Prototype.i MapFont(*pThis, weight.l, bItalic.l, charset.l, pitch_family.l, *face, *bExact.long) 
-- Prototype.i GetFont(*pThis, *face) 
-- Prototype.i GetFontData(*pThis, *hFont, table.l, *buffer, buf_size.i) 
-- Prototype.i GetFaceName(*pThis, *hFont, *buffer, buf_size.i) 
-- Prototype.l GetFontCharset(*pThis, *hFont) 
-- Prototype DeleteFont(*pThis, *hFont) 
 
/*************************************************************** 

Structure FPDF_SYSFONTINFO 
  -- 
   -- Version number of the Interface. Currently must be 1. 
   -- 
  version.l 
 
  -- 
   -- Method: Release 
   --          Give implementation a chance To release any Data after the 
   -- Interface is no longer used 
   -- Interface Version: 
   --          1 
   -- Implementation Required: 
   --          No 
   -- Comments: 
   --          Called by Foxit SDK during the final cleanup process. 
   -- Parameters: 
   --          pThis       -   Pointer To the Interface Structure itself 
   -- Return Value: 
   --          None 
   -- 
  fptr.ReleaseSYSFONTINFO  -- void (*ReleaseSYSFONTINFO)(Structure _FPDF_SYSFONTINFO* pThis)-- 
 
  -- 
   -- Method: EnumFonts 
   --          Enumerate all fonts installed on the system 
   -- Interface Version: 
   --          1 
   -- Implementation Required: 
   --          No 
   -- Comments: 
   --          Implementation should call FPDF_AddIntalledFont() function For 
   -- each font found. 
   --          Only TrueType/OpenType And Type1 fonts are accepted by Foxit SDK. 
   -- Parameters: 
   --          pThis       -   Pointer To the Interface Structure itself 
   --          pMapper     -   An opaque pointer To internal font mapper, used 
   -- when calling FPDF_AddInstalledFont 
   -- Return Value: 
   --          None 
   -- 
  fptr1.EnumFonts  -- void (*EnumFonts)(Structure _FPDF_SYSFONTINFO* pThis, void* pMapper)-- 
 
  -- 
   -- Method: MapFont 
   --          Use the system font mapper To get a font handle from requested 
   --parameters 
   -- Interface Version: 
   --          1 
   -- Implementation Required: 
   --          Yes only If GetFont method is Not implemented. 
   -- Comments: 
   --          If the system supports native font mapper (like Windows), *implementation can implement this method To get a font handle. 
   --          Otherwise, Foxit SDK will do the mapping And then call GetFont 
   --method. 
   --          Only TrueType/OpenType And Type1 fonts are accepted by Foxit SDK. 
   -- Parameters: 
   --          pThis       -   Pointer To the Interface Structure itself 
   --          weight      -   Weight of the requested font. 400 is normal And 
   --700 is bold. 
   --          bItalic     -   Italic option of the requested font, TRUE Or 
   --FALSE. 
   --          charset     -   Character set identifier For the requested font. 
   --See above defined constants. 
   --          pitch_family -  A combination of flags. See above defined 
   --constants. 
   --          face        -   Typeface name. Currently use system local encoding 
   --only. 
   --          bExact      -   Pointer To a boolean value receiving the indicator 
   --whether mapper found the exact match. 
   --                          If mapper is Not sure whether it's exact match, *ignore this paramter. 
   -- Return Value: 
   --          An opaque pointer For font handle, Or NULL If system mapping is 
   --not supported. 
   -- 
  fptr2.MapFont  -- void* (*MapFont)(Structure _FPDF_SYSFONTINFO* pThis, int weight, FPDF_BOOL bItalic, int charset, int pitch_family, const char* face, FPDF_BOOL* bExact)-- 
 
  -- 
   -- Method: GetFont 
   --          Get a handle To a particular font by its internal ID 
   -- Interface Version: 
   --          1 
   -- Implementation Required: 
   --          Yes only If MapFont method is Not implemented. 
   -- Comments: 
   --          If the system mapping Not supported, Foxit SDK will do the font 
   --mapping And use this method To get a font handle. 
   -- Parameters: 
   --          pThis       -   Pointer To the Interface Structure itself 
   --          face        -   Typeface name. Currently use system local encoding 
   --only. 
   -- Return Value: 
   --          An opaque pointer For font handle. 
   -- 
  fptr3.GetFont  -- void* (*GetFont)(Structure _FPDF_SYSFONTINFO* pThis, const char* face)-- 
 
  -- 
   -- Method: GetFontData 
   --          Get font Data from a font 
   -- Interface Version: 
   --          1 
   -- Implementation Required: 
   --          Yes 
   -- Comments: 
   --          Can Read either full font file, Or a particular TrueType/OpenType 
   --table 
   -- Parameters: 
   --          pThis       -   Pointer To the Interface Structure itself 
   --          hFont       -   Font handle returned by MapFont Or GetFont method 
   --          table       -   TrueType/OpenType table identifier (refer To 
   --TrueType specification). 
   --                          0 For the whole font file. 
   --          buffer      -   The buffer receiving the font Data. Can be NULL If 
   --not provided 
   --          buf_size    -   Buffer size, can be zero If Not provided 
   -- Return Value: 
   --          Number of bytes needed, If buffer Not provided Or Not large 
   --enough, *          Or number of bytes written into buffer otherwise. 
   -- 
  fptr4.GetFontData  -- unsigned long (*GetFontData)(Structure _FPDF_SYSFONTINFO* pThis, void* hFont, unsigned int table, unsigned char* buffer, unsigned long buf_size)-- 
 
  -- 
   -- Method: GetFaceName 
   --          Get face name from a font handle 
   -- Interface Version: 
   --          1 
   -- Implementation Required: 
   --          No 
   -- Parameters: 
   --          pThis       -   Pointer To the Interface Structure itself 
   --          hFont       -   Font handle returned by MapFont Or GetFont method 
   --          buffer      -   The buffer receiving the face name. Can be NULL If 
   --not provided 
   --          buf_size    -   Buffer size, can be zero If Not provided 
   -- Return Value: 
   --          Number of bytes needed, If buffer Not provided Or Not large 
   --enough, *          Or number of bytes written into buffer otherwise. 
   -- 
  fptr5.GetFaceName  -- unsigned long (*GetFaceName)(Structure _FPDF_SYSFONTINFO* pThis, void* hFont, char* buffer, unsigned long buf_size)-- 
 
  -- 
   -- Method: GetFontCharset 
   --          Get character set information For a font handle 
   -- Interface Version: 
   --          1 
   -- Implementation Required: 
   --          No 
   -- Parameters: 
   --          pThis       -   Pointer To the Interface Structure itself 
   --          hFont       -   Font handle returned by MapFont Or GetFont method 
   -- Return Value: 
   --          Character set identifier. See defined constants above. 
   -- 
  fptr6.GetFontCharset  -- Int (*GetFontCharset)(Structure _FPDF_SYSFONTINFO* pThis, void* hFont)-- 
 
  -- 
   -- Method: DeleteFont 
   --          Delete a font handle 
   -- Interface Version: 
   --          1 
   -- Implementation Required: 
   --          Yes 
   -- Parameters: 
   --          pThis       -   Pointer To the Interface Structure itself 
   --          hFont       -   Font handle returned by MapFont Or GetFont method 
   -- Return Value: 
   --          None 
   -- 
  fptr7.DeleteFont  -- void (*DeleteFont)(Structure _FPDF_SYSFONTINFO* pThis, void* hFont)-- 
EndStructure 
***************************************************************/ 
public constant SizeOf_FPDF_SYSFONTINFO = 68 
 
-- 
-- Struct: FPDF_CharsetFontMap 
--    Provides the name of a font To use For a given charset value. 
  
/*************************************************************** 

Structure FPDF_CharsetFontMap 
  charset.l  -- Character Set Enum value, see FXFONT_*_CHARSET above. 
  *fontname-- p-ascii??  -- Name of default font to use with that charset. 
EndStructure 
***************************************************************/ 
public constant SizeOf_FPDF_CharsetFontMap = 12 
 
--typedef void* FPDF_PAGEARCSAVER-- 
--typedef void* FPDF_PAGEARCLOADER-- 
 
/* 

Import "pdfium.lib" 
   
   
-- Function: FPDF_InitLibrary 
--          Initialize the FPDFSDK library 
-- Parameters: 
--          None 
-- Return value: 
--          None. 
-- Comments: 
--          Convenience function to call FPDF_InitLibraryWithConfig() for 
--          backwards comatibility purposes. 
 FPDF_InitLibrary() 
 
-- Function: FPDF_InitLibraryWithConfig 
--          Initialize the FPDFSDK library 
-- Parameters: 
--          config - configuration information as above. 
-- Return value: 
--          None. 
-- Comments: 
--          You have to call this function before you can call any PDF 
--          processing functions. 
 FPDF_InitLibraryWithConfig(*config.FPDF_LIBRARY_CONFIG) 
 
-- Function: FPDF_DestroyLibary 
--          Release all resources allocated by the FPDFSDK library. 
-- Parameters: 
--          None. 
-- Return value: 
--          None. 
-- Comments: 
--          You can call this function to release all memory blocks allocated by 
--          the library. 
--          After this function is called, you should not call any PDF 
--          processing functions. 
 FPDF_DestroyLibrary() 
 
 
-- Function: FPDF_SetSandBoxPolicy 
--          Set the policy for the sandbox environment. 
-- Parameters: 
--          policy -   The specified policy for setting, for example: 
--                     FPDF_POLICY_MACHINETIME_ACCESS. 
--          enable -   True to enable, false to disable the policy. 
-- Return value: 
--          None. 
 FPDF_SetSandBoxPolicy(policy.i, enable.l)-- 
 
-- Pointer to a helper function to make |font| with |text| of |text_length| 
-- accessible when printing text with GDI. This is useful in sandboxed 
-- environments where PDFium's access to GDI may be restricted. 
--typedef void (*PDFiumEnsureTypefaceCharactersAccessible)(const LOGFONT* font, const wchar_t* text, size_t text_length)-- 
-- Prototype PDFiumEnsureTypefaceCharactersAccessible(*font.LOGFONT, *text.string, text_length.i) 
 
-- Function: FPDF_SetTypefaceAccessibleFunc 
--          Set the function pointer that makes GDI fonts available in sandboxed 
--          environments. Experimental API. 
-- Parameters: 
--          func -   A function pointer. See description above. 
-- Return value: 
--          None. 
 FPDF_SetTypefaceAccessibleFunc(func.PDFiumEnsureTypefaceCharactersAccessible)-- 
 
-- Function: FPDF_SetPrintTextWithGDI 
--          Set whether to use GDI to draw fonts when printing on Windows. 
--          Experimental API. 
-- Parameters: 
--          use_gdi -   Set to true to enable printing text with GDI. 
-- Return value: 
--          None. 
 FPDF_SetPrintTextWithGDI(use_gdi.l)-- 
 
-- Function: FPDF_LoadDocument 
--          Open and load a PDF document. 
-- Parameters: 
--          file_path -  Path to the PDF file (including extension). 
--          password  -  A string used as the password for the PDF file. 
--                       If no password is needed, empty or NULL can be used. 
-- Return value: 
--          A handle to the loaded document, or NULL on failure. 
-- Comments: 
--          Loaded document can be closed by FPDF_CloseDocument(). 
--          If this function fails, you can use FPDF_GetLastError() to retrieve 
--          the reason why it failed. 
 --DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path, FPDF_BYTESTRING password)-- 
 FPDF_LoadDocument.i(*file_path.p-ascii, *password.p-ascii=0)-- 
 
-- Function: FPDF_LoadMemDocument 
--          Open and load a PDF document from memory. 
-- Parameters: 
--          data_buf    -   Pointer to a buffer containing the PDF document. 
--          size        -   Number of bytes in the PDF document. 
--          password    -   A string used as the password for the PDF file. 
--                          If no password is needed, empty or NULL can be used. 
-- Return value: 
--          A handle to the loaded document, or NULL on failure. 
-- Comments: 
--          The memory buffer must remain valid when the document is open. 
--          The loaded document can be closed by FPDF_CloseDocument. 
--          If this function fails, you can use FPDF_GetLastError() to retrieve 
--          the reason why it failed. 
-- Notes: 
--          If PDFium is built with the XFA module, the application should call 
--          FPDF_LoadXFA() function after the PDF document loaded to support XFA 
--          fields defined in the fpdfformfill.h file. 
--DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadMemDocument(const void* data_buf, int size, FPDF_BYTESTRING password)-- 
FPDF_LoadMemDocument.i(*data_buf, size.l, *password.p-ascii=0)-- 
 
 
-- Function: FPDF_LoadCustomDocument 
--          Load PDF document from a custom access descriptor. 
-- Parameters: 
--          pFileAccess -   A structure for accessing the file. 
--          password    -   Optional password for decrypting the PDF file. 
-- Return value: 
--          A handle to the loaded document, or NULL on failure. 
-- Comments: 
--          The application must keep the file resources valid until the PDF 
--          document is closed. 
-- 
--          The loaded document can be closed with FPDF_CloseDocument. 
-- Notes: 
--          If PDFium is built with the XFA module, the application should call 
--          FPDF_LoadXFA() function after the PDF document loaded to support XFA 
--          fields defined in the fpdfformfill.h file. 
--DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadCustomDocument(FPDF_FILEACCESS* pFileAccess, FPDF_BYTESTRING password)-- 
FPDF_LoadCustomDocument.i(*pFileAccess.FPDF_FILEACCESS, *password.p-ascii=0)-- 
 
-- Function: FPDF_GetFileVersion 
--          Get the file version of the given PDF document. 
-- Parameters: 
--          doc         -   Handle to a document. 
--          fileVersion -   The PDF file version. File version: 14 for 1.4, 15 
--                          for 1.5, ... 
-- Return value: 
--          True if succeeds, false otherwise. 
-- Comments: 
--          If the document was created by FPDF_CreateNewDocument, --          then this function will always fail. 
--DLLEXPORT FPDF_BOOL STDCALL FPDF_GetFileVersion(FPDF_DOCUMENT doc, int* fileVersion)-- 
FPDF_GetFileVersion.l(doc.i, *fileVersion.long)-- 
 
 
-- Function: FPDF_GetLastError 
--          Get last error code when a function fails. 
-- Parameters: 
--          None. 
-- Return value: 
--          A 32-bit integer indicating error code as defined above. 
-- Comments: 
--          If the previous SDK call succeeded, the return value of this 
--          function is not defined. 
--DLLEXPORT unsigned long STDCALL FPDF_GetLastError()-- 
FPDF_GetLastError.i()-- 
 
-- Function: FPDF_GetDocPermission 
--          Get file permission flags of the document. 
-- Parameters: 
--          document    -   Handle to a document. Returned by FPDF_LoadDocument. 
-- Return value: 
--          A 32-bit integer indicating permission flags. Please refer to the 
--          PDF Reference for detailed descriptions. If the document is not 
--          protected, 0xffffffff will be returned. 
--DLLEXPORT unsigned long STDCALL FPDF_GetDocPermissions(FPDF_DOCUMENT document)-- 
FPDF_GetDocPermissions.i(document.i)-- 
 
-- Function: FPDF_GetSecurityHandlerRevision 
--          Get the revision for the security handler. 
-- Parameters: 
--          document    -   Handle to a document. Returned by FPDF_LoadDocument. 
-- Return value: 
--          The security handler revision number. Please refer to the PDF 
--          Reference for a detailed description. If the document is not 
--          protected, -1 will be returned. 
--DLLEXPORT int STDCALL FPDF_GetSecurityHandlerRevision(FPDF_DOCUMENT document)-- 
FPDF_GetSecurityHandlerRevision.l(document.i)-- 
 
-- Function: FPDF_GetPageCount 
--          Get total number of pages in the document. 
-- Parameters: 
--          document    -   Handle to document. Returned by FPDF_LoadDocument. 
-- Return value: 
--          Total number of pages in the document. 
FPDF_GetPageCount.l(document.i)-- 
 
-- Function: FPDF_LoadPage 
--          Load a page inside the document. 
-- Parameters: 
--          document    -   Handle to document. Returned by FPDF_LoadDocument 
--          page_index  -   Index number of the page. 0 for the first page. 
-- Return value: 
--          A handle to the loaded page, or NULL if page load fails. 
-- Comments: 
--          The loaded page can be rendered to devices using FPDF_RenderPage. 
--          The loaded page can be closed using FPDF_ClosePage. 
--DLLEXPORT FPDF_PAGE STDCALL FPDF_LoadPage(FPDF_DOCUMENT document, int page_index)-- 
FPDF_LoadPage.i(document.i, page_index.l)-- 
 
-- Function: FPDF_GetPageWidth 
--          Get page width. 
-- Parameters: 
--          page        -   Handle to the page. Returned by FPDF_LoadPage. 
-- Return value: 
--          Page width (excluding non-displayable area) measured in points. 
--          One point is 1/72 inch (around 0.3528 mm). 
--DLLEXPORT double STDCALL FPDF_GetPageWidth(FPDF_PAGE page)-- 
FPDF_GetPageWidth.d(page.i)-- 
 
-- Function: FPDF_GetPageHeight 
--          Get page height. 
-- Parameters: 
--          page        -   Handle to the page. Returned by FPDF_LoadPage. 
-- Return value: 
--          Page height (excluding non-displayable area) measured in points. 
--          One point is 1/72 inch (around 0.3528 mm) 
--DLLEXPORT double STDCALL FPDF_GetPageHeight(FPDF_PAGE page)-- 
FPDF_GetPageHeight.d(page.i)-- 
 
-- Function: FPDF_GetPageSizeByIndex 
--          Get the size of the page at the given index. 
-- Parameters: 
--          document    -   Handle to document. Returned by FPDF_LoadDocument. 
--          page_index  -   Page index, zero for the first page. 
--          width       -   Pointer to a double to receive the page width 
--                          (in points). 
--          height      -   Pointer to a double to receive the page height 
--                          (in points). 
-- Return value: 
--          Non-zero for success. 0 for error (document or page not found). 
--DLLEXPORT int STDCALL FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document, int page_index, double* width, double* height)-- 
FPDF_GetPageSizeByIndex.l(document.i, page_index.l, *width.double, *height.double)-- 
 
-- Function: FPDF_RenderPage 
--          Render contents of a page to a device (screen, bitmap, or printer). 
--          This function is only supported on Windows. 
-- Parameters: 
--          dc          -   Handle to the device context. 
--          page        -   Handle to the page. Returned by FPDF_LoadPage. 
--          start_x     -   Left pixel position of the display area in 
--                          device coordinates. 
--          start_y     -   Top pixel position of the display area in device 
--                          coordinates. 
--          size_x      -   Horizontal size (in pixels) for displaying the page. 
--          size_y      -   Vertical size (in pixels) for displaying the page. 
--          rotate      -   Page orientation: 
--                            0 (normal) 
--                            1 (rotated 90 degrees clockwise) 
--                            2 (rotated 180 degrees) 
--                            3 (rotated 90 degrees counter-clockwise) 
--          flags       -   0 for normal display, or combination of flags 
--                          defined above. 
-- Return value: 
--          None. 
 FPDF_RenderPage(hdc.i, page.i, start_x.l, start_y.l, size_x.l, size_y.l, rotate.l, flags.l) 
 
-- Function: FPDF_RenderPageBitmap 
--          Render contents of a page to a device independent bitmap. 
-- Parameters: 
--          bitmap      -   Handle to the device independent bitmap (as the 
--                          output buffer). The bitmap handle can be created 
--                          by FPDFBitmap_Create. 
--          page        -   Handle to the page. Returned by FPDF_LoadPage 
--          start_x     -   Left pixel position of the display area in 
--                          bitmap coordinates. 
--          start_y     -   Top pixel position of the display area in bitmap 
--                          coordinates. 
--          size_x      -   Horizontal size (in pixels) for displaying the page. 
--          size_y      -   Vertical size (in pixels) for displaying the page. 
--          rotate      -   Page orientation: 
--                            0 (normal) 
--                            1 (rotated 90 degrees clockwise) 
--                            2 (rotated 180 degrees) 
--                            3 (rotated 90 degrees counter-clockwise) 
--          flags       -   0 for normal display, or combination of flags 
--                          defined above. With FPDF_ANNOT flag, it renders all 
--                          annotations that does not require user-interaction,  
--                          which are all annotations except widget and popup 
--                          annotations. 
-- Return value: 
--          None. 
 FPDF_RenderPageBitmap(bitmap.i, page.i, start_x.l, start_y.l, size_x.l, size_y.l, rotate.l, flags.l)-- 
 
--DLLEXPORT FPDF_RECORDER STDCALL FPDF_RenderPageSkp(FPDF_PAGE page, int size_x, int size_y)-- 
FPDF_RenderPageSkp.i(page.i, size_x.l, size_y.l)-- 
 
-- Function: FPDF_ClosePage 
--          Close a loaded PDF page. 
-- Parameters: 
--          page        -   Handle to the loaded page. 
-- Return value: 
--          None. 
 FPDF_ClosePage(page.i)-- 
 
-- Function: FPDF_CloseDocument 
--          Close a loaded PDF document. 
-- Parameters: 
--          document    -   Handle to the loaded document. 
-- Return value: 
--          None. 
 FPDF_CloseDocument(document.i)-- 
 
-- Function: FPDF_DeviceToPage 
--          Convert the screen coordinates of a point to page coordinates. 
-- Parameters: 
--          page        -   Handle to the page. Returned by FPDF_LoadPage. 
--          start_x     -   Left pixel position of the display area in 
--                          device coordinates. 
--          start_y     -   Top pixel position of the display area in device 
--                          coordinates. 
--          size_x      -   Horizontal size (in pixels) for displaying the page. 
--          size_y      -   Vertical size (in pixels) for displaying the page. 
--          rotate      -   Page orientation: 
--                            0 (normal) 
--                            1 (rotated 90 degrees clockwise) 
--                            2 (rotated 180 degrees) 
--                            3 (rotated 90 degrees counter-clockwise) 
--          device_x    -   X value in device coordinates to be converted. 
--          device_y    -   Y value in device coordinates to be converted. 
--          page_x      -   A pointer to a double receiving the converted X 
--                          value in page coordinates. 
--          page_y      -   A pointer to a double receiving the converted Y 
--                          value in page coordinates. 
-- Return value: 
--          None. 
-- Comments: 
--          The page coordinate system has its origin at the left-bottom corner 
--          of the page, with the X-axis on the bottom going to the right, and 
--          the Y-axis on the left side going up. 
-- 
--          NOTE: this coordinate system can be altered when you zoom, scroll, --          or rotate a page, however, a point on the page should always have 
--          the same coordinate values in the page coordinate system. 
-- 
--          The device coordinate system is device dependent. For screen device, --          its origin is at the left-top corner of the window. However this 
--          origin can be altered by the Windows coordinate transformation 
--          utilities. 
-- 
--          You must make sure the start_x, start_y, size_x, size_y 
--          and rotate parameters have exactly same values as you used in 
--          the FPDF_RenderPage() function call. 
 FPDF_DeviceToPage(page.i, start_x.l, start_y.l, size_x.l, size_y.l, rotate.l, device_x.l, device_y.l, *page_x.double, *page_y.double)-- 
 
-- Function: FPDF_PageToDevice 
--          Convert the page coordinates of a point to screen coordinates. 
-- Parameters: 
--          page        -   Handle to the page. Returned by FPDF_LoadPage. 
--          start_x     -   Left pixel position of the display area in 
--                          device coordinates. 
--          start_y     -   Top pixel position of the display area in device 
--                          coordinates. 
--          size_x      -   Horizontal size (in pixels) for displaying the page. 
--          size_y      -   Vertical size (in pixels) for displaying the page. 
--          rotate      -   Page orientation: 
--                            0 (normal) 
--                            1 (rotated 90 degrees clockwise) 
--                            2 (rotated 180 degrees) 
--                            3 (rotated 90 degrees counter-clockwise) 
--          page_x      -   X value in page coordinates. 
--          page_y      -   Y value in page coordinate. 
--          device_x    -   A pointer to an integer receiving the result X 
--                          value in device coordinates. 
--          device_y    -   A pointer to an integer receiving the result Y 
--                          value in device coordinates. 
-- Return value: 
--          None. 
-- Comments: 
--          See comments for FPDF_DeviceToPage(). 
 FPDF_PageToDevice(page.i, start_x.l, start_y.l, size_x.l, size_y.l, rotate.l, *page_x.double, *page_y.double, *device_x.long, *device_y.long)-- 
 
-- Function: FPDFBitmap_Create 
--          Create a device independent bitmap (FXDIB). 
-- Parameters: 
--          width       -   The number of pixels in width for the bitmap. 
--                          Must be greater than 0. 
--          height      -   The number of pixels in height for the bitmap. 
--                          Must be greater than 0. 
--          alpha       -   A flag indicating whether the alpha channel is used. 
--                          Non-zero for using alpha, zero for not using. 
-- Return value: 
--          The created bitmap handle, or NULL if a parameter error or out of 
--          memory. 
-- Comments: 
--          The bitmap always uses 4 bytes per pixel. The first byte is always 
--          double word aligned. 
-- 
--          The byte order is BGRx (the last byte unused if no alpha channel) or 
--          BGRA. 
-- 
--          The pixels in a horizontal line are stored side by side, with the 
--          left most pixel stored first (with lower memory address). 
--          Each line uses width * 4 bytes. 
-- 
--          Lines are stored one after another, with the top most line stored 
--          first. There is no gap between adjacent lines. 
-- 
--          This function allocates enough memory for holding all pixels in the 
--          bitmap, but it doesn't initialize the buffer. Applications can use 
--          FPDFBitmap_FillRect to fill the bitmap using any color. 
--DLLEXPORT FPDF_BITMAP STDCALL FPDFBitmap_Create(int width, int height, int alpha)-- 
FPDFBitmap_Create.i(width.l, height.l, alpha.l)-- 
 
-- Function: FPDFBitmap_CreateEx 
--          Create a device independent bitmap (FXDIB) 
-- Parameters: 
--          width       -   The number of pixels in width for the bitmap. 
--                          Must be greater than 0. 
--          height      -   The number of pixels in height for the bitmap. 
--                          Must be greater than 0. 
--          format      -   A number indicating for bitmap format, as defined 
--                          above. 
--          first_scan  -   A pointer to the first byte of the first line if 
--                          using an external buffer. If this parameter is NULL,  
--                          then the a new buffer will be created. 
--          stride      -   Number of bytes for each scan line, for external 
--                          buffer only. 
-- Return value: 
--          The bitmap handle, or NULL if parameter error or out of memory. 
-- Comments: 
--          Similar to FPDFBitmap_Create function, but allows for more formats 
--          and an external buffer is supported. The bitmap created by this 
--          function can be used in any place that a FPDF_BITMAP handle is 
--          required. 
-- 
--          If an external buffer is used, then the application should destroy 
--          the buffer by itself. FPDFBitmap_Destroy function will not destroy 
--          the buffer. 
--DLLEXPORT FPDF_BITMAP STDCALL FPDFBitmap_CreateEx(int width, int height, int format, void* first_scan, int stride)-- 
FPDFBitmap_CreateEx.i(width.l, height.l, format.l, *first_scan, stride.l)-- 
 
-- Function: FPDFBitmap_FillRect 
--          Fill a rectangle in a bitmap. 
-- Parameters: 
--          bitmap      -   The handle to the bitmap. Returned by 
--                          FPDFBitmap_Create. 
--          left        -   The left position. Starting from 0 at the 
--                          left-most pixel. 
--          top         -   The top position. Starting from 0 at the 
--                          top-most line. 
--          width       -   Width in pixels to be filled. 
--          height      -   Height in pixels to be filled. 
--          color       -   A 32-bit value specifing the color, in 8888 ARGB 
--                          format. 
-- Return value: 
--          None. 
-- Comments: 
--          This function sets the color and (optionally) alpha value in the 
--          specified region of the bitmap. 
-- 
--          NOTE: If the alpha channel is used, this function does NOT 
--          composite the background with the source color, instead the 
--          background will be replaced by the source color and the alpha. 
-- 
--          If the alpha channel is not used, the alpha parameter is ignored. 
FPDFBitmap_FillRect(bitmap.i, left.l, top.l, width.l, height.l, color.i)-- 
 
-- Function: FPDFBitmap_GetBuffer 
--          Get data buffer of a bitmap. 
-- Parameters: 
--          bitmap      -   Handle to the bitmap. Returned by FPDFBitmap_Create. 
-- Return value: 
--          The pointer to the first byte of the bitmap buffer. 
-- Comments: 
--          The stride may be more than width * number of bytes per pixel 
-- 
--          Applications can use this function to get the bitmap buffer pointer,  
--          then manipulate any color And/Or alpha values For any pixels in the 
--          bitmap. 
-- 
--          The data is in BGRA format. Where the A maybe unused if alpha was 
--          not specified. 
--DLLEXPORT void* STDCALL FPDFBitmap_GetBuffer(FPDF_BITMAP bitmap)-- 
FPDFBitmap_GetBuffer.i(bitmap.i)-- 
 
-- Function: FPDFBitmap_GetWidth 
--          Get width of a bitmap. 
-- Parameters: 
--          bitmap      -   Handle to the bitmap. Returned by FPDFBitmap_Create. 
-- Return value: 
--          The width of the bitmap in pixels. 
--DLLEXPORT int STDCALL FPDFBitmap_GetWidth(FPDF_BITMAP bitmap)-- 
FPDFBitmap_GetWidth.l(bitmap.i)-- 
 
-- Function: FPDFBitmap_GetHeight 
--          Get height of a bitmap. 
-- Parameters: 
--          bitmap      -   Handle to the bitmap. Returned by FPDFBitmap_Create. 
-- Return value: 
--          The height of the bitmap in pixels. 
--DLLEXPORT int STDCALL FPDFBitmap_GetHeight(FPDF_BITMAP bitmap)-- 
FPDFBitmap_GetHeight.l(bitmap.i)-- 
 
-- Function: FPDFBitmap_GetStride 
--          Get number of bytes for each line in the bitmap buffer. 
-- Parameters: 
--          bitmap      -   Handle to the bitmap. Returned by FPDFBitmap_Create. 
-- Return value: 
--          The number of bytes for each line in the bitmap buffer. 
-- Comments: 
--          The stride may be more than width * number of bytes per pixel. 
--DLLEXPORT int STDCALL FPDFBitmap_GetStride(FPDF_BITMAP bitmap)-- 
FPDFBitmap_GetStride.l(bitmap.i)-- 
 
-- Function: FPDFBitmap_Destroy 
--          Destroy a bitmap and release all related buffers. 
-- Parameters: 
--          bitmap      -   Handle to the bitmap. Returned by FPDFBitmap_Create. 
-- Return value: 
--          None. 
-- Comments: 
--          This function will not destroy any external buffers provided when 
--          the bitmap was created. 
FPDFBitmap_Destroy(bitmap.i)-- 
 
-- Function: FPDF_VIEWERREF_GetPrintScaling 
--          Whether the PDF document prefers to be scaled or not. 
-- Parameters: 
--          document    -   Handle to the loaded document. 
-- Return value: 
--          None. 
--DLLEXPORT FPDF_BOOL STDCALL FPDF_VIEWERREF_GetPrintScaling(document.i) 
FPDF_VIEWERREF_GetPrintScaling.l(document.i) 
 
-- Function: FPDF_VIEWERREF_GetNumCopies 
--          Returns the number of copies to be printed. 
-- Parameters: 
--          document    -   Handle to the loaded document. 
-- Return value: 
--          The number of copies to be printed. 
--DLLEXPORT int STDCALL FPDF_VIEWERREF_GetNumCopies(document.i) 
FPDF_VIEWERREF_GetNumCopies.l(document.i) 
 
-- Function: FPDF_VIEWERREF_GetPrintPageRange 
--          Page numbers to initialize print dialog box when file is printed. 
-- Parameters: 
--          document    -   Handle to the loaded document. 
-- Return value: 
--          The print page range to be used for printing. 
--DLLEXPORT FPDF_PAGERANGE STDCALL FPDF_VIEWERREF_GetPrintPageRange(document.i) 
FPDF_VIEWERREF_GetPrintPageRange.i(document.i) 
 
-- Function: FPDF_VIEWERREF_GetDuplex 
--          Returns the paper handling option to be used when printing from 
--          the print dialog. 
-- Parameters: 
--          document    -   Handle to the loaded document. 
-- Return value: 
--          The paper handling option to be used when printing. 
--DLLEXPORT FPDF_DUPLEXTYPE STDCALL FPDF_VIEWERREF_GetDuplex(document.i) 
FPDF_VIEWERREF_GetDuplex.l(document.i) 
 
-- Function: FPDF_CountNamedDests 
--          Get the count of named destinations in the PDF document. 
-- Parameters: 
--          document    -   Handle to a document 
-- Return value: 
--          The count of named destinations. 
--DLLEXPORT FPDF_DWORD STDCALL FPDF_CountNamedDests(document.i) 
FPDF_CountNamedDests.i(document.i) 
 
-- Function: FPDF_GetNamedDestByName 
--          Get a the destination handle for the given name. 
-- Parameters: 
--          document    -   Handle to the loaded document. 
--          name        -   The name of a destination. 
-- Return value: 
--          The handle to the destination. 
--DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDestByName(document.i, FPDF_BYTESTRING name) 
FPDF_GetNamedDestByName.i(document.i, *name.p-ascii) 
 
-- Function: FPDF_GetNamedDest 
--          Get the named destination by index. 
-- Parameters: 
--          document        -   Handle to a document 
--          index           -   The index of a named destination. 
--          buffer          -   The buffer to store the destination name, --                              used as wchar_t*. 
--          buflen [in/out] -   Size of the buffer in bytes on input, --                              length of the result in bytes on output 
--                              or -1 if the buffer is too small. 
-- Return value: 
--          The destination handle for a given index, or NULL if there is no 
--          named destination corresponding to |index|. 
-- Comments: 
--          Call this function twice to get the name of the named destination: 
--            1) First time pass in |buffer| as NULL and get buflen. 
--            2) Second time pass in allocated |buffer| and buflen to retrieve 
--               |buffer|, which should be used as wchar_t*. 
-- 
--         If buflen is not sufficiently large, it will be set to -1 upon 
--         return. 
--DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDest(document.i, index.l, void* buffer, *buflen.long) 
FPDF_GetNamedDest.i(document.i, index.l, *buffer, *buflen.long) 
 
-- Function: FPDF_BStr_Init 
--          Helper function to initialize a byte string. 
--DLLEXPORT FPDF_RESULT STDCALL FPDF_BStr_Init(FPDF_BSTR* str) 
FPDF_BStr_Init.l(*str.FPDF_BSTR) 
 
-- Function: FPDF_BStr_Set 
--          Helper function to set string data. 
--DLLEXPORT FPDF_RESULT STDCALL FPDF_BStr_Set(FPDF_BSTR* str, FPDF_LPCSTR bstr, length.l) 
FPDF_BStr_Set.l(*str.FPDF_BSTR, *bstr.p-ascii, length.l) 
 
-- Function: FPDF_BStr_Clear 
--          Helper function to clear a byte string. 
--DLLEXPORT FPDF_RESULT STDCALL FPDF_BStr_Clear(FPDF_BSTR* str) 
FPDF_BStr_Clear.l(*str.FPDF_BSTR) 
 
 
 
-- Create a document availability provider. 
-- 
--   file_avail - pointer to file availability interface. 
--   file       - pointer to a file access interface. 
-- 
-- Returns a handle to the document availability provider, or NULL on error. 
-- 
-- |FPDFAvail_Destroy| must be called when done with the availability provider. 
--DLLEXPORT FPDF_AVAIL STDCALL FPDFAvail_Create(*file_avail.FX_FILEAVAIL, *file.FPDF_FILEACCESS) 
FPDFAvail_Create.l(*file_avail.FX_FILEAVAIL, *file.FPDF_FILEACCESS) 
 
-- Destroy the |avail| document availability provider. 
-- 
--   avail - handle to document availability provider to be destroyed. 
FPDFAvail_Destroy(*avail.FX_FILEAVAIL) 
 
-- Checks if the document is ready for loading, if not, gets download hints. 
-- 
--   avail - handle to document availability provider. 
--   hints - pointer to a download hints interface. 
-- 
-- Returns one of: 
--   PDF_DATA_ERROR: A common error is returned. Data availability unknown. 
--   PDF_DATA_NOTAVAIL: Data not yet available. 
--   PDF_DATA_AVAIL: Data available. 
-- 
-- Applications should call this function whenever new data arrives, and process 
-- all the generated download hints, if any, until the function returns 
-- |PDF_DATA_ERROR| or |PDF_DATA_AVAIL|. 
-- 
-- Once all data is available, call |FPDFAvail_GetDocument| to get a document 
-- handle. 
--DLLEXPORT int STDCALL FPDFAvail_IsDocAvail(void *avail, *hints.FX_DOWNLOADHINTS) 
FPDFAvail_IsDocAvail.l(avail.i, *hints.FX_DOWNLOADHINTS) 
 
-- Get document from the availability provider. 
-- 
--   avail    - handle to document availability provider. 
--   password - password for decrypting the PDF file. Optional. 
-- 
-- Returns a handle to the document. 
-- 
-- When |FPDFAvail_IsDocAvail| returns TRUE, call |FPDFAvail_GetDocument| to 
-- retrieve the document handle. 
--DLLEXPORT FPDF_DOCUMENT STDCALL FPDFAvail_GetDocument(void *avail, *password.p-ascii) 
FPDFAvail_GetDocument.l(avail.i, *password.p-ascii) 
 
-- Get the page number for the first available page in a linearized PDF. 
-- 
--   doc - document handle. 
-- 
-- Returns the zero-based index for the first available page. 
-- 
-- For most linearized PDFs, the first available page will be the first page, -- however, some PDFs might make another page the first available page. 
-- For non-linearized PDFs, this function will always return zero. 
--DLLEXPORT int STDCALL FPDFAvail_GetFirstPageNum(doc.i) 
FPDFAvail_GetFirstPageNum.l(doc.i) 
 
-- Check if |page_index| is ready for loading, if not, get the 
-- |FX_DOWNLOADHINTS|. 
-- 
--   avail      - handle to document availability provider. 
--   page_index - index number of the page. Zero for the first page. 
--   hints      - pointer to a download hints interface. Populated if 
--                |page_index| is not available. 
-- 
-- Returns one of: 
--   PDF_DATA_ERROR: A common error is returned. Data availability unknown. 
--   PDF_DATA_NOTAVAIL: Data not yet available. 
--   PDF_DATA_AVAIL: Data available. 
-- 
-- This function can be called only after |FPDFAvail_GetDocument| is called. 
-- Applications should call this function whenever new data arrives and process 
-- all the generated download |hints|, if any, until this function returns 
-- |PDF_DATA_ERROR| or |PDF_DATA_AVAIL|. Applications can then perform page 
-- loading. 
--DLLEXPORT int STDCALL FPDFAvail_IsPageAvail(void *avail, page_index.l, *hints.FX_DOWNLOADHINTS) 
FPDFAvail_IsPageAvail.l(avail.i, page_index.l, *hints.FX_DOWNLOADHINTS) 
 
-- Check if form data is ready for initialization, if not, get the 
-- |FX_DOWNLOADHINTS|. 
-- 
--   avail - handle to document availability provider. 
--   hints - pointer to a download hints interface. Populated if form is not 
--           ready for initialization. 
-- 
-- Returns one of: 
--   PDF_FORM_ERROR: A common eror, in general incorrect parameters. 
--   PDF_FORM_NOTAVAIL: Data not available. 
--   PDF_FORM_AVAIL: Data available. 
--   PDF_FORM_NOTEXIST: No form data. 
-- 
-- This function can be called only after |FPDFAvail_GetDocument| is called. 
-- The application should call this function whenever new data arrives and 
-- process all the generated download |hints|, if any, until the function 
-- |PDF_FORM_ERROR|, |PDF_FORM_AVAIL| or |PDF_FORM_NOTEXIST|. 
-- Applications can then perform page loading. It is recommend to call 
-- |FPDFDOC_InitFormFillEnvironment| when |PDF_FORM_AVAIL| is returned. 
--DLLEXPORT int STDCALL FPDFAvail_IsFormAvail(void *avail, *hints.FX_DOWNLOADHINTS) 
FPDFAvail_IsFormAvail.l(avail.i, *hints.FX_DOWNLOADHINTS) 
 
-- Check whether a document is a linearized PDF. 
-- 
--   avail - handle to document availability provider. 
-- 
-- Returns one of: 
--   PDF_LINEARIZED 
--   PDF_NOT_LINEARIZED 
--   PDF_LINEARIZATION_UNKNOWN 
-- 
-- |FPDFAvail_IsLinearized| will return |PDF_LINEARIZED| or |PDF_NOT_LINEARIZED| 
-- when we have 1k  of data. If the files size less than 1k, it returns 
-- |PDF_LINEARIZATION_UNKNOWN| as there is insufficient information to determine 
-- if the PDF is linearlized. 
--DLLEXPORT int STDCALL FPDFAvail_IsLinearized(void *avail) 
FPDFAvail_IsLinearized.l(avail.i) 
 
 
-- Get the first child of |bookmark|, or the first top-level bookmark item. 
-- 
--   document - handle to the document. 
--   bookmark - handle to the current bookmark. Pass NULL for the first top 
--              level item. 
-- 
-- Returns a handle to the first child of |bookmark| or the first top-level 
-- bookmark item. NULL if no child or top-level bookmark found. 
--DLLEXPORT FPDF_BOOKMARK STDCALL FPDFBookmark_GetFirstChild(document.i, void *bookmark) 
FPDFBookmark_GetFirstChild.i(document.i, bookmark.i) 
 
-- Get the next sibling of |bookmark|. 
-- 
--   document - handle to the document. 
--   bookmark - handle to the current bookmark. 
-- 
-- Returns a handle to the next sibling of |bookmark|, or NULL if this is the 
-- last bookmark at this level. 
--DLLEXPORT FPDF_BOOKMARK STDCALL FPDFBookmark_GetNextSibling(document.i, bookmark.i) 
FPDFBookmark_GetNextSibling.i(document.i, bookmark.i) 
 
-- Get the title of |bookmark|. 
-- 
--   bookmark - handle to the bookmark. 
--   buffer   - buffer for the title. May be NULL. 
--   buflen   - the length of the buffer in bytes. May be 0. 
-- 
-- Returns the number of bytes in the title, including the terminating NUL 
-- character. The number of bytes is returned regardless of the |buffer| and 
-- |buflen| parameters. 
-- 
-- Regardless of the platform, the |buffer| is always in UTF-16LE encoding. The 
-- string is terminated by a UTF16 NUL character. If |buflen| is less then the 
-- required length, or |buffer| is NULL, |buffer| will not be modified. 
--DLLEXPORT unsigned long STDCALL FPDFBookmark_GetTitle(bookmark.i, void* buffer, buflen.i) 
FPDFBookmark_GetTitle.i(bookmark.i, *buffer, buflen.i) 
 
-- Find the bookmark with |title| in |document|. 
-- 
--   document - handle to the document. 
--   title    - the UTF-16LE encoded Unicode title for which to search. 
-- 
-- Returns the handle to the bookmark, or NULL if |title| can't be found. 
-- 
-- |FPDFBookmark_Find| will always return the first bookmark found even if 
-- multiple bookmarks have the same |title|. 
--DLLEXPORT FPDF_BOOKMARK STDCALL FPDFBookmark_Find(document.i, FPDF_WIDESTRING title) 
FPDFBookmark_Find.i(document.i, *title.string) 
 
-- Get the destination associated with |bookmark|. 
-- 
--   document - handle to the document. 
--   bookmark - handle to the bookmark. 
-- 
-- Returns the handle to the destination data, NULL if no destination is 
-- associated with |bookmark|. 
--DLLEXPORT FPDF_DEST STDCALL FPDFBookmark_GetDest(document.i, bookmark.i) 
FPDFBookmark_GetDest.i(document.i, bookmark.i) 
 
-- Get the action associated with |bookmark|. 
-- 
--   bookmark - handle to the bookmark. 
-- 
-- Returns the handle to the action data, or NULL if no action is associated 
-- with |bookmark|. When NULL is returned, |FPDFBookmark_GetDest| should be 
-- called to get the |bookmark| destination data. 
--DLLEXPORT FPDF_ACTION STDCALL FPDFBookmark_GetAction(bookmark.i) 
FPDFBookmark_GetAction.i(bookmark.i) 
 
-- Get the type of |action|. 
-- 
--   action - handle to the action. 
-- 
-- Returns one of: 
--   PDFACTION_UNSUPPORTED 
--   PDFACTION_GOTO 
--   PDFACTION_REMOTEGOTO 
--   PDFACTION_URI 
--   PDFACTION_LAUNCH 
--DLLEXPORT unsigned long STDCALL FPDFAction_GetType(void *action) 
FPDFAction_GetType.i(action.i) 
 
-- Get the destination of |action|. 
-- 
--   document - handle to the document. 
--   action   - handle to the action. |action| must be a |PDFACTION_GOTO| or 
--              |PDFACTION_REMOTEGOTO|. 
-- 
-- Returns a handle to the destination data. 
-- 
-- In the case of |PDFACTION_REMOTEGOTO|, you should first call 
-- |FPDFAction_GetFilePath| then load that document, the document handle from 
-- that document should pass as |document| to |FPDFAction_GetDest|. 
--DLLEXPORT FPDF_DEST STDCALL FPDFAction_GetDest(document.i, void *action) 
FPDFAction_GetDest.i(document.i, action.i) 
 
-- Get file path of a |PDFACTION_REMOTEGOTO| |action|. 
-- 
--   action - handle to the action. |action| must be a |PDFACTION_LAUNCH| or 
--            |PDFACTION_REMOTEGOTO| 
--   buffer - a buffer for output the path string. May be NULL. 
--   buflen - the length of the buffer, in bytes. May be 0. 
-- 
-- Returns the number of bytes in the file path, including the trailing UTF16 
-- NUL character. 
-- 
-- Regardless of the platform, the |buffer| is always in UTF-16LE encoding. 
-- If |buflen| is less then the returned length, or |buffer| is NULL, |buffer| 
-- will not be modified. 
--DLLEXPORT unsigned long STDCALL FPDFAction_GetFilePath(void *action, void* buffer, buflen.i) 
FPDFAction_GetFilePath.i(action.i, *buffer, buflen.i) 
 
-- Get the URI path of a |PDFACTION_URI| |action|. 
-- 
--   document - handle to the document. 
--   action   - handle to the action. Must be a |PDFACTION_URI|. 
--   buffer   - a buffer for the path string. May be NULL. 
--   buflen   - the length of the buffer, in bytes. May be 0. 
-- 
-- Returns the number of bytes in the URI path, including trailing zeros. 
-- 
-- The |buffer| is always encoded in 7-bit ASCII. If |buflen| is less then the 
-- returned length, or |buffer| is NULL, |buffer| will not be modified. 
--DLLEXPORT unsigned long STDCALL FPDFAction_GetURIPath(document.i, void *action, void* buffer, buflen.i) 
FPDFAction_GetURIPath.i(document.i, action.i, *buffer, buflen.i) 
 
-- Get the page index of |dest|. 
-- 
--   document - handle to the document. 
--   dest     - handle to the destination. 
-- 
-- Returns the page index containing |dest|. Page indices start from 0. 
--DLLEXPORT unsigned long STDCALL FPDFDest_GetPageIndex(document.i, void *dest) 
FPDFDest_GetPageIndex.i(document.i, dest.i) 
 
-- Find a link at point (|x|,|y|) on |page|. 
-- 
--   page - handle to the document page. 
--   x    - the x coordinate, in the page coordinate system. 
--   y    - the y coordinate, in the page coordinate system. 
-- 
-- Returns a handle to the link, or NULL if no link found at the given point. 
-- 
-- You can convert coordinates from screen coordinates to page coordinates using 
-- |FPDF_DeviceToPage|. 
--DLLEXPORT FPDF_LINK STDCALL FPDFLink_GetLinkAtPoint(void *page, x.d, y.d) 
FPDFLink_GetLinkAtPoint.i(page.i, x.d, y.d) 
 
-- Find the Z-order of link at point (|x|,|y|) on |page|. 
-- 
--   page - handle to the document page. 
--   x    - the x coordinate, in the page coordinate system. 
--   y    - the y coordinate, in the page coordinate system. 
-- 
-- Returns the Z-order of the link, or -1 if no link found at the given point. 
-- Larger Z-order numbers are closer to the front. 
-- 
-- You can convert coordinates from screen coordinates to page coordinates using 
-- |FPDF_DeviceToPage|. 
--DLLEXPORT int STDCALL FPDFLink_GetLinkZOrderAtPoint(void *page, x.d, y.d) 
FPDFLink_GetLinkZOrderAtPoint.l(page.i, x.d, y.d) 
 
-- Get destination info for |link|. 
-- 
--   document - handle to the document. 
--   link     - handle to the link. 
-- 
-- Returns a handle to the destination, or NULL if there is no destination 
-- associated with the link. In this case, you should call |FPDFLink_GetAction| 
-- to retrieve the action associated with |link|. 
--DLLEXPORT FPDF_DEST STDCALL FPDFLink_GetDest(document.i, void *link) 
FPDFLink_GetDest.i(document.i, link.i) 
 
-- Get action info for |link|. 
-- 
--   link - handle to the link. 
-- 
-- Returns a handle to the action associated to |link|, or NULL if no action. 
--DLLEXPORT FPDF_ACTION STDCALL FPDFLink_GetAction(void *link) 
FPDFLink_GetAction.i(link.i) 
 
-- Enumerates all the link annotations in |page|. 
-- 
--   page      - handle to the page. 
--   startPos  - the start position, should initially be 0 and is updated with 
--               the next start position on return. 
--   linkAnnot - the link handle for |startPos|. 
-- 
-- Returns TRUE on success. 
--DLLEXPORT FPDF_BOOL STDCALL FPDFLink_Enumerate(void *page, int* startPos, void *linkAnnot) 
FPDFLink_Enumerate.l(page.i, *startPos.long, linkAnnot.i) 
 
-- Get the rectangle for |linkAnnot|. 
-- 
--   linkAnnot - handle to the link annotation. 
--   rect      - the annotation rectangle. 
-- 
-- Returns true on success. 
--DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetAnnotRect(void *linkAnnot, *rect.FS_RECTF) 
FPDFLink_GetAnnotRect.l(linkAnnot.i, *rect.FS_RECTF) 
 
-- Get the count of quadrilateral points to the |linkAnnot|. 
-- 
--   linkAnnot - handle to the link annotation. 
-- 
-- Returns the count of quadrilateral points. 
--DLLEXPORT int STDCALL FPDFLink_CountQuadPoints(void *linkAnnot) 
FPDFLink_CountQuadPoints.l(linkAnnot.i) 
 
-- Get the quadrilateral points for the specified |quadIndex| in |linkAnnot|. 
-- 
--   linkAnnot  - handle to the link annotation. 
--   quadIndex  - the specified quad point index. 
--   quadPoints - receives the quadrilateral points. 
-- 
-- Returns true on success. 
--DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetQuadPoints(void *linkAnnot, quadIndex.l, *quadPoints.FS_QUADPOINTSF) 
FPDFLink_GetQuadPoints.l(linkAnnot.i, quadIndex.l, *quadPoints.FS_QUADPOINTSF) 
 
-- Get meta-data |tag| content from |document|. 
-- 
--   doc    - handle to the document 
--   tag    - the tag to retrieve. The tag can be one of: 
--              Title, Author, Subject, Keywords, Creator, Producer, CreationDate, or ModDate. 
--            For detailed explanations of these tags and their respective 
--            values, please refer to PDF Reference 1.6, section 10.2.1, 'Document Information Dictionary'. 
--   buffer - a buffer for the title. May be NULL. 
--   buflen - the length of the buffer, in bytes. May be 0. 
-- 
-- Returns the number of bytes in the title, including trailing zeros. 
-- 
-- The |buffer| is always encoded in UTF-16LE. The |buffer| is followed by two 
-- bytes of zeros indicating the end of the string.  If |buflen| is less then 
-- the returned length, or |buffer| is NULL, |buffer| will not be modified. 
--DLLEXPORT unsigned long STDCALL FPDF_GetMetaText(doc.i, *tag.Byte, void* buffer, buflen.i) 
FPDF_GetMetaText.i(doc.i, *tag.Byte, *buffer=public constant Null, buflen.i=0) 
 
 
-- Create a new PDF document. 
-- 
-- Returns a handle to a new document, or NULL on failure. 
--DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_CreateNewDocument() 
FPDF_CreateNewDocument.i() 
 
-- Create a new PDF page. 
-- 
--   document   - handle to document. 
--   page_index - suggested index of the page to create. If it is larger than 
--                document's current last index(L), the created page index is 
--                the next available index -- L+1. 
--   width      - the page width. 
--   height     - the page height. 
-- 
-- Returns the handle to the new page. 
-- 
-- The page should be closed with CPDF_ClosePage() when finished as 
-- with any other page in the document. 
--DLLEXPORT FPDF_PAGE STDCALL FPDFPage_New(document.i, page_index.l, width.d, height.d) 
FPDFPage_New.i(document.i, page_index.l, width.d, height.d) 
 
-- Delete the page at |page_index|. 
-- 
--   document   - handle to document. 
--   page_index - the index of the page to delete. 
FPDFPage_Delete(document.i, page_index.l) 
 
-- Get the rotation of |page|. 
-- 
--   page - handle to a page 
-- 
-- Returns one of the following indicating the page rotation: 
--   0 - No rotation. 
--   1 - Rotated 90 degrees clockwise. 
--   2 - Rotated 180 degrees clockwise. 
--   3 - Rotated 270 degrees clockwise. 
--DLLEXPORT int STDCALL FPDFPage_GetRotation(void *page) 
FPDFPage_GetRotation.l(page.i) 
 
-- Set rotation for |page|. 
-- 
--   page   - handle to a page. 
--   rotate - the rotation value, one of: 
--              0 - No rotation. 
--              1 - Rotated 90 degrees clockwise. 
--              2 - Rotated 180 degrees clockwise. 
--              3 - Rotated 270 degrees clockwise. 
FPDFPage_SetRotation(page.i, rotate.l) 
 
-- Insert |page_obj| into |page|. 
-- 
--   page     - handle to a page 
--   page_obj - handle to a page object. The |page_obj| will be automatically 
--              freed. 
FPDFPage_InsertObject(page.i, page_obj.i) 
 
-- Get number of page objects inside |page|. 
-- 
--   page - handle to a page. 
-- 
-- Returns the number of objects in |page|. 
--DLLEXPORT int STDCALL FPDFPage_CountObject(void *page) 
FPDFPage_CountObject.l(page.i) 
 
-- Get object in |page| at |index|. 
-- 
--   page  - handle to a page. 
--   index - the index of a page object. 
-- 
-- Returns the handle to the page object, or NULL on failed. 
--DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPage_GetObject(void *page, index.l) 
FPDFPage_GetObject.i(page.i, index.l) 
 
-- Checks if |page| contains transparency. 
-- 
--   page - handle to a page. 
-- 
-- Returns TRUE if |page| contains transparency. 
--DLLEXPORT FPDF_BOOL STDCALL FPDFPage_HasTransparency(void *page) 
FPDFPage_HasTransparency.l(page.i) 
 
-- Generate the content of |page|. 
-- 
--   page - handle to a page. 
-- 
-- Returns TRUE on success. 
-- 
-- Before you save the page to a file, or reload the page, you must call 
-- |FPDFPage_GenerateContent| or any changes to |page| will be lost. 
--DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GenerateContent(void *page) 
FPDFPage_GenerateContent.l(page.i) 
 
-- Checks if |pageObject| contains transparency. 
-- 
--   pageObject - handle to a page object. 
-- 
-- Returns TRUE if |pageObject| contains transparency. 
--DLLEXPORT FPDF_BOOL STDCALL FPDFPageObj_HasTransparency(void *pageObject) 
FPDFPageObj_HasTransparency.l(pageObject.i) 
 
-- Transform |pageObject| by the given matrix. 
-- 
--   page_object - handle to a page object. 
--   a           - matrix value. 
--   b           - matrix value. 
--   c           - matrix value. 
--   d           - matrix value. 
--   e           - matrix value. 
--   f           - matrix value. 
-- 
-- The matrix is composed as: 
--   |a c e| 
--   |b d f| 
-- and can be used to scale, rotate, shear and translate the |page_object|. 
FPDFPageObj_Transform(page_object.i, a.d, b.d, c.d, d.d, e.d, f.d) 
 
-- Transform all annotations in |page|. 
-- 
--   page - handle to a page. 
--   a    - matrix value. 
--   b    - matrix value. 
--   c    - matrix value. 
--   d    - matrix value. 
--   e    - matrix value. 
--   f    - matrix value. 
-- 
-- The matrix is composed as: 
--   |a c e| 
--   |b d f| 
-- and can be used to scale, rotate, shear and translate the |page| annotations. 
FPDFPage_TransformAnnots(page.i, a.d, b.d, c.d, d.d, e.d, f.d) 
 
-- Create a new image object. 
-- 
--   document - handle to a document. 
-- 
-- Returns a handle to a new image object. 
--DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPageObj_NewImgeObj(document.i) 
FPDFPageObj_NewImgeObj.i(document.i) 
 
-- Load an image from a JPEG image file and then set it into |image_object|. 
-- 
--   pages        - pointer to the start of all loaded pages, may be NULL. 
--   nCount       - number of |pages|, may be 0. 
--   image_object - handle to an image object. 
--   fileAccess   - file access handler which specifies the JPEG image file. 
-- 
-- Returns TRUE on success. 
-- 
-- The image object might already have an associated image, which is shared and 
-- cached by the loaded pages. In that case, we need to clear the cached image 
-- for all the loaded pages. Pass |pages| and page count (|nCount|) to this API 
-- to clear the image cache. If the image is not previously shared, or NULL is a 
-- valid |pages| value. 
--DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_LoadJpegFile(FPDF_PAGE* pages, nCount.l, void *image_object, *fileAccess.FPDF_FILEACCESS) 
FPDFImageObj_LoadJpegFile.l(pages.i, nCount.l, image_object.i, *fileAccess.FPDF_FILEACCESS) 
 
-- Set the transform matrix of |image_object|. 
-- 
--   image_object - handle to an image object. 
--   a            - matrix value. 
--   b            - matrix value. 
--   c            - matrix value. 
--   d            - matrix value. 
--   e            - matrix value. 
--   f            - matrix value. 
-- 
-- The matrix is composed as: 
--   |a c e| 
--   |b d f| 
-- and can be used to scale, rotate, shear and translate the |page| annotations. 
-- 
-- Returns TRUE on success. 
--DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetMatrix(void *image_object, a.d, b.d, c.d, d.d, e.d, f.d) 
FPDFImageObj_SetMatrix.l(image_object.i, a.d, b.d, c.d, d.d, e.d, f.d) 
 
-- Set |bitmap| to |image_object|. 
-- 
--   pages        - pointer to the start of all loaded pages, may be NULL. 
--   nCount       - number of |pages|, may be 0. 
--   image_object - handle to an image object. 
--   bitmap       - handle of the bitmap. 
-- 
-- Returns TRUE on success. 
--DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetBitmap(FPDF_PAGE* pages, nCount.l, void *image_object, void *bitmap) 
FPDFImageObj_SetBitmap.l(*pages.integer, nCount.l, image_object.i, bitmap.i) 
 
 
 
-- Setup an unsupported object handler. 
-- 
--   unsp_info - Pointer to an UNSUPPORT_INFO structure. 
-- 
-- Returns TRUE on success. 
--DLLEXPORT FPDF_BOOL STDCALL FSDK_SetUnSpObjProcessHandler(*unsp_info.UNSUPPORT_INFO) 
FSDK_SetUnSpObjProcessHandler.l(*unsp_info.UNSUPPORT_INFO) 
 
-- Get the document's PageMode. 
-- 
--   doc - Handle to document. 
-- 
-- Returns one of the |PAGEMODE_*| flags defined above. 
-- 
-- The page mode defines how the document should be initially displayed. 
--DLLEXPORT int STDCALL FPDFDoc_GetPageMode(document.i) 
FPDFDoc_GetPageMode.l(document.i) 
 
 
 
-- Flatten annotations and form fields into the page contents. 
-- 
--   page  - handle to the page. 
--   nFlag - One of the |FLAT_*| values denoting the page usage. 
-- 
-- Returns one of the |FLATTEN_*| values. 
-- 
-- Currently, all failures return |FLATTEN_FAIL| with no indication of the 
-- cause. 
--DLLEXPORT int STDCALL FPDFPage_Flatten(void *page, nFlag.l) 
FPDFPage_Flatten.l(page.i, nFlag.l) 
 
 
-- Function signature For the callback function passed To the FFI_SetTimer 
-- method. 
-- Parameters: 
--          idEvent     -   Identifier of the timer. 
-- Return value: 
--          None. 
-- Prototype.i TimerCallback(idEvent.l) 
 
 
-- Function: FPDFDOC_InitFormFillEnvironment 
--          Init form fill environment. 
-- Comments: 
--          This function should be called before any form fill operation. 
-- Parameters: 
--          document        -   Handle To document. Returned by 
--FPDF_LoadDocument function. 
--          pFormFillInfo   -   Pointer To a FPDF_FORMFILLINFO Structure. 
-- Return Value: 
--          Return handler To the form fill Module. NULL means fails. 
--DLLEXPORT FPDF_FORMHANDLE STDCALL FPDFDOC_InitFormFillEnvironment(document.i, *formInfo.FPDF_FORMFILLINFO) 
FPDFDOC_InitFormFillEnvironment.i(document.i, *formInfo.FPDF_FORMFILLINFO) 
 
-- Function: FPDFDOC_ExitFormFillEnvironment 
--          Exit form fill environment. 
-- Parameters: 
--          hHandle     -   Handle To the form fill Module. Returned by 
--FPDFDOC_InitFormFillEnvironment. 
-- Return Value: 
--          NULL. 
FPDFDOC_ExitFormFillEnvironment(hHandle.i) 
 
-- Function: FORM_OnAfterLoadPage 
--          This method is required For implementing all the form related 
--functions. Should be invoked after user 
--          successfully loaded a PDF page, And method 
--FPDFDOC_InitFormFillEnvironment had been invoked. 
-- Parameters: 
--          hHandle     -   Handle To the form fill Module. Returned by 
--FPDFDOC_InitFormFillEnvironment. 
-- Return Value: 
--          NONE. 
FORM_OnAfterLoadPage(page.i, hHandle.i) 
 
-- Function: FORM_OnBeforeClosePage 
--          This method is required For implementing all the form related 
--functions. Should be invoked before user 
--          close the PDF page. 
-- Parameters: 
--          page        -   Handle To the page. Returned by FPDF_LoadPage 
--function. 
--          hHandle     -   Handle To the form fill Module. Returned by 
--FPDFDOC_InitFormFillEnvironment. 
-- Return Value: 
--          NONE. 
FORM_OnBeforeClosePage(page.i, hHandle.i) 
 
-- Function: FORM_DoDocumentJSAction 
--           This method is required For performing Document-level JavaScript 
--action. It should be invoked after the PDF document 
--           had been loaded. 
-- Parameters: 
--           hHandle     -   Handle To the form fill Module. Returned by 
--FPDFDOC_InitFormFillEnvironment. 
-- Return Value: 
--           NONE 
-- Comments: 
--           If there is Document-level JavaScript action embedded in the 
--document, this method will execute the javascript action-- 
--           otherwise, the method will do nothing. 
FORM_DoDocumentJSAction(hHandle.i) 
 
-- Function: FORM_DoDocumentOpenAction 
--           This method is required For performing open-action when the document 
--is opened. 
-- Parameters: 
--           hHandle     -   Handle To the form fill Module. Returned by 
--FPDFDOC_InitFormFillEnvironment. 
-- Return Value: 
--           NONE 
-- Comments: 
--           This method will do nothing If there is no open-actions embedded in 
--the document. 
FORM_DoDocumentOpenAction(hHandle.i) 
 
 
-- Function: FORM_DoDocumentAAction 
--           This method is required For performing the document's 
--additional-action. 
-- Parameters: 
--           hHandle     -   Handle To the form fill Module. Returned by 
--FPDFDOC_InitFormFillEnvironment. 
--           aaType      -   The type of the additional-actions which defined 
--above. 
-- Return Value: 
--           NONE 
-- Comments: 
--           This method will do nothing If there is no document 
--additional-action corresponding To the specified aaType. 
 
FORM_DoDocumentAAction(hHandle.i, aaType.l) 
 
 
-- Function: FORM_DoPageAAction 
--           This method is required For performing the page object's 
--additional-action when opened Or closed. 
-- Parameters: 
--           page        -   Handle To the page. Returned by FPDF_LoadPage 
--function. 
--           hHandle     -   Handle To the form fill Module. Returned by 
--FPDFDOC_InitFormFillEnvironment. 
--           aaType      -   The type of the page object's additional-actions 
--which defined above. 
-- Return Value: 
--           NONE 
-- Comments: 
--           This method will do nothing If no additional-action corresponding To 
--the specified aaType exists. 
FORM_DoPageAAction(page.i, hHandle.i, aaType.l) 
 
-- Function: FORM_OnMouseMove 
--          You can call this member function when the mouse cursor moves. 
-- Parameters: 
--          hHandle     -   Handle To the form fill Module. Returned by 
--FPDFDOC_InitFormFillEnvironment. 
--          page        -   Handle To the page. Returned by FPDF_LoadPage 
--function. 
--          modifier        -   Indicates whether various virtual keys are down. 
--          page_x      -   Specifies the x-coordinate of the cursor in PDF user 
--space. 
--          page_y      -   Specifies the y-coordinate of the cursor in PDF user 
--space. 
-- Return Value: 
--          TRUE indicates success-- otherwise false. 
--DLLEXPORT FPDF_BOOL STDCALL FORM_OnMouseMove(void *hHandle, void *page, modifier.l, page_x.d, page_y.d) 
FORM_OnMouseMove.l(hHandle.i, page.i, modifier.l, page_x.d, page_y.d) 
 
-- Function: FORM_OnLButtonDown 
--          You can call this member function when the user presses the left 
--mouse button. 
-- Parameters: 
--          hHandle     -   Handle To the form fill Module. Returned by 
--FPDFDOC_InitFormFillEnvironment. 
--          page        -   Handle To the page. Returned by FPDF_LoadPage 
--function. 
--          modifier        -   Indicates whether various virtual keys are down. 
--          page_x      -   Specifies the x-coordinate of the cursor in PDF user 
--space. 
--          page_y      -   Specifies the y-coordinate of the cursor in PDF user 
--space. 
-- Return Value: 
--          TRUE indicates success-- otherwise false. 
--DLLEXPORT FPDF_BOOL STDCALL FORM_OnLButtonDown(void *hHandle, void *page, modifier.l, page_x.d, page_y.d) 
FORM_OnLButtonDown.l(hHandle.i, page.i, modifier.l, page_x.d, page_y.d) 
 
-- Function: FORM_OnLButtonUp 
--          You can call this member function when the user releases the left 
--mouse button. 
-- Parameters: 
--          hHandle     -   Handle To the form fill Module. Returned by 
--FPDFDOC_InitFormFillEnvironment. 
--          page        -   Handle To the page. Returned by FPDF_LoadPage 
--function. 
--          modifier    -   Indicates whether various virtual keys are down. 
--          page_x      -   Specifies the x-coordinate of the cursor in device. 
--          page_y      -   Specifies the y-coordinate of the cursor in device. 
-- Return Value: 
--          TRUE indicates success-- otherwise false. 
--DLLEXPORT FPDF_BOOL STDCALL FORM_OnLButtonUp(void *hHandle, void *page, modifier.l, page_x.d, page_y.d) 
FORM_OnLButtonUp.l(hHandle.i, page.i, modifier.l, page_x.d, page_y.d) 
--FORM_OnRButtonDown.l(hHandle.i, page.i, modifier.l, page_x.d, page_y.d) 
FORM_OnRButtonDown.l(hHandle.i, page.i, modifier.l, page_x.d, page_y.d) 
FORM_OnRButtonUp.l(hHandle.i, page.i, modifier.l, page_x.d, page_y.d) 
 
-- Function: FORM_OnKeyDown 
--          You can call this member function when a nonsystem key is pressed. 
-- Parameters: 
--          hHandle     -   Handle To the form fill Module. Returned by 
--FPDFDOC_InitFormFillEnvironment. 
--          page        -   Handle To the page. Returned by FPDF_LoadPage 
--function. 
--          nKeyCode    -   Indicates whether various virtual keys are down. 
--          modifier    -   Contains the scan code, key-transition code, *previous key state, And context code. 
-- Return Value: 
--          TRUE indicates success-- otherwise false. 
--DLLEXPORT FPDF_BOOL STDCALL FORM_OnKeyDown(void *hHandle, void *page, nKeyCode.l, modifier.l) 
FORM_OnKeyDown.l(hHandle.i, page.i, nKeyCode.l, modifier.l) 
 
-- Function: FORM_OnKeyUp 
--          You can call this member function when a nonsystem key is released. 
-- Parameters: 
--          hHandle     -   Handle To the form fill Module. Returned by 
--FPDFDOC_InitFormFillEnvironment. 
--          page        -   Handle To the page. Returned by FPDF_LoadPage 
--function. 
--          nKeyCode    -   The virtual-key code of the given key. 
--          modifier    -   Contains the scan code, key-transition code, *previous key state, And context code. 
-- Return Value: 
--          TRUE indicates success-- otherwise false. 
--DLLEXPORT FPDF_BOOL STDCALL FORM_OnKeyUp(void *hHandle, void *page, nKeyCode.l, modifier.l) 
FORM_OnKeyUp.l(hHandle.i, page.i, nKeyCode.l, modifier.l) 
 
-- Function: FORM_OnChar 
--          You can call this member function when a keystroke translates To a 
--nonsystem character. 
-- Parameters: 
--          hHandle     -   Handle To the form fill Module. Returned by 
--FPDFDOC_InitFormFillEnvironment. 
--          page        -   Handle To the page. Returned by FPDF_LoadPage 
--function. 
--          nChar       -   The character code value of the key. 
--          modifier    -   Contains the scan code, key-transition code, *previous key state, And context code. 
-- Return Value: 
--          TRUE indicates success-- otherwise false. 
--DLLEXPORT FPDF_BOOL STDCALL FORM_OnChar(void *hHandle, void *page, nChar.l, modifier.l) 
FORM_OnChar.l(hHandle.i, page.i, nChar.l, modifier.l) 
 
-- Function: FORM_ForceToKillFocus. 
--          You can call this member function To force To kill the focus of the 
--form field which got focus. 
--          It would kill the focus on the form field, save the value of form 
--field If it's changed by user. 
-- Parameters: 
--          hHandle     -   Handle To the form fill Module. Returned by 
--FPDFDOC_InitFormFillEnvironment. 
-- Return Value: 
--          TRUE indicates success-- otherwise false. 
--DLLEXPORT FPDF_BOOL STDCALL FORM_ForceToKillFocus(void *hHandle) 
FORM_ForceToKillFocus.l(hHandle.i) 
 
-- Function: FPDFPage_HasFormFieldAtPoint 
--     Get the form field type by point. 
-- Parameters: 
--     hHandle     -   Handle To the form fill Module. Returned by 
--                     FPDFDOC_InitFormFillEnvironment(). 
--     page        -   Handle To the page. Returned by FPDF_LoadPage(). 
--     page_x      -   X position in PDF "user space". 
--     page_y      -   Y position in PDF "user space". 
-- Return Value: 
--     Return the type of the form field-- -1 indicates no field. 
--     See field types above. 
--DLLEXPORT int STDCALL FPDFPage_HasFormFieldAtPoint(void *hHandle, void *page, page_x.d, page_y.d) 
FPDFPage_HasFormFieldAtPoint.l(hHandle.i, page.i, page_x.d, page_y.d) 
 
-- Function: FPDPage_HasFormFieldAtPoint 
--     DEPRECATED. Please use FPDFPage_HasFormFieldAtPoint. 
--DLLEXPORT int STDCALL FPDPage_HasFormFieldAtPoint(void *hHandle, void *page, page_x.d, page_y.d) 
FPDPage_HasFormFieldAtPoint.l(hHandle.i, page.i, page_x.d, page_y.d) 
 
-- Function: FPDFPage_FormFieldZOrderAtPoint 
--     Get the form field z-order by point. 
-- Parameters: 
--     hHandle     -   Handle To the form fill Module. Returned by 
--                     FPDFDOC_InitFormFillEnvironment(). 
--     page        -   Handle To the page. Returned by FPDF_LoadPage(). 
--     page_x      -   X position in PDF "user space". 
--     page_y      -   Y position in PDF "user space". 
-- Return Value: 
--     Return the z-order of the form field-- -1 indicates no field. 
--     Higher numbers are closer To the front. 
--DLLEXPORT int STDCALL FPDFPage_FormFieldZOrderAtPoint(void *hHandle, void *page, page_x.d, page_y.d) 
FPDFPage_FormFieldZOrderAtPoint.l(hHandle.i, page.i, page_x.d, page_y.d) 
 
-- Function: FPDF_SetFormFieldHighlightColor 
--          Set the highlight color of specified Or all the form fields in the 
--document. 
-- Parameters: 
--          hHandle     -   Handle To the form fill Module. Returned by 
--FPDFDOC_InitFormFillEnvironment. 
--          doc         -   Handle To the document. Returned by 
--FPDF_LoadDocument function. 
--          fieldType   -   A 32-bit integer indicating the type of a form 
--field(defined above). 
--          color       -   The highlight color of the form field.Constructed by 
--0xxxrrggbb. 
-- Return Value: 
--          NONE. 
-- Comments: 
--          When the parameter fieldType is set To zero, the highlight color will be applied To all the form fields in the document. 
--          Please refresh the client window To show the highlight immediately if necessary. 
FPDF_SetFormFieldHighlightColor(hHandle.i, fieldType.l, color.i) 
 
-- Function: FPDF_SetFormFieldHighlightAlpha 
--          Set the transparency of the form field highlight color in the 
--document. 
-- Parameters: 
--          hHandle     -   Handle To the form fill Module. Returned by 
--FPDFDOC_InitFormFillEnvironment. 
--          doc         -   Handle To the document. Returned by 
--FPDF_LoadDocument function. 
--          alpha       -   The transparency of the form field highlight color. 
--between 0-255. 
-- Return Value: 
--          NONE. 
FPDF_SetFormFieldHighlightAlpha(hHandle.i, alpha.a) 
 
-- Function: FPDF_RemoveFormFieldHighlight 
--          Remove the form field highlight color in the document. 
-- Parameters: 
--          hHandle     -   Handle To the form fill Module. Returned by 
--FPDFDOC_InitFormFillEnvironment. 
-- Return Value: 
--          NONE. 
-- Comments: 
--          Please refresh the client window To remove the highlight immediately 
--if necessary. 
FPDF_RemoveFormFieldHighlight(hHandle.i) 
 
-- Function: FPDF_FFLDraw 
--           Render FormFields And popup window on a page To a device independent 
--bitmap. 
-- Parameters: 
--           hHandle     -   Handle To the form fill Module. Returned by 
--FPDFDOC_InitFormFillEnvironment. 
--           bitmap      -   Handle To the device independent bitmap (As the 
--output buffer). 
--                           Bitmap handle can be created by FPDFBitmap_Create 
--function. 
--           page        -   Handle To the page. Returned by FPDF_LoadPage 
--function. 
--           start_x     -   Left pixel position of the display area in the 
--device coordinate. 
--           start_y     -   Top pixel position of the display area in the device 
--coordinate. 
--           size_x      -   Horizontal size (in pixels) For displaying the page. 
--           size_y      -   Vertical size (in pixels) For displaying the page. 
--           rotate      -   Page orientation: 0 (normal), 1 (rotated 90 degrees 
--clockwise), *                               2 (rotated 180 degrees), 3 (rotated 90 degrees 
--counter-clockwise). 
--           flags       -   0 For normal display, Or combination of flags 
--defined above. 
-- Return Value: 
--           None. 
-- Comments: 
--           This function is designed To render annotations that are 
--user-interactive, which are widget annotation (For FormFields) And popup 
--annotation. 
--           With FPDF_ANNOT flag, this function will render popup annotation 
--when users mouse-hover on non-widget annotation. Regardless of FPDF_ANNOT flag, *this function will always render widget annotations For FormFields. 
--           In order To implement the FormFill functions, implementation should 
--call this function after rendering functions, such As FPDF_RenderPageBitmap Or 
--FPDF_RenderPageBitmap_Start, finish rendering the page contents. 
FPDF_FFLDraw(hHandle.i, bitmap.i, page.i, start_x.l, start_y.l, size_x.l, size_y.l, rotate.l, flags.l) 
 
FPDF_FFLRecord(hHandle.i, recorder.i, page.i, start_x.l, start_y.l, size_x.l, size_y.l, rotate.l, flags.l) 
 
-- Function: FPDF_HasXFAField 
--                      This method is designed To check whether a pdf document has XFA fields. 
-- Parameters: 
--                      document                -       Handle To document. 
--Returned by FPDF_LoadDocument function. 
--                      docType                 -       Document type defined As 
--DOCTYPE_xxx. 
-- Return Value: 
--                      TRUE indicates that the input document has XFA fields, *otherwise FALSE. 
--DLLEXPORT FPDF_BOOL STDCALL FPDF_HasXFAField(document.i, int* docType) 
FPDF_HasXFAField.l(document.i, *docType.long) 
 
-- Function: FPDF_LoadXFA 
--          If the document consists of XFA fields, there should call this 
--method To load XFA fields. 
-- Parameters: 
--          document        -   Handle To document. Returned by 
--FPDF_LoadDocument function. 
-- Return Value: 
--          TRUE indicates success,otherwise FALSE. 
--DLLEXPORT FPDF_BOOL STDCALL FPDF_LoadXFA(document.i) 
FPDF_LoadXFA.l(document.i) 
 
-- Function: FPDF_Widget_Undo 
--          This method will implement the undo feature For the specified xfa 
--field. 
-- Parameters: 
--          document        -   Handle To document. Returned by 
--FPDF_LoadDocument function. 
--          hWidget         -   Handle To the xfa field. 
-- Return Value: 
--          None. 
FPDF_Widget_Undo(document.i, hWidget.i) 
 
-- Function: FPDF_Widget_Redo 
--          This method will implement the redo feature For the specified xfa 
--field. 
-- Parameters: 
--          document        -   Handle To document. Returned by 
--FPDF_LoadDocument function. 
--          hWidget         -   Handle To the xfa field. 
-- Return Value: 
--          None. 
FPDF_Widget_Redo(document.i, hWidget.i) 
 
-- Function: FPDF_Widget_SelectAll 
--          This method will implement the Select all feature For the specified 
--xfa field. 
-- Parameters: 
--          document        -   Handle To document. Returned by 
--FPDF_LoadDocument function. 
--          hWidget         -   Handle To the xfa field. 
-- Return Value: 
--          None. 
FPDF_Widget_SelectAll(document.i, hWidget.i) 
 
-- Function: FPDF_Widget_Copy 
--          This method will implement the copy feature For the specified xfa 
--field. 
-- Parameters: 
--          document        -   Handle To document. Returned by 
--FPDF_LoadDocument function. 
--          hWidget         -   Handle To the xfa field. 
--          wsText          -   Pointer To Data buffer To receive the copied 
--data, in UTF-16LE format. 
--          size            -   The Data buffer size. 
-- Return Value: 
--          None. 
FPDF_Widget_Copy(document.i, hWidget.i, *wsText.string, *size.Integer) 
 
-- Function: FPDF_Widget_Cut 
--          This method will implement the cut feature For the specified xfa 
--field. 
-- Parameters: 
--          document        -   Handle To document. Returned by 
--FPDF_LoadDocument function. 
--          hWidget         -   Handle To the xfa field. 
--          wsText          -   Pointer To Data buffer To receive the cut 
--data,in UTF-16LE format. 
--          size            -   The Data buffer size,Not the byte number. 
-- Return Value: 
--          None. 
FPDF_Widget_Cut(document.i, hWidget.i, *wsText.string, *size.Integer) 
 
-- Function: FPDF_Widget_Paste 
--          This method will implement the paste feature For the specified xfa 
--field. 
-- Parameters: 
--          document        -   Handle To document. Returned by 
--FPDF_LoadDocument function. 
--          hWidget         -   Handle To the xfa field. 
--          wsText          -   The paste text buffer, in UTF-16LE format. 
--          size            -   The Data buffer size,Not the byte number. 
-- Return Value: 
--          None. 
FPDF_Widget_Paste(document.i, hWidget.i, *wsText.string, size.i) 
 
-- Function: FPDF_Widget_ReplaceSpellCheckWord 
--          This method will implement the spell check feature For the specified 
--xfa field. 
-- Parameters: 
--          document        -   Handle To document. Returned by 
--FPDF_LoadDocument function. 
--          hWidget         -   Handle To the xfa field. 
--          x               -   The x value of the specified point. 
--          y               -   The y value of the specified point. 
--          bsText          -   The text buffer needed To be speck check, in 
--UTF-16LE format. 
-- Return Value: 
--          None. 
FPDF_Widget_ReplaceSpellCheckWord(document.i, hWidget.i, x.f, y.f, *bsText.p-ascii) 
 
-- Function: FPDF_Widget_GetSpellCheckWords 
--          This method will implement the spell check feature For the specified 
--xfa field. 
-- Parameters: 
--          document        -   Handle To document. Returned by 
--FPDF_LoadDocument function. 
--          hWidget         -   Handle To the xfa field. 
--          x               -   The x value of the specified point. 
--          y               -   The y value of the specified point. 
--          stringHandle    -   Pointer To FPDF_STRINGHANDLE To receive the 
--speck check text buffer, in UTF-16LE format. 
-- Return Value: 
--          None. 
FPDF_Widget_GetSpellCheckWords(document.i, hWidget.i, x.f, y.f, *stringHandle.string) 
 
-- Function: FPDF_StringHandleCounts 
--          This method will get the count of the text buffer. 
-- Parameters: 
--          stringHandle    -   Pointer To FPDF_STRINGHANDLE. 
-- Return Value: 
--          None. 
--DLLEXPORT int STDCALL FPDF_StringHandleCounts(void *stringHandle) 
FPDF_StringHandleCounts.l(*stringHandle.string) 
 
-- Function: FPDF_StringHandleGetStringByIndex 
--          This method will get the specified index of the text buffer. 
-- Parameters: 
--          stringHandle    -   Pointer To FPDF_STRINGHANDLE. 
--          index           -   The specified index of text buffer. 
--          bsText          -   Pointer To Data buffer To receive the textbuffer, in UTF-16LE format. 
--          size            -   The byte size of Data buffer. 
-- Return Value: 
--          TRUE indicates success, otherwise FALSE. 
--DLLEXPORT FPDF_BOOL STDCALL FPDF_StringHandleGetStringByIndex(void *stringHandle, index.l, FPDF_BYTESTRING bsText, *size.Integer) 
FPDF_StringHandleGetStringByIndex.l(*stringHandle.string, index.l, *bsText.p-ascii, *size.Integer) 
 
-- Function: FPDF_StringHandleRelease 
--          This method will release the FPDF_STRINGHANDLE. 
-- Parameters: 
--          stringHandle    -   Pointer To FPDF_STRINGHANDLE. 
-- Return Value: 
--          None. 
FPDF_StringHandleRelease(*stringHandle.string) 
 
-- Function: FPDF_StringHandleAddString 
--          This method will add the specified text buffer. 
-- Parameters: 
--          stringHandle    -   Pointer To FPDF_STRINGHANDLE. 
--          bsText          -   Pointer To Data buffer of the text buffer, in 
--UTF-16LE format. 
--          size            -   The byte size of Data buffer. 
-- Return Value: 
--          TRUE indicates success, otherwise FALSE. 
--DLLEXPORT FPDF_BOOL STDCALL FPDF_StringHandleAddString(void *stringHandle, FPDF_BYTESTRING bsText, size.i) 
FPDF_StringHandleAddString.l(*stringHandle.string, *bsText.p-ascii, size.i) 
 
 
 
-- Import pages to a FPDF_DOCUMENT. 
-- 
--   dest_doc  - The destination document for the pages. 
--   src_doc   - The document to be imported. 
--   pagerange - A page range string, Such as "1,3,5-7". If |pagerange| is NULL, all pages from |src_doc| are imported. 
--   index     - The page index to insert at. 
-- 
-- Returns TRUE on success. 
--DLLEXPORT FPDF_BOOL STDCALL FPDF_ImportPages(FPDF_DOCUMENT dest_doc.i, FPDF_DOCUMENT src_doc, FPDF_BYTESTRING pagerange, index.l) 
FPDF_ImportPages.l(dest_doc.i, src_doc.i, *pagerange.p-ascii, index.l) 
 
-- Copy the viewer preferences from |src_doc| into |dest_doc|. 
-- 
--   dest_doc - Document to write the viewer preferences into. 
--   src_doc  - Document to read the viewer preferences from. 
-- 
-- Returns TRUE on success. 
--DLLEXPORT FPDF_BOOL STDCALL FPDF_CopyViewerPreferences(FPDF_DOCUMENT dest_doc, FPDF_DOCUMENT src_doc) 
FPDF_CopyViewerPreferences.l(dest_doc.i, src_doc.i) 
 
 
-- Function: FPDF_RenderPageBitmap_Start 
--          Start to render page contents to a device independent bitmap 
--          progressively. 
-- Parameters: 
--          bitmap      -   Handle to the device independent bitmap (as the 
--          output buffer). 
--                          Bitmap handle can be created by FPDFBitmap_Create 
--                          function. 
--          page        -   Handle to the page. Returned by FPDF_LoadPage 
--          function. 
--          start_x     -   Left pixel position of the display area in the 
--          bitmap coordinate. 
--          start_y     -   Top pixel position of the display area in the bitmap 
--          coordinate. 
--          size_x      -   Horizontal size (in pixels) for displaying the page. 
--          size_y      -   Vertical size (in pixels) for displaying the page. 
--          rotate      -   Page orientation: 0 (normal), 1 (rotated 90 degrees 
--          clockwise), --                              2 (rotated 180 degrees), 3 (rotated 90 degrees 
--                              counter-clockwise). 
--          flags       -   0 for normal display, or combination of flags 
--                          defined in fpdfview.h. With FPDF_ANNOT flag, it 
--                          renders all annotations that does not require 
--                          user-interaction, which are all annotations except 
--                          widget and popup annotations. 
--          pause       -   The IFSDK_PAUSE interface.A callback mechanism 
--          allowing the page rendering process 
-- Return value: 
--          Rendering Status. See flags for progressive process status for the 
--          details. 
-- 
--DLLEXPORT int STDCALL FPDF_RenderPageBitmap_Start(void *bitmap, void *page, start_x.l, start_y.l, size_x.l, size_y.l, rotate.l, flags.l, IFSDK_PAUSE* pause) 
FPDF_RenderPageBitmap_Start.l(bitmap.i, page.i, start_x.l, start_y.l, size_x.l, size_y.l, rotate.l, flags.l, *pause.IFSDK_PAUSE) 
 
-- Function: FPDF_RenderPage_Continue 
--          Continue rendering a PDF page. 
-- Parameters: 
--          page        -   Handle to the page. Returned by FPDF_LoadPage 
--          function. 
--          pause       -   The IFSDK_PAUSE interface.A callback mechanism 
--          allowing the page rendering process 
--                          to be paused before it's finished. This can be NULL 
--                          if you don't want to pause. 
-- Return value: 
--          The rendering status. See flags for progressive process status for 
--          the details. 
--DLLEXPORT int STDCALL FPDF_RenderPage_Continue(void *page, IFSDK_PAUSE* pause) 
FPDF_RenderPage_Continue.l(page.i, *pause.IFSDK_PAUSE) 
 
-- Function: FPDF_RenderPage_Close 
--          Release the resource allocate during page rendering. Need to be 
--          called after finishing rendering or 
--          cancel the rendering. 
-- Parameters: 
--          page        -   Handle to the page. Returned by FPDF_LoadPage 
--          function. 
-- Return value: 
--          NULL 
FPDF_RenderPage_Close(page.i) 
 
 
 
 
-- Function: FPDF_SaveAsCopy 
--          Saves the copy of specified document in custom way. 
-- Parameters: 
--          document        -   Handle to document. Returned by 
--          FPDF_LoadDocument and FPDF_CreateNewDocument. 
--          pFileWrite      -   A pointer to a custom file write structure. 
--          flags           -   The creating flags. 
-- Return value: 
--          TRUE for succeed, FALSE for failed. 
-- 
--DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveAsCopy(document.i, FPDF_FILEWRITE* pFileWrite, flags.i) 
FPDF_SaveAsCopy.l(document.i, *pFileWrite.FPDF_FILEWRITE, flags.i) 
 
-- Function: FPDF_SaveWithVersion 
--          Same as function ::FPDF_SaveAsCopy, except the file version of the 
--          saved document could be specified by user. 
-- Parameters: 
--          document        -   Handle to document. 
--          pFileWrite      -   A pointer to a custom file write structure. 
--          flags           -   The creating flags. 
--          fileVersion     -   The PDF file version. File version: 14 for 1.4, --          15 for 1.5, ... 
-- Return value: 
--          TRUE if succeed, FALSE if failed. 
-- 
--DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveWithVersion(document.i, FPDF_FILEWRITE* pFileWrite, flags.i, fileVersion.l) 
FPDF_SaveWithVersion.l(document.i, *pFileWrite.FPDF_FILEWRITE, flags.i, fileVersion.l) 
 
 
 
 
-- Get the character index in |text_page| internal character list. 
-- 
--   text_page  - a text page information structure. 
--   nTextIndex - index of the text returned from |FPDFText_GetText|. 
-- 
-- Returns the index of the character in internal character list. -1 for error. 
--DLLEXPORT int STDCALL FPDFText_GetCharIndexFromTextIndex(void *text_page, nTextIndex.l) 
FPDFText_GetCharIndexFromTextIndex.l(text_page.i, nTextIndex.l) 
 
 
-- Function: FPDF_GetDefaultTTFMap 
--    Returns a pointer To the Default character set To TT Font name Map. The 
--    Map is an Array of FPDF_CharsetFontMap structs, With its End indicated 
--    by a { -1, NULL } entry. 
-- Parameters: 
--     None. 
-- Return Value: 
--     Pointer To the Charset Font Map. 
--DLLEXPORT const FPDF_CharsetFontMap* STDCALL FPDF_GetDefaultTTFMap() 
FPDF_GetDefaultTTFMap.i() 
 
-- Function: FPDF_AddInstalledFont 
--          Add a system font To the List in Foxit SDK. 
-- Comments: 
--          This function is only called during the system font List building 
--process. 
-- Parameters: 
--          mapper          -   Opaque pointer To Foxit font mapper 
--          face            -   The font face name 
--          charset         -   Font character set. See above defined constants. 
-- Return Value: 
--          None. 
FPDF_AddInstalledFont(mapper.i, *face.p-ascii, charset.l) 
 
-- Function: FPDF_SetSystemFontInfo 
--          Set the system font info Interface into Foxit SDK 
-- Comments: 
--          Platform support implementation should implement required methods of 
--FFDF_SYSFONTINFO Interface, *          then call this function during SDK initialization process. 
-- Parameters: 
--          pFontInfo       -   Pointer To a FPDF_SYSFONTINFO Structure 
-- Return Value: 
--          None 
FPDF_SetSystemFontInfo(*pFontInfo.FPDF_SYSFONTINFO) 
 
-- Function: FPDF_GetDefaultSystemFontInfo 
--          Get Default system font info Interface For current platform 
-- Comments: 
--          For some platforms Foxit SDK implement a Default version of system 
--font info Interface. 
--          The Default implementation can be used in FPDF_SetSystemFontInfo 
--function. 
-- Parameters: 
--          None 
-- Return Value: 
--          Pointer To a FPDF_SYSFONTINFO Structure describing the Default 
--interface. 
--          Or NULL If the platform doesn't have a default interface. 
--          Application should call FPDF_FreeMemory To free the returned 
--pointer. 
--DLLEXPORT FPDF_SYSFONTINFO* STDCALL FPDF_GetDefaultSystemFontInfo() 
FPDF_GetDefaultSystemFontInfo.i() 
 
 
 
 
-- Function: FPDFText_LoadPage 
--          Prepare information about all characters in a page. 
-- Parameters: 
--          page    -   Handle to the page. Returned by FPDF_LoadPage function 
--          (in FPDFVIEW module). 
-- Return value: 
--          A handle to the text page information structure. 
--          NULL if something goes wrong. 
-- Comments: 
--          Application must call FPDFText_ClosePage to release the text page 
--          information. 
-- 
--DLLEXPORT FPDF_TEXTPAGE STDCALL FPDFText_LoadPage(void *page) 
FPDFText_LoadPage.i(page.i) 
 
-- Function: FPDFText_ClosePage 
--          Release all resources allocated for a text page information 
--          structure. 
-- Parameters: 
--          text_page   -   Handle to a text page information structure. 
--          Returned by FPDFText_LoadPage function. 
-- Return Value: 
--          None. 
-- 
FPDFText_ClosePage(text_page.i) 
 
-- Function: FPDFText_CountChars 
--          Get number of characters in a page. 
-- Parameters: 
--          text_page   -   Handle to a text page information structure. 
--          Returned by FPDFText_LoadPage function. 
-- Return value: 
--          Number of characters in the page. Return -1 for error. 
--          Generated characters, like additional space characters, new line 
--          characters, are also counted. 
-- Comments: 
--          Characters in a page form a "stream", inside the stream, each 
--          character has an index. 
--          We will use the index parameters in many of FPDFTEXT functions. The 
--          first character in the page 
--          has an index value of zero. 
-- 
--DLLEXPORT int STDCALL FPDFText_CountChars(void *text_page) 
FPDFText_CountChars.l(text_page.i) 
 
-- Function: FPDFText_GetUnicode 
--          Get Unicode of a character in a page. 
-- Parameters: 
--          text_page   -   Handle to a text page information structure. 
--          Returned by FPDFText_LoadPage function. 
--          index       -   Zero-based index of the character. 
-- Return value: 
--          The Unicode of the particular character. 
--          If a character is not encoded in Unicode and Foxit engine can't 
--          convert to Unicode, the return value will be zero. 
-- 
--DLLEXPORT unsigned int STDCALL FPDFText_GetUnicode(void *text_page, index.l) 
FPDFText_GetUnicode.l(text_page.i, index.l) 
 
-- Function: FPDFText_GetFontSize 
--          Get the font size of a particular character. 
-- Parameters: 
--          text_page   -   Handle to a text page information structure. 
--          Returned by FPDFText_LoadPage function. 
--          index       -   Zero-based index of the character. 
-- Return value: 
--          The font size of the particular character, measured in points (about 
--          1/72 inch). 
--          This is the typographic size of the font (so called "em size"). 
-- 
--DLLEXPORT double STDCALL FPDFText_GetFontSize(void *text_page, index.l) 
FPDFText_GetFontSize.d(text_page.i, index.l) 
 
-- Function: FPDFText_GetCharBox 
--          Get bounding box of a particular character. 
-- Parameters: 
--          text_page   -   Handle to a text page information structure. 
--          Returned by FPDFText_LoadPage function. 
--          index       -   Zero-based index of the character. 
--          left        -   Pointer to a double number receiving left position 
--          of the character box. 
--          right       -   Pointer to a double number receiving right position 
--          of the character box. 
--          bottom      -   Pointer to a double number receiving bottom position 
--          of the character box. 
--          top         -   Pointer to a double number receiving top position of 
--          the character box. 
-- Return Value: 
--          None. 
-- Comments: 
--          All positions are measured in PDF "user space". 
-- 
FPDFText_GetCharBox(text_page.i, index.l, *left.Double, *right.Double, *bottom.Double, *top.Double) 
 
-- Function: FPDFText_GetCharIndexAtPos 
--          Get the index of a character at or nearby a certain position on the 
--          page. 
-- Parameters: 
--          text_page   -   Handle to a text page information structure. 
--          Returned by FPDFText_LoadPage function. 
--          x           -   X position in PDF "user space". 
--          y           -   Y position in PDF "user space". 
--          xTolerance  -   An x-axis tolerance value for character hit 
--          detection, in point unit. 
--          yTolerance  -   A y-axis tolerance value for character hit 
--          detection, in point unit. 
-- Return Value: 
--          The zero-based index of the character at, or nearby the point (x,y). 
--          If there is no character at or nearby the point, return value will 
--          be -1. 
--          If an error occurs, -3 will be returned. 
-- 
--DLLEXPORT int STDCALL FPDFText_GetCharIndexAtPos(void *text_page, x.d, y.d, double xTolerance, double yTolerance) 
FPDFText_GetCharIndexAtPos.l(text_page.i, x.d, y.d, xTolerance.d, yTolerance.d) 
 
-- Function: FPDFText_GetText 
--          Extract unicode text string from the page. 
-- Parameters: 
--          text_page   -   Handle to a text page information structure. 
--          Returned by FPDFText_LoadPage function. 
--          start_index -   Index for the start characters. 
--          count       -   Number of characters to be extracted. 
--          result      -   A buffer (allocated by application) receiving the 
--          extracted unicodes. 
--                          The size of the buffer must be able to hold the 
--                          number of characters plus a terminator. 
-- Return Value: 
--          Number of characters written into the result buffer, including the 
--          trailing terminator. 
-- Comments: 
--          This function ignores characters without unicode information. 
-- 
--DLLEXPORT int STDCALL FPDFText_GetText(void *text_page, start_index.l, count.l, *result.long) 
FPDFText_GetText.l(text_page.i, start_index.l, count.l, *result.long) 
 
-- Function: FPDFText_CountRects 
--          Count number of rectangular areas occupied by a segment of texts. 
-- Parameters: 
--          text_page   -   Handle to a text page information structure. 
--          Returned by FPDFText_LoadPage function. 
--          start_index -   Index for the start characters. 
--          count       -   Number of characters. 
-- Return value: 
--          Number of rectangles. Zero for error. 
-- Comments: 
--          This function, along with FPDFText_GetRect can be used by 
--          applications to detect the position 
--          on the page for a text segment, so proper areas can be highlighted 
--          or something. 
--          FPDFTEXT will automatically merge small character boxes into bigger 
--          one if those characters 
--          are on the same line and use same font settings. 
-- 
--DLLEXPORT int STDCALL FPDFText_CountRects(void *text_page, start_index.l, count.l) 
FPDFText_CountRects.l(text_page.i, start_index.l, count.l) 
 
-- Function: FPDFText_GetRect 
--          Get a rectangular area from the result generated by 
--          FPDFText_CountRects. 
-- Parameters: 
--          text_page   -   Handle to a text page information structure. 
--          Returned by FPDFText_LoadPage function. 
--          rect_index  -   Zero-based index for the rectangle. 
--          left        -   Pointer to a double value receiving the rectangle 
--          left boundary. 
--          top         -   Pointer to a double value receiving the rectangle 
--          top boundary. 
--          right       -   Pointer to a double value receiving the rectangle 
--          right boundary. 
--          bottom      -   Pointer to a double value receiving the rectangle 
--          bottom boundary. 
-- Return Value: 
--          None. 
-- 
FPDFText_GetRect(text_page.i, rect_index.l, *left.Double, *top.Double, *right.Double, *bottom.Double) 
 
-- Function: FPDFText_GetBoundedText 
--          Extract unicode text within a rectangular boundary on the page. 
-- Parameters: 
--          text_page   -   Handle to a text page information structure. 
--          Returned by FPDFText_LoadPage function. 
--          left        -   Left boundary. 
--          top         -   Top boundary. 
--          right       -   Right boundary. 
--          bottom      -   Bottom boundary. 
--          buffer      -   A unicode buffer. 
--          buflen      -   Number of characters (not bytes) for the buffer, excluding an additional terminator. 
-- Return Value: 
--          If buffer is NULL or buflen is zero, return number of characters 
--          (not bytes) of text present within 
--          the rectangle, excluding a terminating NUL.  Generally you should 
--          pass a buffer at least one larger 
--          than this if you want a terminating NUL, which will be provided if 
--          space is available. 
--          Otherwise, return number of characters copied into the buffer, including the terminating NUL 
--          when space for it is available. 
-- Comment: 
--          If the buffer is too small, as much text as will fit is copied into 
--          it. 
-- 
--DLLEXPORT int STDCALL FPDFText_GetBoundedText(void *text_page, left.d, top.d, right.d, bottom.d, unsigned short* buffer, buflen.l) 
FPDFText_GetBoundedText.l(text_page.i, left.d, top.d, right.d, bottom.d, *buffer.string, buflen.l) 
 
 
-- Function: FPDFText_FindStart 
--          Start a search. 
-- Parameters: 
--          text_page   -   Handle to a text page information structure. 
--          Returned by FPDFText_LoadPage function. 
--          findwhat    -   A unicode match pattern. 
--          flags       -   Option flags. 
--          start_index -   Start from this character. -1 for end of the page. 
-- Return Value: 
--          A handle for the search context. FPDFText_FindClose must be called 
--          to release this handle. 
-- 
--DLLEXPORT FPDF_SCHHANDLE STDCALL FPDFText_FindStart(void *text_page, FPDF_WIDESTRING findwhat, flags.i, start_index.l) 
FPDFText_FindStart.i(text_page.i, *findwhat.string, flags.i, start_index.l) 
 
-- Function: FPDFText_FindNext 
--          Search in the direction from page start to end. 
-- Parameters: 
--          handle      -   A search context handle returned by 
--          FPDFText_FindStart. 
-- Return Value: 
--          Whether a match is found. 
-- 
--DLLEXPORT FPDF_BOOL STDCALL FPDFText_FindNext(void *handle) 
FPDFText_FindNext.l(handle.i) 
 
-- Function: FPDFText_FindPrev 
--          Search in the direction from page end to start. 
-- Parameters: 
--          handle      -   A search context handle returned by 
--          FPDFText_FindStart. 
-- Return Value: 
--          Whether a match is found. 
-- 
--DLLEXPORT FPDF_BOOL STDCALL FPDFText_FindPrev(void *handle) 
FPDFText_FindPrev.l(handle.i) 
 
-- Function: FPDFText_GetSchResultIndex 
--          Get the starting character index of the search result. 
-- Parameters: 
--          handle      -   A search context handle returned by 
--          FPDFText_FindStart. 
-- Return Value: 
--          Index for the starting character. 
-- 
--DLLEXPORT int STDCALL FPDFText_GetSchResultIndex(void *handle) 
FPDFText_GetSchResultIndex.l(handle.i) 
 
-- Function: FPDFText_GetSchCount 
--          Get the number of matched characters in the search result. 
-- Parameters: 
--          handle      -   A search context handle returned by 
--          FPDFText_FindStart. 
-- Return Value: 
--          Number of matched characters. 
-- 
--DLLEXPORT int STDCALL FPDFText_GetSchCount(void *handle) 
FPDFText_GetSchCount.l(handle.i) 
 
-- Function: FPDFText_FindClose 
--          Release a search context. 
-- Parameters: 
--          handle      -   A search context handle returned by 
--          FPDFText_FindStart. 
-- Return Value: 
--          None. 
-- 
FPDFText_FindClose(handle.i) 
 
-- Function: FPDFLink_LoadWebLinks 
--          Prepare information about weblinks in a page. 
-- Parameters: 
--          text_page   -   Handle to a text page information structure. 
--          Returned by FPDFText_LoadPage function. 
-- Return Value: 
--          A handle to the page's links information structure. 
--          NULL if something goes wrong. 
-- Comments: 
--          Weblinks are those links implicitly embedded in PDF pages. PDF also 
--          has a type of 
--          annotation called "link", FPDFTEXT doesn't deal with that kind of 
--          link. 
--          FPDFTEXT weblink feature is useful for automatically detecting links 
--          in the page 
--          contents. For example, things like "http:--www.foxitsoftware.com" 
--          will be detected, --          so applications can allow user to click on those characters to 
--          activate the link, --          even the PDF doesn't come with link annotations. 
-- 
--          FPDFLink_CloseWebLinks must be called to release resources. 
-- 
--DLLEXPORT FPDF_PAGELINK STDCALL FPDFLink_LoadWebLinks(void *text_page) 
FPDFLink_LoadWebLinks.i(text_page.i) 
 
-- Function: FPDFLink_CountWebLinks 
--          Count number of detected web links. 
-- Parameters: 
--          link_page   -   Handle returned by FPDFLink_LoadWebLinks. 
-- Return Value: 
--          Number of detected web links. 
-- 
--DLLEXPORT int STDCALL FPDFLink_CountWebLinks(void *link_page) 
FPDFLink_CountWebLinks.l(link_page.i) 
 
-- Function: FPDFLink_GetURL 
--          Fetch the URL information for a detected web link. 
-- Parameters: 
--          link_page   -   Handle returned by FPDFLink_LoadWebLinks. 
--          link_index  -   Zero-based index for the link. 
--          buffer      -   A unicode buffer for the result. 
--          buflen      -   Number of characters (not bytes) for the buffer, --                          including an additional terminator. 
-- Return Value: 
--          If |buffer| is NULL or |buflen| is zero, return the number of 
--          characters (not bytes) needed to buffer the result (an additional 
--          terminator is included in this count). 
--          Otherwise, copy the result into |buffer|, truncating at |buflen| if 
--          the result is too large to fit, and return the number of characters 
--          actually copied into the buffer (the additional terminator is also 
--          included in this count). 
--          If |link_index| does not correspond to a valid link, then the result 
--          is an empty string. 
-- 
--DLLEXPORT int STDCALL FPDFLink_GetURL(void *link_page, int link_index, unsigned short* buffer, buflen.l) 
FPDFLink_GetURL.l(link_page.i, link_index.l, *buffer.string, buflen.l) 
 
-- Function: FPDFLink_CountRects 
--          Count number of rectangular areas for the link. 
-- Parameters: 
--          link_page   -   Handle returned by FPDFLink_LoadWebLinks. 
--          link_index  -   Zero-based index for the link. 
-- Return Value: 
--          Number of rectangular areas for the link.  If |link_index| does 
--          not correspond to a valid link, then 0 is returned. 
-- 
--DLLEXPORT int STDCALL FPDFLink_CountRects(void *link_page, int link_index) 
FPDFLink_CountRects.l(link_page.i, link_index.l) 
 
-- Function: FPDFLink_GetRect 
--          Fetch the boundaries of a rectangle for a link. 
-- Parameters: 
--          link_page   -   Handle returned by FPDFLink_LoadWebLinks. 
--          link_index  -   Zero-based index for the link. 
--          rect_index  -   Zero-based index for a rectangle. 
--          left        -   Pointer to a double value receiving the rectangle 
--                          left boundary. 
--          top         -   Pointer to a double value receiving the rectangle 
--                          top boundary. 
--          right       -   Pointer to a double value receiving the rectangle 
--                          right boundary. 
--          bottom      -   Pointer to a double value receiving the rectangle 
--                          bottom boundary. 
-- Return Value: 
--          None.  If |link_index| does not correspond to a valid link, then 
--          |left|, |top|, |right|, and |bottom| remain unmodified. 
-- 
FPDFLink_GetRect(link_page.i, link_index.l, rect_index.l, *left.Double, *top.Double, *right.Double, *bottom.Double) 
 
-- Function: FPDFLink_CloseWebLinks 
--          Release resources used by weblink feature. 
-- Parameters: 
--          link_page   -   Handle returned by FPDFLink_LoadWebLinks. 
-- Return Value: 
--          None. 
-- 
FPDFLink_CloseWebLinks(link_page.i) 
 
 
 
--  Set "MediaBox" entry To the page dictionary. 
-- @param[in] page   - Handle To a page. 
-- @param[in] left   - The left of the rectangle. 
-- @param[in] bottom - The bottom of the rectangle. 
-- @param[in] right  - The right of the rectangle. 
-- @param[in] top    - The top of the rectangle. 
-- @retval None. 
FPDFPage_SetMediaBox(page.i, left.f, bottom.f, right.f, top.f) 
 
--  Set "CropBox" entry To the page dictionary. 
-- @param[in] page   - Handle To a page. 
-- @param[in] left   - The left of the rectangle. 
-- @param[in] bottom - The bottom of the rectangle. 
-- @param[in] right  - The right of the rectangle. 
-- @param[in] top    - The top of the rectangle. 
-- @retval None. 
FPDFPage_SetCropBox(page.i, left.f, bottom.f, right.f, top.f) 
 
--  Get "MediaBox" entry from the page dictionary. 
-- @param[in] page   - Handle To a page. 
-- @param[in] left   - Pointer To a double value receiving the left of the 
-- rectangle. 
-- @param[in] bottom - Pointer To a double value receiving the bottom of the 
-- rectangle. 
-- @param[in] right  - Pointer To a double value receiving the right of the 
-- rectangle. 
-- @param[in] top    - Pointer To a double value receiving the top of the 
-- rectangle. 
-- @retval True If success,Else fail. 
--DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GetMediaBox(void *page, float* left, float* bottom, float* right, float* top) 
FPDFPage_GetMediaBox.l(page.i, *left.float, *bottom.float, *right.float, *top.float) 
 
--  Get "CropBox" entry from the page dictionary. 
-- @param[in] page   - Handle To a page. 
-- @param[in] left   - Pointer To a double value receiving the left of the 
-- rectangle. 
-- @param[in] bottom - Pointer To a double value receiving the bottom of the 
-- rectangle. 
-- @param[in] right  - Pointer To a double value receiving the right of the 
-- rectangle. 
-- @param[in] top    - Pointer To a double value receiving the top of the 
-- rectangle. 
-- @retval True If success,Else fail. 
--DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GetCropBox(void *page, float* left, float* bottom, float* right, float* top) 
FPDFPage_GetCropBox.l(page.i, *left.float, *bottom.float, *right.float, *top.float) 
 
-- Transform the whole page With a specified matrix, then clip the page content 
-- region. 
-- 
-- @param[in] page        - A page handle. 
-- @param[in] matrix      - The transform matrix. 
-- @param[in] clipRect    - A rectangle page area To be clipped. 
-- @Note. This function will transform the whole page, And would take effect To 
-- all the objects in the page. 
--DLLEXPORT FPDF_BOOL STDCALL FPDFPage_TransFormWithClip(void *page, FS_MATRIX* matrix, FS_RECTF* clipRect) 
FPDFPage_TransFormWithClip.l(page.i, *matrix.FS_MATRIX, *clipRect.FS_RECTF) 
 
-- Transform (scale, rotate, shear, move) the clip path of page object. 
-- @param[in] page_object - Handle To a page object. Returned by 
-- FPDFPageObj_NewImageObj. 
-- @param[in] a  - The coefficient "a" of the matrix. 
-- @param[in] b  - The coefficient "b" of the matrix. 
-- @param[in] c  - The coefficient "c" of the matrix. 
-- @param[in] d  - The coefficient "d" of the matrix. 
-- @param[in] e  - The coefficient "e" of the matrix. 
-- @param[in] f  - The coefficient "f" of the matrix. 
-- @retval None. 
FPDFPageObj_TransformClipPath(page_object.i, a.d, b.d, c.d, d.d, e.d, f.d) 
 
-- Create a new clip path, With a rectangle inserted. 
-- 
-- @param[in] left   - The left of the clip box. 
-- @param[in] bottom - The bottom of the clip box. 
-- @param[in] right  - The right of the clip box. 
-- @param[in] top    - The top of the clip box. 
-- @retval a handle To the clip path. 
--DLLEXPORT FPDF_CLIPPATH STDCALL FPDF_CreateClipPath(float left, float bottom, float right, float top) 
FPDF_CreateClipPath.i(left.f, bottom.f, right.f, top.f) 
 
-- Destroy the clip path. 
-- 
-- @param[in] clipPath - A handle To the clip path. 
-- Destroy the clip path. 
-- @retval None. 
FPDF_DestroyClipPath(clipPath.i) 
 
-- Clip the page content, the page content that outside the clipping region 
-- become invisible. 
-- 
-- @param[in] page        - A page handle. 
-- @param[in] clipPath    - A handle To the clip path. 
-- @Note. A clip path will be inserted before the page content stream Or content 
-- Array. In this way, the page content will be clipped 
-- by this clip path. 
FPDFPage_InsertClipPath(page.i, clipPath.i) 
*/ 
 
public constant 
	PFPDF_LIBRARY_CONFIG = C_POINTER, 
	PFPDF_FILEACCESS = C_POINTER, 
	PFX_DOWNLOADHINTS = C_POINTER, 
	PFS_QUADPOINTSF = C_POINTER, 
	PFPDF_FORMFILLINFO = C_POINTER, 
	PIFSDK_PAUSE = C_POINTER, 
	PFPDF_FILEWRITE = C_POINTER, 
	PFPDF_SYSFONTINFO = C_POINTER, 
	PFX_FILEAVAIL = C_POINTER, 
	PUNSUPPORT_INFO = C_POINTER, 
	PFS_RECTF = C_POINTER, 
	PFS_MATRIX = C_POINTER, 
	DOUBLEPOINTER = C_POINTER, 
	FLOATPOINTER = C_POINTER, 
	LONGPOINTER = C_POINTER, 
	INTEGERPOINTER = C_POINTER, 
	FUNCPOINTER = C_POINTER, 
	STRINGPOINTER = C_POINTER, 
	WSTRINGPOINTER = C_POINTER, 
	BUFFERPOINTER = C_POINTER, 
	BYTEPOINTER = C_POINTER, 
	PFPDF_BSTR = C_POINTER, 
	C_LPSTR = C_POINTER 
 
public atom pdfium = open_dll("pdfium.dll") 
public constant   
  FPDF_InitLibrary = define_c_proc(pdfium, "FPDF_InitLibrary", {}), 
  FPDF_InitLibraryWithConfig = define_c_proc(pdfium, "FPDF_InitLibraryWithConfig", {PFPDF_LIBRARY_CONFIG}), 
  FPDF_DestroyLibrary = define_c_proc(pdfium, "FPDF_DestroyLibrary", {}), 
  FPDF_SetSandBoxPolicy = define_c_proc(pdfium, "FPDF_SetSandBoxPolicy", {C_INT, C_DWORD}), 
  FPDF_SetTypefaceAccessibleFunc = define_c_proc(pdfium, "FPDF_SetTypefaceAccessibleFunc", {FUNCPOINTER}), 
  FPDF_SetPrintTextWithGDI = define_c_proc(pdfium, "FPDF_SetPrintTextWithGDI", {C_DWORD}), 
  FPDF_LoadCustom = define_c_proc(pdfium, "FPDF_LoadCustomC_INT", {PFPDF_FILEACCESS, C_LPSTR=0}), 
  FPDF_RenderPage = define_c_proc(pdfium, "FPDF_RenderPage", {C_INT, C_INT, C_DWORD, C_DWORD, C_DWORD, C_DWORD, C_DWORD, C_DWORD}), 
  FPDF_RenderPageBitmap = define_c_proc(pdfium, "FPDF_RenderPageBitmap", {C_INT, C_INT, C_DWORD, C_DWORD, C_DWORD, C_DWORD, C_DWORD, C_DWORD}), 
  FPDF_ClosePage = define_c_proc(pdfium, "FPDF_ClosePage", {C_INT}), 
  FPDF_CloseDocument = define_c_proc(pdfium, "FPDF_CloseDocument", {C_INT}), 
  FPDF_DeviceToPage = define_c_proc(pdfium, "FPDF_DeviceToPage", {C_INT, C_DWORD, C_DWORD, C_DWORD, C_DWORD, C_DWORD, C_DWORD, C_DWORD, DOUBLEPOINTER, DOUBLEPOINTER}), 
  FPDF_PageToDevice = define_c_proc(pdfium, "FPDF_PageToDevice", {C_INT, C_DWORD, C_DWORD, C_DWORD, C_DWORD, C_DWORD, DOUBLEPOINTER, DOUBLEPOINTER, LONGPOINTER, LONGPOINTER}), 
  FPDFBitmap_FillRect = define_c_proc(pdfium, "FPDFBitmap_FillRect", {C_INT, C_DWORD, C_DWORD, C_DWORD, C_DWORD, C_INT}), 
  FPDFBitmap_Destroy = define_c_proc(pdfium, "FPDFBitmap_Destroy", {C_INT}), 
  FPDFAvail_Destroy = define_c_proc(pdfium, "FPDFAvail_Destroy", {PFX_FILEAVAIL}), 
  FPDFPage_Delete = define_c_proc(pdfium, "FPDFPage_Delete", {C_INT, C_DWORD}), 
  FPDFPage_SetRotation = define_c_proc(pdfium, "FPDFPage_SetRotation", {C_INT, C_DWORD}), 
  FPDFPage_InsertObject = define_c_proc(pdfium, "FPDFPage_InsertObject", {C_INT, C_INT}), 
  FPDFPageObj_Transform = define_c_proc(pdfium, "FPDFPageObj_Transform", {C_INT, C_DOUBLE, C_DOUBLE, C_DOUBLE, C_DOUBLE, C_DOUBLE, C_DOUBLE}), 
  FPDFPage_TransformAnnots = define_c_proc(pdfium, "FPDFPage_TransformAnnots", {C_INT, C_DOUBLE, C_DOUBLE, C_DOUBLE, C_DOUBLE, C_DOUBLE, C_DOUBLE}), 
  FPDFDOC_ExitFormFillEnvironment = define_c_proc(pdfium, "FPDFDOC_ExitFormFillEnvironment", {C_HANDLE}), 
  FORM_OnAfterLoadPage = define_c_proc(pdfium, "FORM_OnAfterLoadPage", {C_INT, C_HANDLE}), 
  FORM_OnBeforeClosePage = define_c_proc(pdfium, "FORM_OnBeforeClosePage", {C_INT, C_HANDLE}), 
  FORM_DoDocumentJSAction = define_c_proc(pdfium, "FORM_DoDocumentJSAction", {C_HANDLE}), 
  FORM_DoDocumentOpenAction = define_c_proc(pdfium, "FORM_DoDocumentOpenAction", {C_HANDLE}), 
  FORM_DoDocumentAAction = define_c_proc(pdfium, "FORM_DoDocumentAAction", {C_HANDLE, C_DWORD}), 
  FORM_DoPageAAction = define_c_proc(pdfium, "FORM_DoPageAAction", {C_INT, C_HANDLE, C_DWORD}), 
  FPDF_SetFormFieldHighlightColor = define_c_proc(pdfium, "FPDF_SetFormFieldHighlightColor", {C_HANDLE, C_DWORD, C_INT}), 
  FPDF_SetFormFieldHighlightAlpha = define_c_proc(pdfium, "FPDF_SetFormFieldHighlightAlpha", {C_HANDLE, C_UCHAR}), 
  FPDF_RemoveFormFieldHighlight = define_c_proc(pdfium, "FPDF_RemoveFormFieldHighlight", {C_HANDLE}), 
  FPDF_FFLDraw = define_c_proc(pdfium, "FPDF_FFLDraw", {C_HANDLE, C_INT, C_INT, C_DWORD, C_DWORD, C_DWORD, C_DWORD, C_DWORD, C_DWORD}), 
  FPDF_FFLRecord = define_c_proc(pdfium, "FPDF_FFLRecord", {C_HANDLE, C_INT, C_INT, C_DWORD, C_DWORD, C_DWORD, C_DWORD, C_DWORD, C_DWORD}), 
  FPDF_Widget_Undo = define_c_proc(pdfium, "FPDF_Widget_Undo", {C_INT, C_INT}), 
  FPDF_Widget_Redo = define_c_proc(pdfium, "FPDF_Widget_Redo", {C_INT, C_INT}), 
  FPDF_Widget_SelectAll = define_c_proc(pdfium, "FPDF_Widget_SelectAll", {C_INT, C_INT}), 
  FPDF_Widget_Copy = define_c_proc(pdfium, "FPDF_Widget_Copy", {C_INT, C_INT, WSTRINGPOINTER, INTEGERPOINTER}), 
  FPDF_Widget_Cut = define_c_proc(pdfium, "FPDF_Widget_Cut", {C_INT, C_INT, WSTRINGPOINTER, INTEGERPOINTER}), 
  FPDF_Widget_Paste = define_c_proc(pdfium, "FPDF_Widget_Paste", {C_INT, C_INT, WSTRINGPOINTER, C_INT}), 
  FPDF_Widget_ReplaceSpellCheckWord = define_c_proc(pdfium, "FPDF_Widget_ReplaceSpellCheckWord", {C_INT, C_INT, C_FLOAT, C_FLOAT, C_LPSTR}), 
  FPDF_Widget_GetSpellCheckWords = define_c_proc(pdfium, "FPDF_Widget_GetSpellCheckWords", {C_INT, C_INT, C_FLOAT, C_FLOAT, C_LPSTR}), 
  FPDF_StringHandleRelease = define_c_proc(pdfium, "FPDF_StringHandleRelease", {C_LPSTR}), 
  FPDF_RenderPage_Close = define_c_proc(pdfium, "FPDF_RenderPage_Close", {C_INT}), 
  FPDF_AddInstalledFont = define_c_proc(pdfium, "FPDF_AddInstalledFont", {C_INT, C_LPSTR, C_DWORD}), 
  FPDF_SetSystemFontInfo = define_c_proc(pdfium, "FPDF_SetSystemFontInfo", {PFPDF_SYSFONTINFO}), 
  FPDFText_ClosePage = define_c_proc(pdfium, "FPDFText_ClosePage", {C_INT}), 
  FPDFText_GetCharBox = define_c_proc(pdfium, "FPDFText_GetCharBox", {C_INT, C_DWORD, DOUBLEPOINTER, DOUBLEPOINTER, DOUBLEPOINTER, DOUBLEPOINTER}), 
  FPDFText_GetRect = define_c_proc(pdfium, "FPDFText_GetRect", {C_INT, C_DWORD, DOUBLEPOINTER, DOUBLEPOINTER, DOUBLEPOINTER, DOUBLEPOINTER}), 
  FPDFText_FindClose = define_c_proc(pdfium, "FPDFText_FindClose", {C_HANDLE}), 
  FPDFLink_GetRect = define_c_proc(pdfium, "FPDFLink_GetRect", {C_INT, C_DWORD, C_DWORD, DOUBLEPOINTER, DOUBLEPOINTER, DOUBLEPOINTER, DOUBLEPOINTER}), 
  FPDFLink_CloseWebLinks = define_c_proc(pdfium, "FPDFLink_CloseWebLinks", {C_INT}), 
  FPDFPage_SetMediaBox = define_c_proc(pdfium, "FPDFPage_SetMediaBox", {C_INT, C_FLOAT, C_FLOAT, C_FLOAT, C_FLOAT}), 
  FPDFPage_SetCropBox = define_c_proc(pdfium, "FPDFPage_SetCropBox", {C_INT, C_FLOAT, C_FLOAT, C_FLOAT, C_FLOAT}), 
  FPDFPageObj_TransformClipPath = define_c_proc(pdfium, "FPDFPageObj_TransformClipPath", {C_INT, C_DOUBLE, C_DOUBLE, C_DOUBLE, C_DOUBLE, C_DOUBLE, C_DOUBLE}), 
  FPDF_DestroyClipPath = define_c_proc(pdfium, "FPDF_DestroyClipPath", {C_INT}), 
  FPDFPage_InsertClipPath = define_c_proc(pdfium, "FPDFPage_InsertClipPath", {C_INT, C_INT}), 
  FPDF_LoadDocument = define_c_func(pdfium, "FPDF_LoadDocument", {C_LPSTR, C_LPSTR}, C_HANDLE), 
  FPDF_LoadMemDocument = define_c_func(pdfium, "FPDF_LoadMemDocument", {BUFFERPOINTER, C_DWORD, C_LPSTR}, C_HANDLE), 
  FPDF_LoadCustomDocument = define_c_func(pdfium, "FPDF_LoadCustomDocument", {PFPDF_FILEACCESS, C_LPSTR}, C_HANDLE), 
  FPDF_GetFileVersion = define_c_func(pdfium, "FPDF_GetFileVersion", {C_INT, LONGPOINTER}, C_HANDLE), 
  FPDF_GetLastError = define_c_func(pdfium, "FPDF_GetLastError", {}, C_HANDLE), 
  FPDF_GetDocPermissions = define_c_func(pdfium, "FPDF_GetDocPermissions", {C_INT}, C_HANDLE), 
  FPDF_GetSecurityHandlerRevision = define_c_func(pdfium, "FPDF_GetSecurityHandlerRevision", {C_INT}, C_HANDLE), 
  FPDF_GetPageCount = define_c_func(pdfium, "FPDF_GetPageCount", {C_INT}, C_HANDLE), 
  FPDF_LoadPage = define_c_func(pdfium, "FPDF_LoadPage", {C_INT, C_DWORD}, C_HANDLE), 
  FPDF_GetPageWidth = define_c_func(pdfium, "FPDF_GetPageWidth", {C_INT}, C_DOUBLE), 
  FPDF_GetPageHeight = define_c_func(pdfium, "FPDF_GetPageHeight", {C_INT}, C_DOUBLE), 
  FPDF_GetPageSizeByIndex = define_c_func(pdfium, "FPDF_GetPageSizeByIndex", {C_INT, C_DWORD, DOUBLEPOINTER, DOUBLEPOINTER}, C_HANDLE), 
  FPDF_RenderPageSkp = define_c_func(pdfium, "FPDF_RenderPageSkp", {C_INT, C_DWORD, C_DWORD}, C_HANDLE), 
  FPDFBitmap_Create = define_c_func(pdfium, "FPDFBitmap_Create", {C_DWORD, C_DWORD, C_DWORD}, C_HANDLE), 
  FPDFBitmap_CreateEx = define_c_func(pdfium, "FPDFBitmap_CreateEx", {C_DWORD, C_DWORD, C_DWORD, BUFFERPOINTER, C_DWORD}, C_HANDLE), 
  FPDFBitmap_GetBuffer = define_c_func(pdfium, "FPDFBitmap_GetBuffer", {C_INT}, C_HANDLE), 
  FPDFBitmap_GetWidth = define_c_func(pdfium, "FPDFBitmap_GetWidth", {C_INT}, C_HANDLE), 
  FPDFBitmap_GetHeight = define_c_func(pdfium, "FPDFBitmap_GetHeight", {C_INT}, C_HANDLE), 
  FPDFBitmap_GetStride = define_c_func(pdfium, "FPDFBitmap_GetStride", {C_INT}, C_HANDLE), 
  FPDF_VIEWERREF_GetPrintScaling = define_c_func(pdfium, "FPDF_VIEWERREF_GetPrintScaling", {C_INT}, C_HANDLE), 
  FPDF_VIEWERREF_GetNumCopies = define_c_func(pdfium, "FPDF_VIEWERREF_GetNumCopies", {C_INT}, C_HANDLE), 
  FPDF_VIEWERREF_GetPrintPageRange = define_c_func(pdfium, "FPDF_VIEWERREF_GetPrintPageRange", {C_INT}, C_HANDLE), 
  FPDF_VIEWERREF_GetDuplex = define_c_func(pdfium, "FPDF_VIEWERREF_GetDuplex", {C_INT}, C_HANDLE), 
  FPDF_CountNamedDests = define_c_func(pdfium, "FPDF_CountNamedDests", {C_INT}, C_HANDLE), 
  FPDF_GetNamedDestByName = define_c_func(pdfium, "FPDF_GetNamedDestByName", {C_INT, C_LPSTR}, C_HANDLE), 
  FPDF_GetNamedDest = define_c_func(pdfium, "FPDF_GetNamedDest", {C_INT, C_DWORD, BUFFERPOINTER, LONGPOINTER}, C_HANDLE), 
  FPDF_BStr_Init = define_c_func(pdfium, "FPDF_BStr_Init", {PFPDF_BSTR}, C_HANDLE), 
  FPDF_BStr_Set = define_c_func(pdfium, "FPDF_BStr_Set", {PFPDF_BSTR, C_LPSTR, C_DWORD}, C_HANDLE), 
  FPDF_BStr_Clear = define_c_func(pdfium, "FPDF_BStr_Clear", {PFPDF_BSTR}, C_HANDLE), 
  FPDFAvail_Create = define_c_func(pdfium, "FPDFAvail_Create", {PFX_FILEAVAIL, PFPDF_FILEACCESS}, C_HANDLE), 
  FPDFAvail_IsDocAvail = define_c_func(pdfium, "FPDFAvail_IsDocAvail", {C_INT, PFX_DOWNLOADHINTS}, C_HANDLE), 
  FPDFAvail_GetDocument = define_c_func(pdfium, "FPDFAvail_GetDocument", {C_INT, C_LPSTR}, C_HANDLE), 
  FPDFAvail_GetFirstPageNum = define_c_func(pdfium, "FPDFAvail_GetFirstPageNum", {C_INT}, C_HANDLE), 
  FPDFAvail_IsPageAvail = define_c_func(pdfium, "FPDFAvail_IsPageAvail", {C_INT, C_DWORD, PFX_DOWNLOADHINTS}, C_HANDLE), 
  FPDFAvail_IsFormAvail = define_c_func(pdfium, "FPDFAvail_IsFormAvail", {C_INT, PFX_DOWNLOADHINTS}, C_HANDLE), 
  FPDFAvail_IsLinearized = define_c_func(pdfium, "FPDFAvail_IsLinearized", {C_INT}, C_HANDLE), 
  FPDFBookmark_GetFirstChild = define_c_func(pdfium, "FPDFBookmark_GetFirstChild", {C_INT, C_INT}, C_HANDLE), 
  FPDFBookmark_GetNextSibling = define_c_func(pdfium, "FPDFBookmark_GetNextSibling", {C_INT, C_INT}, C_HANDLE), 
  FPDFBookmark_GetTitle = define_c_func(pdfium, "FPDFBookmark_GetTitle", {C_INT, BUFFERPOINTER, C_INT}, C_HANDLE), 
  FPDFBookmark_Find = define_c_func(pdfium, "FPDFBookmark_Find", {C_INT, C_LPSTR}, C_HANDLE), 
  FPDFBookmark_GetDest = define_c_func(pdfium, "FPDFBookmark_GetDest", {C_INT, C_INT}, C_HANDLE), 
  FPDFBookmark_Get = define_c_func(pdfium, "FPDFBookmark_Get", {C_INT}, C_HANDLE), 
  FPDFAction_GetType = define_c_func(pdfium, "FPDFAction_GetType", {C_INT}, C_HANDLE), 
  FPDFAction_GetDest = define_c_func(pdfium, "FPDFAction_GetDest", {C_INT, C_INT}, C_HANDLE), 
  FPDFAction_GetFilePath = define_c_func(pdfium, "FPDFAction_GetFilePath", {C_INT, BUFFERPOINTER, C_INT}, C_HANDLE), 
  FPDFAction_GetURIPath = define_c_func(pdfium, "FPDFAction_GetURIPath", {C_INT, C_INT, BUFFERPOINTER, C_INT}, C_HANDLE), 
  FPDFDest_GetPageIndex = define_c_func(pdfium, "FPDFDest_GetPageIndex", {C_INT, C_INT}, C_HANDLE), 
  FPDFLink_GetLinkAtPoint = define_c_func(pdfium, "FPDFLink_GetLinkAtPoint", {C_INT, C_DOUBLE, C_DOUBLE}, C_HANDLE), 
  FPDFLink_GetLinkZOrderAtPoint = define_c_func(pdfium, "FPDFLink_GetLinkZOrderAtPoint", {C_INT, C_DOUBLE, C_DOUBLE}, C_HANDLE), 
  FPDFLink_GetDest = define_c_func(pdfium, "FPDFLink_GetDest", {C_INT, C_INT}, C_HANDLE), 
  FPDFLink_Get = define_c_func(pdfium, "FPDFLink_Get", {C_INT}, C_HANDLE), 
  FPDFLink_Enumerate = define_c_func(pdfium, "FPDFLink_Enumerate", {C_INT, LONGPOINTER, C_INT}, C_HANDLE), 
  FPDFLink_GetAnnotRect = define_c_func(pdfium, "FPDFLink_GetAnnotRect", {C_INT, PFS_RECTF}, C_HANDLE), 
  FPDFLink_CountQuadPoints = define_c_func(pdfium, "FPDFLink_CountQuadPoints", {C_INT}, C_HANDLE), 
  FPDFLink_GetQuadPoints = define_c_func(pdfium, "FPDFLink_GetQuadPoints", {C_INT, C_DWORD, PFS_QUADPOINTSF}, C_HANDLE), 
  FPDF_GetMetaText = define_c_func(pdfium, "FPDF_GetMetaText", {C_INT, BYTEPOINTER, BUFFERPOINTER, C_INT}, C_HANDLE), 
  FPDF_CreateNewDocument = define_c_func(pdfium, "FPDF_CreateNewDocument", {}, C_HANDLE), 
  FPDFPage_New = define_c_func(pdfium, "FPDFPage_New", {C_INT, C_DWORD, C_DOUBLE, C_DOUBLE}, C_HANDLE), 
  FPDFPage_GetRotation = define_c_func(pdfium, "FPDFPage_GetRotation", {C_INT}, C_HANDLE), 
  FPDFPage_CountObject = define_c_func(pdfium, "FPDFPage_CountObject", {C_INT}, C_HANDLE), 
  FPDFPage_GetObject = define_c_func(pdfium, "FPDFPage_GetObject", {C_INT, C_DWORD}, C_HANDLE), 
  FPDFPage_HasTransparency = define_c_func(pdfium, "FPDFPage_HasTransparency", {C_INT}, C_HANDLE), 
  FPDFPage_GenerateContent = define_c_func(pdfium, "FPDFPage_GenerateContent", {C_INT}, C_HANDLE), 
  FPDFPageObj_HasTransparency = define_c_func(pdfium, "FPDFPageObj_HasTransparency", {C_INT}, C_HANDLE), 
  FPDFPageObj_NewImgeObj = define_c_func(pdfium, "FPDFPageObj_NewImgeObj", {C_INT}, C_HANDLE), 
  FPDFImageObj_LoadJpegFile = define_c_func(pdfium, "FPDFImageObj_LoadJpegFile", {C_INT, C_DWORD, C_INT, PFPDF_FILEACCESS}, C_HANDLE), 
  FPDFImageObj_SetBitmap = define_c_func(pdfium, "FPDFImageObj_SetBitmap", {INTEGERPOINTER, C_DWORD, C_INT, C_INT}, C_HANDLE), 
  FSDK_SetUnSpObjProcessHandler = define_c_func(pdfium, "FSDK_SetUnSpObjProcessHandler", {PUNSUPPORT_INFO}, C_HANDLE), 
  FPDFDoc_GetPageMode = define_c_func(pdfium, "FPDFDoc_GetPageMode", {C_INT}, C_HANDLE), 
  FPDFPage_Flatten = define_c_func(pdfium, "FPDFPage_Flatten", {C_INT, C_DWORD}, C_HANDLE), 
  FPDFDOC_InitFormFillEnvironment = define_c_func(pdfium, "FPDFDOC_InitFormFillEnvironment", {C_INT, PFPDF_FORMFILLINFO}, C_HANDLE), 
  FORM_OnMouseMove = define_c_func(pdfium, "FORM_OnMouseMove", {C_HANDLE, C_INT, C_DWORD, C_DOUBLE, C_DOUBLE}, C_HANDLE), 
  FORM_OnLButtonDown = define_c_func(pdfium, "FORM_OnLButtonDown", {C_HANDLE, C_INT, C_DWORD, C_DOUBLE, C_DOUBLE}, C_HANDLE), 
  FORM_OnLButtonUp = define_c_func(pdfium, "FORM_OnLButtonUp", {C_HANDLE, C_INT, C_DWORD, C_DOUBLE, C_DOUBLE}, C_HANDLE), 
  FORM_OnRButtonDown = define_c_func(pdfium, "FORM_OnRButtonDown", {C_HANDLE, C_INT, C_DWORD, C_DOUBLE, C_DOUBLE}, C_HANDLE), 
  FORM_OnRButtonUp = define_c_func(pdfium, "FORM_OnRButtonUp", {C_HANDLE, C_INT, C_DWORD, C_DOUBLE, C_DOUBLE}, C_HANDLE), 
  FORM_OnKeyDown = define_c_func(pdfium, "FORM_OnKeyDown", {C_HANDLE, C_INT, C_DWORD, C_DWORD}, C_HANDLE), 
  FORM_OnKeyUp = define_c_func(pdfium, "FORM_OnKeyUp", {C_HANDLE, C_INT, C_DWORD, C_DWORD}, C_HANDLE), 
  FORM_OnChar = define_c_func(pdfium, "FORM_OnChar", {C_HANDLE, C_INT, C_DWORD, C_DWORD}, C_HANDLE), 
  FORM_ForceToKillFocus = define_c_func(pdfium, "FORM_ForceToKillFocus", {C_HANDLE}, C_HANDLE), 
  FPDFPage_HasFormFieldAtPoint = define_c_func(pdfium, "FPDFPage_HasFormFieldAtPoint", {C_HANDLE, C_INT, C_DOUBLE, C_DOUBLE}, C_HANDLE), 
  FPDPage_HasFormFieldAtPoint = define_c_func(pdfium, "FPDPage_HasFormFieldAtPoint", {C_HANDLE, C_INT, C_DOUBLE, C_DOUBLE}, C_HANDLE), 
  FPDFPage_FormFieldZOrderAtPoint = define_c_func(pdfium, "FPDFPage_FormFieldZOrderAtPoint", {C_HANDLE, C_INT, C_DOUBLE, C_DOUBLE}, C_HANDLE), 
  FPDF_HasXFAField = define_c_func(pdfium, "FPDF_HasXFAField", {C_INT, LONGPOINTER}, C_HANDLE), 
  FPDF_LoadXFA = define_c_func(pdfium, "FPDF_LoadXFA", {C_INT}, C_HANDLE), 
  FPDF_StringHandleCounts = define_c_func(pdfium, "FPDF_StringHandleCounts", {C_LPSTR}, C_HANDLE), 
  FPDF_StringHandleGetStringByIndex = define_c_func(pdfium, "FPDF_StringHandleGetStringByIndex", {C_LPSTR, C_DWORD, C_LPSTR, INTEGERPOINTER}, C_HANDLE), 
  FPDF_StringHandleAddString = define_c_func(pdfium, "FPDF_StringHandleAddString", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), 
  FPDF_ImportPages = define_c_func(pdfium, "FPDF_ImportPages", {C_INT, C_INT, C_LPSTR, C_DWORD}, C_HANDLE), 
  FPDF_CopyViewerPreferences = define_c_func(pdfium, "FPDF_CopyViewerPreferences", {C_INT, C_INT}, C_HANDLE), 
  FPDF_RenderPageBitmap_Start = define_c_func(pdfium, "FPDF_RenderPageBitmap_Start", {C_INT, C_INT, C_DWORD, C_DWORD, C_DWORD, C_DWORD, C_DWORD, C_DWORD, PIFSDK_PAUSE}, C_HANDLE), 
  FPDF_RenderPage_Continue = define_c_func(pdfium, "FPDF_RenderPage_Continue", {C_INT, PIFSDK_PAUSE}, C_HANDLE), 
  FPDF_SaveAsCopy = define_c_func(pdfium, "FPDF_SaveAsCopy", {C_INT, PFPDF_FILEWRITE, C_INT}, C_HANDLE), 
  FPDF_SaveWithVersion = define_c_func(pdfium, "FPDF_SaveWithVersion", {C_INT, PFPDF_FILEWRITE, C_INT, C_DWORD}, C_HANDLE), 
  FPDFText_GetCharIndexFromTextIndex = define_c_func(pdfium, "FPDFText_GetCharIndexFromTextIndex", {C_INT, C_DWORD}, C_HANDLE), 
  FPDF_GetDefaultTTFMap = define_c_func(pdfium, "FPDF_GetDefaultTTFMap", {}, C_HANDLE), 
  FPDF_GetDefaultSystemFontInfo = define_c_func(pdfium, "FPDF_GetDefaultSystemFontInfo", {}, C_HANDLE), 
  FPDFText_Load = define_c_func(pdfium, "FPDFText_Load", {C_INT}, C_HANDLE), 
  FPDFText_CountChars = define_c_func(pdfium, "FPDFText_CountChars", {C_INT}, C_HANDLE), 
  FPDFText_GetUnicode = define_c_func(pdfium, "FPDFText_GetUnicode", {C_INT, C_DWORD}, C_HANDLE), 
  FPDFText_GetFontSize = define_c_func(pdfium, "FPDFText_GetFontSize", {C_INT, C_DWORD}, C_DOUBLE), 
  FPDFText_GetCharIndexAtPos = define_c_func(pdfium, "FPDFText_GetCharIndexAtPos", {C_INT, C_DOUBLE, C_DOUBLE, C_DOUBLE, C_DOUBLE}, C_HANDLE), 
  FPDFText_GetText = define_c_func(pdfium, "FPDFText_GetText", {C_INT, C_DWORD, C_DWORD, LONGPOINTER}, C_HANDLE), 
  FPDFText_CountRects = define_c_func(pdfium, "FPDFText_CountRects", {C_INT, C_DWORD, C_DWORD}, C_HANDLE), 
  FPDFText_GetBoundedText = define_c_func(pdfium, "FPDFText_GetBoundedText", {C_INT, C_DOUBLE, C_DOUBLE, C_DOUBLE, C_DOUBLE, STRINGPOINTER, C_DWORD}, C_HANDLE), 
  FPDFText_FindStart = define_c_func(pdfium, "FPDFText_FindStart", {C_INT, STRINGPOINTER, C_INT, C_DWORD}, C_HANDLE), 
  FPDFText_FindNext = define_c_func(pdfium, "FPDFText_FindNext", {C_HANDLE}, C_HANDLE), 
  FPDFText_FindPrev = define_c_func(pdfium, "FPDFText_FindPrev", {C_HANDLE}, C_HANDLE), 
  FPDFText_GetSchResultIndex = define_c_func(pdfium, "FPDFText_GetSchResultIndex", {C_HANDLE}, C_HANDLE), 
  FPDFText_GetSchCount = define_c_func(pdfium, "FPDFText_GetSchCount", {C_HANDLE}, C_HANDLE), 
  FPDFLink_LoadWebLinks = define_c_func(pdfium, "FPDFLink_LoadWebLinks", {C_INT}, C_HANDLE), 
  FPDFLink_CountWebLinks = define_c_func(pdfium, "FPDFLink_CountWebLinks", {C_INT}, C_HANDLE), 
  FPDFLink_GetURL = define_c_func(pdfium, "FPDFLink_GetURL", {C_INT, C_DWORD, STRINGPOINTER, C_DWORD}, C_HANDLE), 
  FPDFLink_CountRects = define_c_func(pdfium, "FPDFLink_CountRects", {C_INT, C_DWORD}, C_HANDLE), 
  FPDFPage_GetMediaBox = define_c_func(pdfium, "FPDFPage_GetMediaBox", {C_INT, FLOATPOINTER, FLOATPOINTER, FLOATPOINTER, FLOATPOINTER}, C_HANDLE), 
  FPDFPage_GetCropBox = define_c_func(pdfium, "FPDFPage_GetCropBox", {C_INT, FLOATPOINTER, FLOATPOINTER, FLOATPOINTER, FLOATPOINTER}, C_HANDLE), 
  FPDFPage_TransFormWithClip = define_c_func(pdfium, "FPDFPage_TransFormWithClip", {C_INT, PFS_MATRIX, PFS_RECTF}, C_HANDLE), 
  FPDF_CreateClipPath = define_c_func(pdfium, "FPDF_CreateClipPath", {C_FLOAT, C_FLOAT, C_FLOAT, C_FLOAT}, C_HANDLE) 
new topic     » topic index » view message » categorize

2. Re: wrapper for pdfium

a short test.

how do i allocate memory for doubles and float and then read it as numbers?

OK i found out. sorry.

object result = 0 
atom width = allocate(8), height = allocate(8) 
atom docHandle 
 
c_proc(FPDF_InitLibrary) 
constant book = allocate_string("3658071664.pdf") 
docHandle = c_func(FPDF_LoadDocument, {book, 0}) 
delete(book) 
integer j = c_func(FPDF_GetPageCount, {docHandle}) 
integer i = c_func(FPDF_GetPageSizeByIndex, {docHandle, 100, width, height}) 
c_proc(FPDF_CloseDocument,{docHandle}) 
c_proc(FPDF_DestroyLibrary) 
 
 
?j 
?i 
object result = 0 
atom width = allocate(8) 
atom height = allocate(8) 
atom docHandle 
 
c_proc(FPDF_InitLibrary) 
constant book = mem:allocate_string("3658071664.pdf") 
docHandle = c_func(FPDF_LoadDocument, {book, 0}) 
delete(book) 
integer j = c_func(FPDF_GetPageCount, {docHandle}) 
integer i = c_func(FPDF_GetPageSizeByIndex, {docHandle, 100, width, height}) 
c_proc(FPDF_CloseDocument,{docHandle}) 
c_proc(FPDF_DestroyLibrary) 
 
 
?j 
?i 
?float64_to_atom(peek({width, 8})) 
?float64_to_atom(peek({height, 8})) 
delete(width) delete(height)  
wait_key() 
new topic     » goto parent     » topic index » view message » categorize

3. Re: wrapper for pdfium

Please stop posting such large swaths of code on the forum. This is exactly what Pastey is for (see the link under Misc Menu to the right).

-Greg

new topic     » goto parent     » topic index » view message » categorize

4. Re: wrapper for pdfium

ghaberek said...

Please stop posting such large swaths of code on the forum. This is exactly what Pastey is for

Unfortunately, the pastey has no history or search capability. Anything pasted before http://openeuphoria.org/pastey/288.wc is lost.

I wish i could buy a clue how to use pdfium on the 1000's of pdf i have.

new topic     » goto parent     » topic index » view message » categorize

5. Re: wrapper for pdfium

i use it to dissect research papers and make them more usable for me (search able).

new topic     » goto parent     » topic index » view message » categorize

6. Re: wrapper for pdfium

katsmeow said...

Unfortunately, the pastey has no history or search capability. Anything pasted before http://openeuphoria.org/pastey/288.wc is lost.

You can view pastey history via the recent tab.

E.g. http://openeuphoria.org/recent.wc?page=19&per_page=20&news=0&forum=0&wiki=0&ticket=0&pastey=1

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu