#ifndef _FS_PDFDOC_C_H_
#define _FS_PDFDOC_C_H_

#ifdef __cplusplus
extern "C" {
#endif

#include "fx_basic_c.h"
#include "fx_stream_c.h"
#include "fs_file_c.h"
#include "fs_pdfpage_c.h"
#include "fs_watermark_c.h"

typedef struct _FSStdEncryptData FSStdEncryptData;

typedef struct _FSCertificateEncryptData FSCertificateEncryptData;

typedef struct _FSDRMEncryptData FSDRMEncryptData;

typedef struct _FSRMSEncryptData FSRMSEncryptData;

typedef struct _FSCustomEncryptData FSCustomEncryptData;

typedef struct _FSHeaderFooter FSHeaderFooter;

typedef struct _FSTiledWatermarkSettings FSTiledWatermarkSettings;


typedef enum _FSPasswordType {
e_FSPwdInvalid   =  0,
e_FSPwdNoPassword  =  1,
e_FSPwdUser  =  2,
e_FSPwdOwner  =  3,
}FSPasswordType;



typedef enum _FSEncryptType {
e_FSEncryptTypeEncryptUnknown   =  -1,
e_FSEncryptNone   =  0,
e_FSEncryptPassword  =  1,
e_FSEncryptCertificate  =  2,
e_FSEncryptFoxitDRM  =  3,
e_FSEncryptCustom  =  4,
e_FSEncryptRMS  =  5,
e_FSEncryptCDRM  =  6,
}FSEncryptType;



typedef enum _FSUserPermissions {
e_FSPermPrint = 0x0004,
e_FSPermModify  = 0x0008,
e_FSPermExtract = 0x0010,
e_FSPermAnnotForm = 0x0020,
e_FSPermFillForm = 0x0100,
e_FSPermExtractAccess = 0x0200,
e_FSPermAssemble = 0x0400,
e_FSPermPrintHigh = 0x0800,
}FSUserPermissions;



typedef enum _FSSaveFlags {
e_FSSaveFlagsSaveFlagNormal      =  0,
e_FSSaveFlagIncremental    =  0x0001,
e_FSSaveFlagNoOriginal    =  0x0002,
e_FSSaveFlagXRefStream    =  0x0008,
e_FSSaveFlagLinearized    =  0x1000,
e_FSSaveFlagRemoveRedundantObjects = 0x0010,
e_FSSaveFlagNoUpdatingMetadataDateTime = 0x0020,
}FSSaveFlags;



typedef enum _FSImportPageFlags {
e_FSImportPageFlagsImportFlagNormal      =  0,
e_FSImportFlagWithLayers    =  0x0001,
e_FSImportFlagShareStream    =  0x0002,
}FSImportPageFlags;



typedef enum _FSExtractPagesOptions {
e_FSExtractPagesOptionAnnotation =  0x0001,
e_FSExtractPagesOptionStructureTree =  0x0002,
e_FSExtractPagesOptionJavascript = 0x0004,
e_FSExtractPagesOptionOCProperties = 0x0008,
e_FSExtractPagesOptionObjectStream = 0x0010,
e_FSExtractPagesOptionAttachFiles = 0x0020,
e_FSExtractPagesOptionBookmark = 0x0040,
e_FSExtractPagesOptionSignature = 0x0080,
}FSExtractPagesOptions;



typedef enum _FSInsertDocOptions {
e_FSInsertDocOptionAttachments =  0x0001,
e_FSInsertDocOptionBookmark =  0x0002,
}FSInsertDocOptions;



typedef enum _FSDataType {
e_FSForms      =  0x0001,
e_FSAnnots   =  0x0002,
e_FSLinks     =  0x0004,
}FSDataType;



typedef enum _FSDisplayMode {
e_FSDisplayUseNone = 0,
e_FSDisplayUseOutlines = 1,
e_FSDisplayUseThumbs = 2,
e_FSDisplayFullScreen = 3,
e_FSDisplayUseOC = 4,
e_FSDisplayUseAttachment = 5,
}FSDisplayMode;



typedef enum _FSWrapperType {
e_FSWrapperNone =  0,
e_FSWrapperFoxit =  1,
e_FSWrapperPDFV2 =  2,
}FSWrapperType;



typedef enum _FSTiledWatermarkFlags {
e_FSTiledWatermarkFlagsFlagAsPageContents = 0x0000,
e_FSTiledWatermarkFlagsFlagAsAnnot = 0x0001,
e_FSTiledWatermarkFlagsFlagOnTop = 0x0002,
e_FSTiledWatermarkFlagsFlagNoPrint = 0x0004,
e_FSTiledWatermarkFlagsFlagInvisible = 0x0008,
}FSTiledWatermarkFlags;


typedef struct _FSTiledWatermarkSettings {
  float row_space;
  
  float col_space;
  
  float rotation;
  
  int opacity;
  int scale;
  FS_UINT32 flags;
}FSTiledWatermarkSettings;

typedef struct _FSWrapperData {
  int version;
  FS_WSTR type;
  FS_WSTR app_id;
  FS_WSTR uri;
  FS_WSTR description;
}FSWrapperData;

typedef struct _FSPayLoadData {
  float version;
  FS_WSTR crypto_filter;
  FS_WSTR file_name;
  FS_INT64 file_size;
  FS_WSTR description;
}FSPayLoadData;

typedef struct _FSHiddenInfoSettingData {
  FS_BOOL enable_remove_metadata;
  FS_BOOL enable_remove_fileattachment;
  FS_BOOL enable_remove_bookmark;
  FS_BOOL enable_remove_searchIndex;
  FS_BOOL enable_remove_comment;
  FS_BOOL enable_remove_form_fields;
  FS_BOOL enable_remove_hidden_text;
  FS_BOOL enable_remove_hidden_layer;
  FS_BOOL enable_remove_content;
  FS_BOOL enable_remove_link;
  FS_BOOL enable_remove_overlaping;
}FSHiddenInfoSettingData;

typedef struct _FSPageBasicInfo {
  float width;
  float height;
  FSRotation rotation;
}FSPageBasicInfo;

typedef struct _FSEmbeddedFontData {
  FS_WSTR* nonstandard_font_name_array;
  FS_UINT32 nonstandard_font_name_array_length;
  FS_WSTR* standard_font_name_array;
  FS_UINT32 standard_font_name_array_length;
}FSEmbeddedFontData;

typedef struct _FSTableOfContentsConfig {
  FS_WSTR title;
  
  int* bookmark_level_array;
  FS_UINT32 bookmark_level_array_length;
  FS_BOOL is_show_serial_number;
  FS_BOOL include_toc_pages;
}FSTableOfContentsConfig;

FSErrorCode FSDK_PDFDoc_Create(FS_PDFDOC_HANDLE* pdfdoc_return_value);
FSErrorCode FSDK_PDFDoc_Create0(const wchar_t* path, FS_PDFDOC_HANDLE* pdfdoc_return_value);
FSErrorCode FSDK_PDFDoc_Create1(const void* buffer, size_t size, FS_PDFDOC_HANDLE* pdfdoc_return_value);
FSErrorCode FSDK_PDFDoc_Create2(FSReaderCallback* file_read, FS_PDFDOC_HANDLE* pdfdoc_return_value);
FSErrorCode FSDK_PDFDoc_Create3(FSAsyncReaderCallback* file_read, FS_PDFDOC_HANDLE* pdfdoc_return_value);
FSErrorCode FSDK_PDFDoc_Release(FS_PDFDOC_HANDLE pdfdoc_handle);
FSErrorCode FSDK_PDFDoc_IsEmpty(FS_PDFDOC_HANDLE pdfdoc_handle, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_GetFileSize(FS_PDFDOC_HANDLE pdfdoc_handle, FS_UINT64* return_value);
FSErrorCode FSDK_PDFDoc_IsLinearized(FS_PDFDOC_HANDLE pdfdoc_handle, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_IsTaggedPDF(FS_PDFDOC_HANDLE pdfdoc_handle, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_Load(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_BSTR* password);
FSErrorCode FSDK_PDFDoc_LoadW(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_WSTR* password);
FSErrorCode FSDK_PDFDoc_StartLoad(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_BSTR* password, FS_BOOL is_cache_stream,
                                FSPauseCallback* pause, FS_PROGRESSIVE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_StartLoadW(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_WSTR* password, FS_BOOL is_cache_stream,
                                FSPauseCallback* pause, FS_PROGRESSIVE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_GetFirstAvailPageIndex(FS_PDFDOC_HANDLE pdfdoc_handle, int* return_value);
FSErrorCode FSDK_PDFDoc_IsXFA(FS_PDFDOC_HANDLE pdfdoc_handle, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_IsEncrypted(FS_PDFDOC_HANDLE pdfdoc_handle, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_ClearRenderCache(FS_PDFDOC_HANDLE pdfdoc_handle);
FSErrorCode FSDK_PDFDoc_GetPasswordType(FS_PDFDOC_HANDLE pdfdoc_handle, FSPasswordType* return_value);
FSErrorCode FSDK_PDFDoc_GetEncryptionType(FS_PDFDOC_HANDLE pdfdoc_handle, FSEncryptType* return_value);
FSErrorCode FSDK_PDFDoc_CheckPassword(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_BSTR* password, FSPasswordType* return_value);
FSErrorCode FSDK_PDFDoc_CheckPassword0(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_WSTR* password, FSPasswordType* return_value);
FSErrorCode FSDK_PDFDoc_IsUserPassword(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_BSTR* password, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_IsUserPassword0(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_WSTR* password, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_IsOwnerPassword(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_BSTR* password, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_IsOwnerPassword0(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_WSTR* password, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_GetUserPassword(FS_PDFDOC_HANDLE pdfdoc_handle, const char* owner_password, FS_BSTR* return_value);
FSErrorCode FSDK_PDFDoc_GetStdEncryptData(FS_PDFDOC_HANDLE pdfdoc_handle, FSStdEncryptData* return_value);
FSErrorCode FSDK_PDFDoc_GetCertificateEncryptData(FS_PDFDOC_HANDLE pdfdoc_handle, FSCertificateEncryptData* return_value);
FSErrorCode FSDK_PDFDoc_GetDRMEncryptData(FS_PDFDOC_HANDLE pdfdoc_handle, FSDRMEncryptData* return_value);
FSErrorCode FSDK_PDFDoc_GetCustomEncryptData(FS_PDFDOC_HANDLE pdfdoc_handle, FSCustomEncryptData* return_value);
FSErrorCode FSDK_PDFDoc_GetRMSEncryptData(FS_PDFDOC_HANDLE pdfdoc_handle, FSRMSEncryptData* return_value);
FSErrorCode FSDK_PDFDoc_SaveAs(FS_PDFDOC_HANDLE pdfdoc_handle, const wchar_t* file_path, FS_UINT32 save_flags, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_StartSaveAs(FS_PDFDOC_HANDLE pdfdoc_handle, const wchar_t* file_path,
                                  FS_UINT32 save_flags,
                                  FSPauseCallback* pause, FS_PROGRESSIVE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_StartSaveAs0(FS_PDFDOC_HANDLE pdfdoc_handle,  FSWriterCallback* file,
                                  FS_UINT32 save_flags,
                                   FSPauseCallback* pause, FS_PROGRESSIVE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_GetRootBookmark(FS_PDFDOC_HANDLE pdfdoc_handle, FS_BOOKMARK_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_CreateRootBookmark(FS_PDFDOC_HANDLE pdfdoc_handle, FS_BOOKMARK_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_GetBookmarkLevelDepth(FS_PDFDOC_HANDLE pdfdoc_handle, int* return_value);
FSErrorCode FSDK_PDFDoc_RemoveBookmark(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_BOOKMARK_HANDLE bookmark, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_HasLayer(FS_PDFDOC_HANDLE pdfdoc_handle, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_HasHeaderFooter(FS_PDFDOC_HANDLE pdfdoc_handle, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_GetEditableHeaderFooter(FS_PDFDOC_HANDLE pdfdoc_handle, FSHeaderFooter* return_value);
FSErrorCode FSDK_PDFDoc_AddHeaderFooter(FS_PDFDOC_HANDLE pdfdoc_handle, const FSHeaderFooter headerfooter);
FSErrorCode FSDK_PDFDoc_UpdateHeaderFooter(FS_PDFDOC_HANDLE pdfdoc_handle, const FSHeaderFooter headerfooter);
FSErrorCode FSDK_PDFDoc_RemoveAllHeaderFooters(FS_PDFDOC_HANDLE pdfdoc_handle, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_GetPageCount(FS_PDFDOC_HANDLE pdfdoc_handle, int* return_value);
FSErrorCode FSDK_PDFDoc_GetPage(FS_PDFDOC_HANDLE pdfdoc_handle, int index, FS_PDFPAGE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_GetDisplayMode(FS_PDFDOC_HANDLE pdfdoc_handle, FSDisplayMode* return_value);
FSErrorCode FSDK_PDFDoc_SetDisplayMode(FS_PDFDOC_HANDLE pdfdoc_handle, FSDisplayMode display_mode);
FSErrorCode FSDK_PDFDoc_GetCatalog(FS_PDFDOC_HANDLE pdfdoc_handle, FS_PDFDICTIONARY_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_GetTrailer(FS_PDFDOC_HANDLE pdfdoc_handle, FS_PDFDICTIONARY_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_GetInfo(FS_PDFDOC_HANDLE pdfdoc_handle, FS_PDFDICTIONARY_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_GetEncryptDict(FS_PDFDOC_HANDLE pdfdoc_handle, FS_PDFDICTIONARY_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_GetPagesDict(FS_PDFDOC_HANDLE pdfdoc_handle, FS_PDFDICTIONARY_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_GetIndirectObject(FS_PDFDOC_HANDLE pdfdoc_handle, FS_UINT32 object_number, FS_PDFOBJECT_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_AddIndirectObject(FS_PDFDOC_HANDLE pdfdoc_handle,  FS_PDFOBJECT_HANDLE pdf_object, FS_UINT32* return_value);
FSErrorCode FSDK_PDFDoc_DeleteIndirectObject(FS_PDFDOC_HANDLE pdfdoc_handle, FS_UINT32 object_number);
FSErrorCode FSDK_PDFDoc_GetUserPermissions(FS_PDFDOC_HANDLE pdfdoc_handle, FS_UINT32* return_value);
FSErrorCode FSDK_PDFDoc_IsWrapper(FS_PDFDOC_HANDLE pdfdoc_handle, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_GetWrapperType(FS_PDFDOC_HANDLE pdfdoc_handle, FSWrapperType* return_value);
FSErrorCode FSDK_PDFDoc_GetWrapperData(FS_PDFDOC_HANDLE pdfdoc_handle, FSWrapperData* return_value);
FSErrorCode FSDK_PDFDoc_GetWrapperOffset(FS_PDFDOC_HANDLE pdfdoc_handle, FS_INT64* return_value);
FSErrorCode FSDK_PDFDoc_GetPayLoadData(FS_PDFDOC_HANDLE pdfdoc_handle, FSPayLoadData* return_value);
FSErrorCode FSDK_PDFDoc_StartGetPayloadFile(FS_PDFDOC_HANDLE pdfdoc_handle,  FSWriterCallback* payload_file, FSPauseCallback* pause, FS_PROGRESSIVE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_SaveAsWrapperFile(FS_PDFDOC_HANDLE pdfdoc_handle, const wchar_t* file_path, const FSWrapperData* wrapper_data,
                         FS_UINT32 user_permissions, const char* owner_password, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_StartSaveAsPayloadFile(FS_PDFDOC_HANDLE pdfdoc_handle, const wchar_t* file_path, const wchar_t* payload_file_path,
      const wchar_t* crypto_filter, const wchar_t* description, float version,
                                             FS_UINT32 save_flags,
                                             FSPauseCallback* pause, FS_PROGRESSIVE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_HasForm(FS_PDFDOC_HANDLE pdfdoc_handle, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_GetReadingBookmarkCount(FS_PDFDOC_HANDLE pdfdoc_handle, int* return_value);
FSErrorCode FSDK_PDFDoc_GetReadingBookmark(FS_PDFDOC_HANDLE pdfdoc_handle, int index, FS_READINGBOOKMARK_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_InsertReadingBookmark(FS_PDFDOC_HANDLE pdfdoc_handle, int reading_bookmark_index, const wchar_t* title, int dest_page_index, FS_READINGBOOKMARK_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_RemoveReadingBookmark(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_READINGBOOKMARK_HANDLE reading_bookmark, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_GetSignatureCount(FS_PDFDOC_HANDLE pdfdoc_handle, int* return_value);
FSErrorCode FSDK_PDFDoc_GetSignature(FS_PDFDOC_HANDLE pdfdoc_handle, int index, FS_SIGNATURE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_RemoveSignature(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_SIGNATURE_HANDLE signature);
FSErrorCode FSDK_PDFDoc_InsertPage(FS_PDFDOC_HANDLE pdfdoc_handle, int index, float width, float height, FS_PDFPAGE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_InsertPage0(FS_PDFDOC_HANDLE pdfdoc_handle, int index, FSSize size, FS_PDFPAGE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_AddPageFromTemplate(FS_PDFDOC_HANDLE pdfdoc_handle, const wchar_t* template_name, FS_PDFPAGE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_HidePageTemplate(FS_PDFDOC_HANDLE pdfdoc_handle, const wchar_t* template_name, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_RemovePage(FS_PDFDOC_HANDLE pdfdoc_handle, int index, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_RemovePage0(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_PDFPAGE_HANDLE page, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_MovePageTo(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_PDFPAGE_HANDLE page, int dest_index, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_MovePagesTo(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_RANGE_HANDLE page_range, int dest_index, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_StartImportPagesFromFilePath(FS_PDFDOC_HANDLE pdfdoc_handle, int dest_index,
                                                   const wchar_t* src_file_path, const FS_BSTR* password,
                                                   FS_UINT32 flags, const char* layer_name,
                                                   const FS_RANGE_HANDLE page_range,
                                                   FSPauseCallback* pause, FS_PROGRESSIVE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_StartImportPages(FS_PDFDOC_HANDLE pdfdoc_handle, int dest_index, const FS_PDFDOC_HANDLE src_doc,
                                       FS_UINT32 flags, const char* layer_name,
                                       const FS_RANGE_HANDLE page_range,
                                       FSPauseCallback* pause, FS_PROGRESSIVE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_StartExtractPages(FS_PDFDOC_HANDLE pdfdoc_handle, const wchar_t* file_path, FS_UINT32 options, const FS_RANGE_HANDLE page_range,
      FSPauseCallback* pause, FS_PROGRESSIVE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_StartExtractPages0(FS_PDFDOC_HANDLE pdfdoc_handle,  FSWriterCallback* file, FS_UINT32 options, const FS_RANGE_HANDLE page_range,
                                         FSPauseCallback* pause, FS_PROGRESSIVE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_InsertDocument(FS_PDFDOC_HANDLE pdfdoc_handle, int dest_index, const FS_PDFDOC_HANDLE src_doc, FS_UINT32 options);
FSErrorCode FSDK_PDFDoc_InsertDocument0(FS_PDFDOC_HANDLE pdfdoc_handle, int dest_index, const FS_PDFDOC_HANDLE src_doc, FS_UINT32 options, const wchar_t* bookmark_title);
FSErrorCode FSDK_PDFDoc_Sanitize(FS_PDFDOC_HANDLE pdfdoc_handle);
FSErrorCode FSDK_PDFDoc_RemoveHiddenInfo(FS_PDFDOC_HANDLE pdfdoc_handle, const FSHiddenInfoSettingData hidden_data_setting);
FSErrorCode FSDK_PDFDoc_ImportFromFDF(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_FDFDOC_HANDLE fdf_doc, int types, const FS_RANGE_HANDLE page_range, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_ExportToFDF(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_FDFDOC_HANDLE fdf_doc, int types, const FS_RANGE_HANDLE page_range, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_ExportAnnotToFDF(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_ANNOT_HANDLE pdf_annot,const FS_FDFDOC_HANDLE fdf_doc, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_ExportFormFieldsToFDF(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_FIELD_HANDLE* fields_array, FS_UINT32 array_length_field_array, FS_BOOL is_include, const FS_FDFDOC_HANDLE fdf_doc, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_GetHeader(FS_PDFDOC_HANDLE pdfdoc_handle, FS_BSTR* return_value);
FSErrorCode FSDK_PDFDoc_GetFileVersion(FS_PDFDOC_HANDLE pdfdoc_handle, int* return_value);
FSErrorCode FSDK_PDFDoc_SetFileVersion(FS_PDFDOC_HANDLE pdfdoc_handle, int version);
FSErrorCode FSDK_PDFDoc_SetSecurityHandler(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_SECURITYHANDLER_HANDLE handler, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_GetSecurityHandler(FS_PDFDOC_HANDLE pdfdoc_handle, FS_SECURITYHANDLER_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_RemoveSecurity(FS_PDFDOC_HANDLE pdfdoc_handle, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_GetFontCount(FS_PDFDOC_HANDLE pdfdoc_handle, int* return_value);
FSErrorCode FSDK_PDFDoc_GetFont(FS_PDFDOC_HANDLE pdfdoc_handle, int index, FS_FONT_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_GetOpenAction(FS_PDFDOC_HANDLE pdfdoc_handle, FS_ACTION_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_SetOpenAction(FS_PDFDOC_HANDLE pdfdoc_handle,  FS_ACTION_HANDLE action, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_RemoveOpenAction(FS_PDFDOC_HANDLE pdfdoc_handle, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_DoJSOpenAction(FS_PDFDOC_HANDLE pdfdoc_handle, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_IsPortfolio(FS_PDFDOC_HANDLE pdfdoc_handle, FS_BOOL* return_value);
FSErrorCode FSDK_PDFDoc_GetPageBasicInfo(FS_PDFDOC_HANDLE pdfdoc_handle, int index, FSPageBasicInfo* return_value);
FSErrorCode FSDK_PDFDoc_GetAllPageBasicInfo(FS_PDFDOC_HANDLE pdfdoc_handle, FSPageBasicInfo* return_pdfbasicifo_array, FS_UINT32* return_array_length);
FSErrorCode FSDK_PDFDoc_GetEmbeddedFontData(FS_PDFDOC_HANDLE pdfdoc_handle, FSEmbeddedFontData* return_value);
FSErrorCode FSDK_PDFDoc_CreateDSS(FS_PDFDOC_HANDLE pdfdoc_handle);
FSErrorCode FSDK_PDFDoc_AddTableOfContents(FS_PDFDOC_HANDLE pdfdoc_handle, const wchar_t* title, int* int32array, FS_UINT32 array_length_bookmark_level_array);
FSErrorCode FSDK_PDFDoc_AddTableOfContents0(FS_PDFDOC_HANDLE pdfdoc_handle, const FSTableOfContentsConfig table_of_contents_config);
FSErrorCode FSDK_PDFDoc_SetCacheFile(FS_PDFDOC_HANDLE pdfdoc_handle,  FSStreamCallback* file_stream, FS_BOOL is_own_file_stream);
FSErrorCode FSDK_PDFDoc_StartRecognizeForm(FS_PDFDOC_HANDLE pdfdoc_handle,  FSPauseCallback* pause, FS_PROGRESSIVE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_StartRecognizeForm0(FS_PDFDOC_HANDLE pdfdoc_handle, FS_BOOL is_set_tool_tips, FSPauseCallback* pause, FS_PROGRESSIVE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_GetPageText(FS_PDFDOC_HANDLE pdfdoc_handle, int page_index, FS_WSTR* return_value);
FSErrorCode FSDK_PDFDoc_AddPagingSealSignature(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_RANGE_HANDLE page_range, float width, float height, FS_BOOL to_check_permission, FS_PAGINGSEALSIGNATURE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_StartEmbedAllFonts(FS_PDFDOC_HANDLE pdfdoc_handle,  FSPauseCallback* pause, FS_PROGRESSIVE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_StartAddTiledWatermark(FS_PDFDOC_HANDLE pdfdoc_handle, const wchar_t* text, const FSTiledWatermarkSettings settings, const FSWatermarkTextProperties properties, const FS_RANGE_HANDLE page_range, FSPauseCallback* pause, FS_PROGRESSIVE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_StartAddTiledWatermark0(FS_PDFDOC_HANDLE pdfdoc_handle, const wchar_t* src_img_file_path, const FSTiledWatermarkSettings settings, const FS_RANGE_HANDLE page_range, FSPauseCallback* pause, FS_PROGRESSIVE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_StartAddTiledWatermark1(FS_PDFDOC_HANDLE pdfdoc_handle,  FSReaderCallback* src_img_stream, const FSTiledWatermarkSettings settings, const FS_RANGE_HANDLE page_range, FSPauseCallback* pause, FS_PROGRESSIVE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_StartAddTiledWatermark2(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_PDFPAGE_HANDLE page, const FSTiledWatermarkSettings settings, const FS_RANGE_HANDLE page_range, FSPauseCallback* pause, FS_PROGRESSIVE_HANDLE* return_value);
FSErrorCode FSDK_PDFDoc_GetAnnotsByIdArray(FS_PDFDOC_HANDLE pdfdoc_handle, const FS_WSTR* wstringarray, FS_UINT32 array_length_unique_id_arr, FS_ANNOT_HANDLE* return_annotarray, FS_UINT32* return_array_length);
FSErrorCode FSDK_PDFDoc_RemoveStructTree(FS_PDFDOC_HANDLE pdfdoc_handle);
#ifdef __cplusplus
}
#endif
#endif
