Foxit PDF SDK

Public 类型 | Public 成员函数 | 所有成员列表
foxit::pdf::PDFDoc类 参考
类 foxit::pdf::PDFDoc 继承关系图:

## Public 类型
enum | DataType { e_Forms = 0x0001, e_Annots = 0x0002, e_Links = 0x0004 }
| 用于决定从FDF/XFDF文档导入或导出哪些对象的数据类型枚举。 更多...
enum | DisplayMode { e_DisplayUseNone = 0, e_DisplayUseOutlines = 1, e_DisplayUseThumbs = 2, e_DisplayFullScreen = 3, e_DisplayUseOC = 4, e_DisplayUseAttachment = 5 }
| 显示模式的枚举，指定文档打开时应如何显示。 更多...
enum | EncryptType { e_EncryptUnknown = -1, e_EncryptNone = 0, e_EncryptPassword = 1, e_EncryptCertificate = 2, e_EncryptFoxitDRM = 3, e_EncryptCustom = 4, e_EncryptRMS = 5, e_EncryptCDRM = 6 }
| 加密类型的枚举。 更多...
enum | ExtractPagesOptions { e_ExtractPagesOptionAnnotation = 0x0001, e_ExtractPagesOptionStructureTree = 0x0002, e_ExtractPagesOptionJavascript = 0x0004, e_ExtractPagesOptionOCProperties = 0x0008, e_ExtractPagesOptionObjectStream = 0x0010, e_ExtractPagesOptionAttachFiles = 0x0020, e_ExtractPagesOptionBookmark = 0x0040, e_ExtractPagesOptionSignature = 0x0080 }
| 提取页面使用的选项枚举。 更多...
enum | ImportPageFlags { e_ImportFlagNormal = 0, e_ImportFlagWithLayers = 0x0001, e_ImportFlagShareStream = 0x0002 }
| 导入页面使用的标志枚举。 更多...
enum | InsertDocOptions { e_InsertDocOptionAttachments = 0x0001, e_InsertDocOptionBookmark = 0x0002 }
| 用于将PDF文档插入到另一个文档的选项枚举。 更多...
enum | PasswordType { e_PwdInvalid = 0, e_PwdNoPassword = 1, e_PwdUser = 2, e_PwdOwner = 3 }
| PDF文档中当前使用的密码类型的枚举。 更多...
enum | SaveFlags { e_SaveFlagNormal = 0, e_SaveFlagIncremental = 0x0001, e_SaveFlagNoOriginal = 0x0002, e_SaveFlagXRefStream = 0x0008, e_SaveFlagLinearized = 0x1000, e_SaveFlagRemoveRedundantObjects = 0x0010, e_SaveFlagNoUpdatingMetadataDateTime = 0x0020 }
| PDF文档保存标志的枚举。 更多...
enum | UserPermissions { e_PermPrint = 0x0004, e_PermModify = 0x0008, e_PermExtract = 0x0010, e_PermAnnotForm = 0x0020, e_PermFillForm = 0x0100, e_PermExtractAccess = 0x0200, e_PermAssemble = 0x0400, e_PermPrintHigh = 0x0800 }
| PDF文档中用户访问权限的枚举。 更多...
enum | WrapperType { e_WrapperNone = 0, e_WrapperFoxit = 1, e_WrapperPDFV2 = 2 }
| 包装类型的枚举。 更多...

## Public 成员函数
| PDFDoc ()
| 构造函数。 更多...
| PDFDoc (common::file::ReaderCallback *file_read, bool is_async=false)
| 构造函数，使用文件读取回调对象。 更多...
| PDFDoc (const char *path)
| 构造函数，从现有PDF文件路径。 更多...
| PDFDoc (const PDFDoc &other)
| 构造函数，通过另一个PDF文档对象。 更多...
| PDFDoc (const void *buffer, size_t size)
| 构造函数，从内存缓冲区。 更多...
| PDFDoc (const wchar_t *path)
| 构造函数，从现有PDF文件路径。 更多...
| ~PDFDoc ()
| 析构函数。
void | AddHeaderFooter (const HeaderFooter &headerfooter)
| 添加新的页眉页脚。 更多...
uint32 | AddIndirectObject (objects::PDFObject *pdf_object)
| 将PDF对象添加到当前PDF文档中，成为间接对象。 更多...
PDFPage | AddPageFromTemplate (const wchar_t *template_name)
| 从命名模板添加新的PDF页面到文档。 更多...
PagingSealSignature | AddPagingSealSignature (const common::Range &page_range, float width, float height, bool to_check_permission=true)
| 按页面范围向文档添加骑缝章签名。 更多...
void | AddTableOfContents (const TableOfContentsConfig &table_of_contents_config)
| 插入目录页到当前PDF最前页。 更多...
void | AddTableOfContents (const wchar_t *title, Int32Array bookmark_level_array)
| 将页面作为目录插入到当前PDF文档的前面。 更多...
PasswordType | CheckPassword (const String &password)
| 检查指定密码的类型。 更多...
PasswordType | CheckPasswordW (const WString &password)
| 检查指定Unicode密码的类型。 更多...
void | ClearRenderCache ()
| 清除渲染过程中使用的缓存，以减少内存使用。 更多...
void | CreateDSS ()
| 在当前PDF文档中创建DSS信息。 更多...
Bookmark | CreateRootBookmark ()
| 创建新的书签根节点。 更多...
void | DeleteIndirectObject (uint32 object_number)
| 通过间接对象编号删除间接对象。 更多...
bool | DoJSOpenAction ()
| 文档打开时执行JavaScript动作。 更多...
bool | ExportAnnotToFDF (const annots::Annot &pdf_annot, const fdf::FDFDoc &fdf_doc)
| 将指定的注释导出到FDF/XFDF文档。 更多...
bool | ExportFormFieldsToFDF (const pdf::interform::FieldArray &field_array, bool is_include, const fdf::FDFDoc &fdf_doc)
| 将指定的表单字段导出到FDF/XFDF文档。 更多...
bool | ExportToFDF (const fdf::FDFDoc &fdf_doc, int types=pdf::PDFDoc::e_Forms|pdf::PDFDoc::e_Annots, const common::Range &page_range=common::Range())
| 将表单字段和注释导出到FDF/XFDF文档。 更多...
PageBasicInfoArray | GetAllPageBasicInfo ()
| 获取所有页面的基本信息。 更多...
annots::AnnotArray | GetAnnotsByIdArray (const WStringArray &unique_id_arr)
| 通过唯一ID数组返回注释数组。 更多...
int | GetBookmarkLevelDepth ()
| 获取书签层级深度。 更多...
objects::PDFDictionary * | GetCatalog () const
| 获取目录字典。 更多...
CertificateEncryptData | GetCertificateEncryptData () const
| 获取证书加密的加密数据。 更多...
CustomEncryptData | GetCustomEncryptData () const
| 获取自定义加密的加密数据。 更多...
DisplayMode | GetDisplayMode () const
| 获取显示模式。 更多...
DRMEncryptData | GetDRMEncryptData () const
| 获取Foxit DRM加密的加密数据。 更多...
HeaderFooter | GetEditableHeaderFooter ()
| 获取可编辑的页眉页脚对象。 更多...
EmbeddedFontData | GetEmbeddedFontData ()
| 获取嵌入字体数据。 更多...
objects::PDFDictionary * | GetEncryptDict () const
| 获取加密字典。 更多...
EncryptType | GetEncryptionType () const
| 获取加密类型。 更多...
uint64 | GetFileSize ()
| 获取文件大小。 更多...
int | GetFileVersion ()
| 获取存储在PDF头部部分的PDF文件版本。 更多...
int | GetFirstAvailPageIndex () const
| 获取第一个可用页面的页面索引。 更多...
common::Font | GetFont (int index)
| 通过索引获取字体。 更多...
int | GetFontCount ()
| 计算当前PDF文档中使用的所有PDF字体。 更多...
String | GetHeader () const
| 获取标识文件所符合的PDF规范版本的PDF头部。 更多...
objects::PDFObject * | GetIndirectObject (uint32 object_number)
| 通过间接对象编号获取间接对象。 更多...
objects::PDFDictionary * | GetInfo () const
| 获取信息字典。 更多...
actions::Action | GetOpenAction ()
| 获取文档打开时要执行的动作。 更多...
PDFPage | GetPage (int index)
| 通过索引获取PDF页面。 更多...
PageBasicInfo | GetPageBasicInfo (int index)
| 通过索引获取指定页面的基本信息。 更多...
int | GetPageCount () const
| 获取页面数量。 更多...
objects::PDFDictionary * | GetPagesDict () const
| 获取"Pages"的字典。 更多...
WString | GetPageText (int page_index) const
| 以显示顺序获取指定页面文本。 更多...
PasswordType | GetPasswordType () const
| 获取当前使用的密码类型。 更多...
PayLoadData | GetPayLoadData ()
| 如果当前文档的包装类型是 PDFDoc::e_WrapperPDFV2，获取载荷数据。 更多...
ReadingBookmark | GetReadingBookmark (int index)
| 通过索引获取阅读书签。 更多...
int | GetReadingBookmarkCount ()
| 获取阅读书签的数量。 更多...
RMSEncryptData | GetRMSEncryptData () const
| 获取RMS加密的加密数据。 更多...
Bookmark | GetRootBookmark ()
| 获取书签根节点。 更多...
SecurityHandler | GetSecurityHandler ()
| 获取当前文档的当前PDF安全处理程序。 更多...
foxit::pdf::Signature | GetSignature (int index)
| 通过索引获取签名。 更多...
int | GetSignatureCount ()
| 获取签名数量。 更多...
StdEncryptData | GetStdEncryptData () const
| 获取标准加密（称为密码加密）的加密数据。 更多...
objects::PDFDictionary * | GetTrailer () const
| 获取拖车字典。 更多...
String | GetUserPassword (const String &owner_password)
| 基于所有者密码获取用户密码。 更多...
uint32 | GetUserPermissions () const
| 获取用户访问权限。 更多...
WrapperData | GetWrapperData () const
| 如果当前文档的包装类型是 PDFDoc::e_WrapperFoxit，获取包装数据。 更多...
int64 | GetWrapperOffset () const
| 如果当前文档的包装类型是 PDFDoc::e_WrapperFoxit，获取包装偏移量。 更多...
WrapperType | GetWrapperType () const
| 获取包装类型。 更多...
bool | HasForm () const
| 检查当前PDF文档是否有交互式表单（也称为AcroForm）。 更多...
bool | HasHeaderFooter ()
| 检查当前文档是否有页眉页脚。 更多...
bool | HasLayer () const
| 检查当前PDF文档是否有图层（在《PDF参考手册1.7》中称为"可选内容组"）。 更多...
bool | HidePageTemplate (const wchar_t *template_name)
| 隐藏命名页面。 更多...
bool | ImportFromFDF (const fdf::FDFDoc &fdf_doc, int types=pdf::PDFDoc::e_Forms|pdf::PDFDoc::e_Annots, const common::Range &page_range=common::Range())
| 从FDF/XFDF文档导入表单字段和注释。 更多...
void | InsertDocument (int dest_index, const PDFDoc &src_doc, uint32 options)
| 将另一个PDF文档插入到当前PDF文档的指定位置。 更多...
void | InsertDocument (int dest_index, const PDFDoc &src_doc, uint32 options, const wchar_t *bookmark_title)
| 将另一个PDF文档插入到当前PDF文档的指定位置。 更多...
PDFPage | InsertPage (int index, float width, float height)
| 通过索引向文档插入新的空白PDF页面。 更多...
PDFPage | InsertPage (int index, foxit::pdf::PDFPage::Size size=PDFPage::e_SizeLetter)
| 通过索引向文档插入新的空白PDF页面。 更多...
ReadingBookmark | InsertReadingBookmark (int reading_bookmark_index, const WString &title, int dest_page_index)
| 向当前PDF文档插入阅读书签。 更多...
bool | IsEmpty () const
| 检查当前对象是否为空。 更多...
bool | IsEncrypted () const
| 检查当前文档是否为加密文件。 更多...
bool | IsLinearized () const
| 检查当前PDF文档是否为线性化文件。 更多...
bool | IsOwnerPassword (const foxit::WString &password)
| 检查输入密码是否为当前PDF文档的所有者密码。 更多...
bool | IsOwnerPassword (const String &password)
| 检查输入密码是否为当前PDF文档的所有者密码。 更多...
bool | IsPortfolio ()
| 检查当前PDF文档是否为文档集文件。 更多...
bool | IsTaggedPDF () const
| 检查当前PDF文档是否为标签化PDF文件。 更多...
bool | IsUserPassword (const foxit::WString &password)
| 检查输入密码是否为当前PDF文档的用户密码。 更多...
bool | IsUserPassword (const String &password)
| 检查输入密码是否为当前PDF文档的用户密码。 更多...
bool | IsWrapper () const
| 检查当前文档是否为包装文件。 更多...
bool | IsXFA () const
| 检查当前PDF文档是否为XFA文档。 更多...
ErrorCode | Load (const String &password="")
| 使用指定密码加载当前文档内容。 更多...
ErrorCode | LoadW (const WString &password=WString())
| 使用指定密码加载当前文档内容。 更多...
bool | MovePagesTo (const common::Range &page_range, int dest_index)
| 将一个或多个页面（按索引指定）移动到新位置。 更多...
bool | MovePageTo (const PDFPage &page, int dest_index)
| 将指定页面移动到新位置。 更多...
bool | operator!= (const PDFDoc &other) const
| 不等操作符。 更多...
PDFDoc & | operator= (const PDFDoc &other)
| 赋值操作符。 更多...
bool | operator== (const PDFDoc &other) const
| 相等操作符。 更多...
bool | RemoveAllHeaderFooters ()
| 删除所有页眉页脚。 更多...
bool | RemoveBookmark (const Bookmark &bookmark)
| 删除指定的书签。 更多...
void | RemoveHiddenInfo (const HiddenInfoSettingData &hidden_data_setting)
| 根据用户定义的设置从当前PDF文档中删除指定类型的隐藏信息。 更多...
bool | RemoveOpenAction ()
| 移除文档打开时要执行的动作。 更多...
bool | RemovePage (const foxit::pdf::PDFPage &page)
| 删除指定的PDF页面。 更多...
bool | RemovePage (int index)
| 通过页面索引删除PDF页面。 更多...
bool | RemoveReadingBookmark (const ReadingBookmark &reading_bookmark)
| 从当前PDF文档中删除阅读书签。 更多...
bool | RemoveSecurity ()
| 从当前文档中移除安全处理程序，以便后续保存的文档将是未加密的。 更多...
void | RemoveSignature (const foxit::pdf::Signature &signature)
| 删除签名。 更多...
void | RemoveStructTree ()
| 移除当前文档中的结构树。 更多...
void | Sanitize ()
| 使用默认设置从当前PDF文档中删除所有隐藏或潜在敏感信息。 更多...
bool | SaveAs (const char *file_path, uint32 save_flags=PDFDoc::e_SaveFlagNormal)
| 将当前PDF文档另存为另一个PDF文件。 更多...
bool | SaveAs (const wchar_t *file_path, uint32 save_flags=PDFDoc::e_SaveFlagNormal)
| 将当前PDF文档另存为另一个PDF文件。 更多...
bool | SaveAsWrapperFile (const wchar_t *file_path, const WrapperData *wrapper_data=0, uint32 user_permissions=0xFFFFFFFC, const char *owner_password="")
| 将当前PDF文档另存为包装文件。 更多...
void | SetCacheFile (foxit::common::file::StreamCallback *file_stream, bool is_own_file_stream)
| 设置缓存文件 (代表文件流) 到当前PDF文档。 更多...
void | SetDisplayMode (DisplayMode display_mode)
| 设置显示模式。 更多...
void | SetFileVersion (int version)
| 设置将存储在保存的PDF文件的PDF头部部分中的PDF文件版本。 更多...
bool | SetOpenAction (actions::Action &action)
| 设置文档打开时要执行的动作。 更多...
bool | SetSecurityHandler (const SecurityHandler &handler)
| 为加密设置PDF安全处理程序，如标准加密（密码）、 证书加密等。 更多...
common::Progressive | StartAddTiledWatermark (const foxit::pdf::PDFPage &page, const TiledWatermarkSettings &settings, const common::Range &page_range, common::PauseCallback *pause=0)
| 添加页面类型平铺水印。 更多...
common::Progressive | StartAddTiledWatermark (const wchar_t *src_img_file_path, const TiledWatermarkSettings &settings, const common::Range &page_range, common::PauseCallback *pause=0)
| Add image type tiled watermark to PDF pages by image path. 更多...
common::Progressive | StartAddTiledWatermark (const wchar_t *text, const TiledWatermarkSettings &settings, const WatermarkTextProperties &properties, const common::Range &page_range, common::PauseCallback *pause=0)
| 添加文本平铺水印到页面中。 更多...
common::Progressive | StartAddTiledWatermark (foxit::common::file::ReaderCallback *src_img_stream, const TiledWatermarkSettings &settings, const common::Range &page_range, common::PauseCallback *pause=0)
| 通过图像流添加图片类型平铺水印到页面中。 更多...
common::Progressive | StartEmbedAllFonts (common::PauseCallback *pause=0)
| 开始转换所有未嵌入字体为内嵌字体。 更多...
common::Progressive | StartExtractPages (const char *file_path, uint32 options, const common::Range &page_range=common::Range(), common::PauseCallback *pause=0)
| 开始从当前PDF文档提取页面。 更多...
common::Progressive | StartExtractPages (const wchar_t *file_path, uint32 options, const common::Range &page_range=common::Range(), common::PauseCallback *pause=0)
| 开始从当前PDF文档提取页面。 更多...
common::Progressive | StartExtractPages (foxit::common::file::WriterCallback *file, uint32 options, const foxit::common::Range &page_range=common::Range(), foxit::common::PauseCallback *pause=0)
| 开始从当前PDF文档提取页面。 更多...
common::Progressive | StartGetPayloadFile (foxit::common::file::WriterCallback *payload_file, common::PauseCallback *pause=0)
| 开始获取载荷文件。 更多...
common::Progressive | StartImportPages (int dest_index, const PDFDoc &src_doc, uint32 flags=PDFDoc::e_ImportFlagNormal, const char *layer_name="", const common::Range &page_range=common::Range(), common::PauseCallback *pause=0)
| 开始从另一个PDF文档（通过PDF文档对象）导入页面。 更多...
common::Progressive | StartImportPagesFromFilePath (int dest_index, const wchar_t *src_file_path, const String &password, uint32 flags=PDFDoc::e_ImportFlagNormal, const char *layer_name="", const common::Range &page_range=common::Range(), common::PauseCallback *pause=0)
| 开始从另一个PDF文档（通过文件路径）导入页面。 更多...
common::Progressive | StartImportPagesFromFilePath (int dest_index, const wchar_t *src_file_path, const WString &password, uint32 flags=PDFDoc::e_ImportFlagNormal, const char *layer_name="", const common::Range &page_range=common::Range(), common::PauseCallback *pause=0)
| 开始从另一个PDF文档（通过文件路径）导入页面。 更多...
common::Progressive | StartLoad (const String &password="", bool is_cache_stream=true, common::PauseCallback *pause=0)
| 开始使用指定密码加载当前文档内容。 更多...
common::Progressive | StartLoadW (const WString &password=WString(), bool is_cache_stream=true, common::PauseCallback *pause=0)
| 开始使用指定密码加载当前文档内容。 更多...
common::Progressive | StartRecognizeForm (bool is_set_tool_tips, common::PauseCallback *pause=0)
| 开始识别表单域。 更多...
common::Progressive | StartRecognizeForm (common::PauseCallback *pause=0)
| 开始识别表单域。 更多...
common::Progressive | StartSaveAs (const char *file_path, uint32 save_flags=PDFDoc::e_SaveFlagNormal, common::PauseCallback *pause=0)
| 开始将当前PDF文档另存为另一个PDF文件。 更多...
common::Progressive | StartSaveAs (const wchar_t *file_path, uint32 save_flags=PDFDoc::e_SaveFlagNormal, common::PauseCallback *pause=0)
| 开始将当前PDF文档另存为另一个PDF文件。 更多...
common::Progressive | StartSaveAs (foxit::common::file::WriterCallback *file, foxit::uint32 save_flags=PDFDoc::e_SaveFlagNormal, foxit::common::PauseCallback *pause=0)
| 开始将当前PDF文档另存为另一个PDF文件。 更多...
common::Progressive | StartSaveAsPayloadFile (const wchar_t *file_path, const wchar_t *payload_file_path, const wchar_t *crypto_filter, const wchar_t *description, float version, uint32 save_flags=PDFDoc::e_SaveFlagNormal, common::PauseCallback *pause=0)
| 开始将当前PDF文档另存为带有载荷文档的包装文档（在PDF 2.0中定义）。 更多...
void | UpdateHeaderFooter (const HeaderFooter &headerfooter)
| 更新页眉页脚。 更多...
Public 成员函数 继承自 foxit::Base
FS_HANDLE | Handle () const
| 获取当前对象的句柄。 更多...

## 详细描述

PDF文档对象可以通过文件路径、内存缓冲区、 自定义实现的 common::file::ReaderCallback 对象和输入文件流从现有PDF文件构造。然后调用函数 pdf::PDFDoc::Load 或 PDFDoc::StartLoad 来加载文档内容。 此类提供了检索PDF文档不同部分的函数。例如：

- 要检索页面，请使用函数 pdf::PDFDoc::GetPageCount 和 PDFDoc::GetPage。
- 要检索书签，例如函数 pdf::PDFDoc::GetRootBookmark、PDFDoc::CreateRootBookmark 等。
- 要检索一些文档的字典（低级），例如函数 pdf::PDFDoc::GetCatalog、PDFDoc::GetTrailer 等。
- 要检索阅读书签，例如函数 PDFDoc::GetReadingBookmarkCount、 PDFDoc::GetReadingBookmark 等。
- 要检查PDF文档是否有交互式表单，请使用函数 PDFDoc::HasForm。
- 要检查PDF文档是否有页眉页脚，请使用函数 PDFDoc::HasHeaderFooter。 要修改页眉页脚，请参考函数，例如 pdf::PDFDoc::AddHeaderFooter、PDFDoc::UpdateHeaderFooter 和 PDFDoc::RemoveAllHeaderFooters。

此类还提供用于功能的函数，例如将当前文档保存为另一个PDF文件， 从另一个PDF文件导入页面，设置安全处理程序以保存加密的PDF文件等等。
此类对象也可以用于构造其他类的对象，以便访问PDF文档中的指定信息：

- 要访问表单，请使用PDF文档对象构造 interform::Form 对象。
- 要访问附加操作，请使用PDF文档对象构造 actions::AdditionalAction 对象。
- 要访问查看器首选项信息，请使用PDF文档对象构造 DocViewerPrefs 对象。
- 要访问元数据信息，请使用PDF文档对象构造 Metadata 对象。
- 要管理页面标签信息，请使用PDF文档对象构造 PageLabels 对象。
- 要在PDF文件中搜索，请使用PDF文档对象构造 TextSearch 对象。
- 要访问图层，请使用PDF文档对象构造 LayerTree 对象。 要渲染图层，请使用PDF文档对象构造 LayerContext 对象。
- 要构造新的 FileSpec 对象。
- 要管理关联文件，请使用PDF文档对象构造 AssociatedFiles 对象。
- 要访问名称树，请使用PDF文档对象构造 objects::PDFNameTree 对象。特别地， 对于嵌入文件名称树，可以使用PDF文档对象构造 Attachments 对象， 以便使用。
- 要进行密文处理，请使用PDF文档对象构造 addon::Redaction 对象。

参见
  interform::Form
  actions::AdditionalAction
  DocViewerPrefs
  Metadata
  PageLabels
  TextSearch
  LayerTree
  LayerContext
  FileSpec
  AssociatedFiles
  objects::PDFNameTree
  Attachments
  addon::Redaction

## 成员枚举类型说明

## ◆ DataType

enum foxit::pdf::PDFDoc::DataType

用于决定从FDF/XFDF文档导入或导出哪些对象的数据类型枚举。

此枚举的值可以单独使用或组合使用。

枚举值
e_Forms | 如果设置，表单字段将从FDF/XFDF文档导入或导出到FDF/XFDF文档。
e_Annots | 如果设置，注释（链接注释除外）将从FDF/XFDF文档导入或导出到FDF/XFDF文档。
e_Links | （保留，尚未支持）如果设置，只有链接注释将从XFDF文档导入或导出到XFDF文档。

## ◆ DisplayMode

enum foxit::pdf::PDFDoc::DisplayMode

显示模式的枚举，指定文档打开时应如何显示。

此枚举的值应该单独使用。

枚举值
e_DisplayUseNone | 当文档打开时，文档大纲和缩略图都不可见。
e_DisplayUseOutlines | 当文档打开时，文档大纲（书签）可见。
e_DisplayUseThumbs | 当文档打开时，缩略图可见。
e_DisplayFullScreen | 当文档打开时，全屏模式，没有菜单栏、窗口控件或任何其他窗口可见。
e_DisplayUseOC | 当文档打开时，可选内容组面板可见。
e_DisplayUseAttachment | 当文档打开时，附件面板可见。

## ◆ EncryptType

enum foxit::pdf::PDFDoc::EncryptType

加密类型的枚举。

此枚举的值应单独使用。

枚举值
e_EncryptUnknown | 未知加密类型。
e_EncryptNone | 无加密模式。
e_EncryptPassword | 加密类型：密码，这是标准加密。
e_EncryptCertificate | 加密类型：数字证书加密。
e_EncryptFoxitDRM | 加密类型：福昕DRM加密。
e_EncryptCustom | 加密类型：自定义加密。
e_EncryptRMS | 加密类型：微软RMS加密。
e_EncryptCDRM | （保留，目前不使用此值。）加密类型：福昕连接PDF DRM加密。

## ◆ ExtractPagesOptions

enum foxit::pdf::PDFDoc::ExtractPagesOptions

提取页面使用的选项枚举。

此枚举的值可以单独使用或组合使用。

枚举值
e_ExtractPagesOptionAnnotation | 如果设置，表示与提取页面相关的注释也将被提取。
e_ExtractPagesOptionStructureTree | 如果设置，表示结构树也将被提取。
e_ExtractPagesOptionJavascript | 如果设置，表示Javascript也将被提取。
e_ExtractPagesOptionOCProperties | 如果设置，表示OCProperties也将被提取。
e_ExtractPagesOptionObjectStream | 如果设置，表示对结果文件使用 PDFDoc::e_SaveFlagXRefStream 保存标志 以减少结果文件的大小。
e_ExtractPagesOptionAttachFiles | 如果设置，表示附件文件也将被提取。
e_ExtractPagesOptionBookmark | 如果设置，表示书签也将被提取。
e_ExtractPagesOptionSignature | 如果设置，表示签名也将被提取。必须与 PDFDoc:e_ExtractPagesOptionAnnotation 结合使用。

## ◆ ImportPageFlags

enum foxit::pdf::PDFDoc::ImportPageFlags

导入页面使用的标志枚举。

此枚举的值可以单独使用或组合使用。

枚举值
e_ImportFlagNormal | 正常导入页面。
e_ImportFlagWithLayers | 导入页面时包含图层。
e_ImportFlagShareStream | 导入页面时不将流对象克隆到内存中。 此标志仅在源PDF文档未加密时有用。 如果使用此标志导入页面，将减少内存开销。

## ◆ InsertDocOptions

enum foxit::pdf::PDFDoc::InsertDocOptions

用于将PDF文档插入到另一个文档的选项枚举。

此枚举的值可以单独使用或组合使用。

枚举值
e_InsertDocOptionAttachments | 如果设置，表示附件也将插入到目标文档中。
e_InsertDocOptionBookmark | 如果设置，表示书签也将插入到目标文档中。

## ◆ PasswordType

enum foxit::pdf::PDFDoc::PasswordType

PDF文档中当前使用的密码类型的枚举。

此枚举的值应单独使用。

枚举值
e_PwdInvalid | 密码无效。
e_PwdNoPassword | PDF文档中不使用密码。
e_PwdUser | PDF文档中使用用户密码。
e_PwdOwner | PDF文档中使用所有者密码。

## ◆ SaveFlags

enum foxit::pdf::PDFDoc::SaveFlags

PDF文档保存标志的枚举。

此枚举的值可以单独使用或组合使用。

枚举值
e_SaveFlagNormal | 正常保存文档，不使用任何特殊标志。 这只能与标志 PDFDoc::e_SaveFlagNoUpdatingMetadataDateTime 组合使用。
e_SaveFlagIncremental | 增量保存文档。 这可以单独使用或与除 PDFDoc::e_SaveFlagNormal 外的其他保存标志组合使用。 特别地，如果与 PDFDoc::e_SaveFlagNoOriginal 组合使用， 将只保存增量数据。
e_SaveFlagNoOriginal | 保存文档时不包含原始数据或未更改的对象。 这可以单独使用或与除 PDFDoc::e_SaveFlagNormal 外的其他保存标志组合使用。 特别地，如果与 PDFDoc::e_SaveFlagIncremental 组合使用， 将只保存增量数据。
e_SaveFlagXRefStream | 使用XRef流保存文档。 这可以单独使用或与除 PDFDoc::e_SaveFlagNormal 外的其他保存标志组合使用。
e_SaveFlagLinearized | 将文档保存为线性化文件。 这应该单独使用，不能与除 PDFDoc::e_SaveFlagNoUpdatingMetadataDateTime 外的其他保存标志一起使用。 这只能用于函数 pdf::PDFDoc::SaveAs 或 PDFDoc::StartSaveAs。
e_SaveFlagRemoveRedundantObjects | 保存文档时移除冗余的PDF对象。 这可以单独使用或与 PDFDoc::e_SaveFlagNoOriginal、PDFDoc::e_SaveFlagXRefStream 或 PDFDoc::e_SaveFlagNoUpdatingMetadataDateTime 组合使用。 这只能用于函数 pdf::PDFDoc::SaveAs 或 PDFDoc::StartSaveAs。
e_SaveFlagNoUpdatingMetadataDateTime | 保存文档时不更新元数据"ModDate"和"CreationDate"。 这可以单独使用或与其他保存标志组合使用。 这只能用于函数 pdf::PDFDoc::SaveAs 和 PDFDoc::StartSaveAs。

## ◆ UserPermissions

enum foxit::pdf::PDFDoc::UserPermissions

PDF文档中用户访问权限的枚举。

此枚举的值可以单独使用或组合使用。

枚举值
e_PermPrint | 以普通模式打印PDF文档。（权限值中的第3位） 如果用户要打印更高质量级别的PDF文档，请将当前值与 值 PDFDoc::e_PermPrintHigh 一起设置。
e_PermModify | 修改PDF内容。（权限值中的第4位） 如果设置了此值，用户可以通过除了由 值 PDFDoc::e_PermAnnotForm、PDFDoc::e_PermFillForm 和 PDFDoc::e_PermAssemble 控制的操作之外的操作来修改PDF文档的内容。
e_PermExtract | 提取PDF内容。（权限值中的第5位） 如果设置了此值，用户可以通过除了由值 PDFDoc::e_PermExtractAccess 控制的操作之外的操作从文档中复制或以其他方式提取文本和图形。
e_PermAnnotForm | 操作文本注释和填写交互式表单字段。（权限值中的第6位） 如果也设置了值 PDFDoc::e_PermModify， 用户可以创建或修改交互式表单字段（包括签名字段）。
e_PermFillForm | 填写PDF表单。（权限值中的第9位） 如果设置了此值，用户可以填写交互式表单字段（包括签名字段）， 即使未使用值 PDFDoc::e_PermAnnotForm。
e_PermExtractAccess | 残疾人支持。（权限值中的第10位） 如果设置了此值，用户可以提取文本和图形以支持残疾用户的辅助功能 或用于其他目的。
e_PermAssemble | 组装PDF文档。（权限值中的第11位） 如果设置了此值，可以组装文档 （插入、旋转或删除页面并创建书签或缩略图）， 无论是否设置了值 PDFDoc::e_PermModify。
e_PermPrintHigh | 以更高质量打印PDF文档。（权限值中的第12位） 如果未设置此值（且设置了值 PDFDoc::e_PermPrint）， 打印将限制为外观的低级表示，可能质量较差。

## ◆ WrapperType

enum foxit::pdf::PDFDoc::WrapperType

包装类型的枚举。

此枚举的值应该单独使用。

枚举值
e_WrapperNone | 普通文档。
e_WrapperFoxit | Foxit包装文档。
e_WrapperPDFV2 | PDF 2.0包装文档。

## 构造及析构函数说明

## ◆ PDFDoc() [1/6]

foxit::pdf::PDFDoc::PDFDoc | ( |  | ) |

构造函数。

此构造函数用于构造新的PDF文档（没有任何数据）。 文件版本值默认为17（作为PDF版本1.7）。

## ◆ PDFDoc() [2/6]

foxit::pdf::PDFDoc::PDFDoc | ( | const char * | path | ) |
| explicit

构造函数，从现有PDF文件路径。

构造这样的PDF文档对象后，请确保在使用类 PDFDoc 中的大多数函数之前 已加载文档对象。

参数

  [in] | path | 现有PDF文件的完整路径。它不应该是空字符串。

## ◆ PDFDoc() [3/6]

foxit::pdf::PDFDoc::PDFDoc | ( | const wchar_t * | path | ) |
| explicit

构造函数，从现有PDF文件路径。

构造这样的PDF文档对象后，请确保在使用类 PDFDoc 中的大多数函数之前 已加载文档对象。

参数

  [in] | path | 现有PDF文件的完整路径。它不应该是空字符串。

## ◆ PDFDoc() [4/6]

foxit::pdf::PDFDoc::PDFDoc | ( | const void * | buffer,
|  | size_t | size
| ) |  |
| explicit

构造函数，从内存缓冲区。

构造这样的PDF文档对象后，请确保在使用类 PDFDoc 中的大多数函数之前 已加载文档对象。

参数

  [in] | buffer | 包含序列化文档的内存缓冲区。PDF文档数据应完全加载在此内存缓冲区中。 它不应该是 NULL。
  [in] | size | 内存缓冲区的大小。它应该大于0。

## ◆ PDFDoc() [5/6]

foxit::pdf::PDFDoc::PDFDoc | ( | common::file::ReaderCallback * | file_read,
|  | bool | is_async = `false`
| ) |  |
| explicit

构造函数，使用文件读取回调对象。

构造这样的PDF文档对象后，请确保在使用类 PDFDoc 中的大多数函数之前 已加载文档对象。

参数

  [in] | file_read | 由用户实现的 common::file::ReaderCallback 对象，用于 加载PDF文档。它不应该是 NULL。 如果输入的回调对象是 common::file::AsyncReaderCallback 对象，且 is_async 为 true， 这意味着PDF文档将通过异步方法加载；否则， 文档将以普通方式加载。
  [in] | is_async | 输入的 common::file::ReaderCallback 对象是否用于异步加载。 默认值：false。

## ◆ PDFDoc() [6/6]

foxit::pdf::PDFDoc::PDFDoc | ( | const PDFDoc & | other | ) |

构造函数，通过另一个PDF文档对象。

参数

  [in] | other | 另一个PDF文档对象。

## 成员函数说明

## ◆ AddHeaderFooter()

void foxit::pdf::PDFDoc::AddHeaderFooter | ( | const HeaderFooter & | headerfooter | ) |

添加新的页眉页脚。

PDF文档可以多次添加页眉页脚。当添加新的页眉页脚时，旧的页眉页脚不会被删除， 但如果旧的页眉页脚与新的出现在同一位置，则会被新的覆盖。

参数

  [in] | headerfooter | 要添加到当前文档的有效页眉页脚对象。

返回
  无。

## ◆ AddIndirectObject()

uint32 foxit::pdf::PDFDoc::AddIndirectObject | ( | objects::PDFObject * | pdf_object | ) |

将PDF对象添加到当前PDF文档中，成为间接对象。

- 如果输入的PDF对象是直接对象（其间接对象编号为0）， 此函数将其更改为间接对象并添加到PDF文档中。 然后返回新的间接对象编号。
- 如果输入的PDF对象已经是间接对象（其间接对象编号大于0）， 此函数不会再次将其添加到文档中。 返回值将是其自身的间接对象编号。

参数

  [in] | pdf_object | objects::PDFObject 对象。不应为NULL。

返回
  新的间接对象编号。将大于0。

## ◆ AddPageFromTemplate()

PDFPage foxit::pdf::PDFDoc::AddPageFromTemplate | ( | const wchar_t * | template_name | ) |

从命名模板添加新的PDF页面到文档。

PDF文档中可能存在隐藏页面。隐藏页面映射到PDF文档中模板名称树中定义的名称。 此函数可用于将隐藏页面添加到PDF文档的末尾。
类 objects::PDFNameTree（使用类型 objects::PDFNameTree::e_Templates 初始化）可用于确定 哪些模板名称可用。
添加模板后，名称将在内部移动到文档的页面名称树。

参数

  [in] | template_name | 模板的名称，其映射的隐藏页面将添加到当前PDF文档的末尾。 如果找不到模板名称，将抛出异常 foxit::e_ErrParam。

返回
  如果找到输入的模板名称，返回新的PDF页面对象。

## ◆ AddPagingSealSignature()

PagingSealSignature foxit::pdf::PDFDoc::AddPagingSealSignature | ( | const common::Range & | page_range,
|  | float | width,
|  | float | height,
|  | bool | to_check_permission = `true`
| ) |  |

按页面范围向文档添加骑缝章签名。

此函数将向 page_range 的第一页添加签名。

参数

  [in] | page_range | 指定某些页面的范围对象。这些页面将被添加签名。 有效的页面范围：从 1 到 count。count 由函数 PDFDoc::GetPageCount 返回。 如果此范围对象由默认构造函数构造且未设置任何值，则表示当前文档的所有页面 都将被添加签名。 此函数不支持具有单个索引的范围或具有单个页面的文档。
  [in] | width | 骑缝章的宽度。该值将用于设置每个页面上签名的矩形。
  [in] | height | 骑缝章的高度。该值将用于设置每个页面上签名的矩形。
  [in] | to_check_permission | 一个布尔值，用于决定 Foxit PDF SDK 是否应在添加签名之前检查 PDF 文档的权限： true 表示 Foxit PDF SDK 应检查文档权限以决定是否允许添加签名， false 表示 Foxit PDF SDK 不应在添加签名之前检查文档权限。 当此参数为 false 时，用户应确保检查文档权限以检查是否允许添加签名。 默认值：true。

返回
  骑缝章签名对象。

## ◆ AddTableOfContents() [1/2]

void foxit::pdf::PDFDoc::AddTableOfContents | ( | const TableOfContentsConfig & | table_of_contents_config | ) |

插入目录页到当前PDF最前页。

如果当前文档没有任何书签，这个接口将不会做任何事情。

参数

  [in] | table_of_contents_config | TOC配置对象。

返回
  无。

## ◆ AddTableOfContents() [2/2]

void foxit::pdf::PDFDoc::AddTableOfContents | ( | const wchar_t * | title,
|  | Int32Array | bookmark_level_array
| ) |  |

将页面作为目录插入到当前PDF文档的前面。

如果当前文档没有任何书签，此函数将不执行任何操作。

参数

  [in] | title | 目录的标题。如果这是空字符串，将使用默认值"Table of Contents"。
  [in] | bookmark_level_array | 书签级别数组，用于指定用来生成"目录"的书签。 对于输入数组中的每个元素，有效范围：从1到(depth)。 depth由函数 PDFDoc::GetBookmarkLevelDepth 返回。 如果输入数组是空数组，意味着所有书签都用于生成"目录"。

返回
  无。

## ◆ CheckPassword()

PasswordType foxit::pdf::PDFDoc::CheckPassword | ( | const String & | password | ) |

检查指定密码的类型。

此函数可用于检查任何密码字符串的类型，包括用于加载文档内容的密码字符串。
某些PDF文档可能同时拥有用户密码和所有者密码，并且这两个密码相同。 但当前函数只能为此类密码返回一种类型。在这种情况下，函数 PDFDoc::IsUserPassword和PDFDoc::IsOwnerPassword可以帮助进行更多检查。

参数

  [in] | password | 要检测的密码字符串。

返回
  密码类型。请参考从PDFDoc::e_PwdInvalid开始的值， 这将是这些值中的一个。

## ◆ CheckPasswordW()

PasswordType foxit::pdf::PDFDoc::CheckPasswordW | ( | const WString & | password | ) |

检查指定Unicode密码的类型。

此函数可用于检查任何密码字符串的类型，包括用于加载文档内容的密码字符串。
对于某些PDF文档，它同时拥有用户密码和所有者密码，并且这两个密码相同。 但当前函数只能为此类密码返回一种类型。在这种情况下，函数 PDFDoc::IsUserPassword和PDFDoc::IsOwnerPassword可以帮助进行更多检查。

参数

  [in] | password | 要检测的Unicode密码字符串。

返回
  密码类型。请参考从PDFDoc::e_PwdInvalid开始的值， 这将是这些值中的一个。

## ◆ ClearRenderCache()

void foxit::pdf::PDFDoc::ClearRenderCache | ( |  | ) |

清除渲染过程中使用的缓存，以减少内存使用。

返回
  无。

## ◆ CreateDSS()

void foxit::pdf::PDFDoc::CreateDSS | ( |  | ) |

在当前PDF文档中创建DSS信息。

如果当前PDF文档已经有DSS信息，此函数将不执行任何操作并直接返回。

返回
  无。

## ◆ CreateRootBookmark()

Bookmark foxit::pdf::PDFDoc::CreateRootBookmark | ( |  | ) |

创建新的书签根节点。

如果当前PDF文档已经有书签根节点，此函数将删除旧的书签树并创建一个新的根节点。

返回
  表示根书签的书签对象。

## ◆ DeleteIndirectObject()

void foxit::pdf::PDFDoc::DeleteIndirectObject | ( | uint32 | object_number | ) |

通过间接对象编号删除间接对象。

参数

  [in] | object_number | 间接对象编号。应该大于0。

返回
  无。

## ◆ DoJSOpenAction()

bool foxit::pdf::PDFDoc::DoJSOpenAction | ( |  | ) |

文档打开时执行JavaScript动作。

返回
  true表示成功，false表示失败。

## ◆ ExportAnnotToFDF()

bool foxit::pdf::PDFDoc::ExportAnnotToFDF | ( | const annots::Annot & | pdf_annot,
|  | const fdf::FDFDoc & | fdf_doc
| ) |  |

将指定的注释导出到FDF/XFDF文档。

参数

  [in] | pdf_annot | 要导出到FDF/XFDF文档的有效PDF注释对象。
  [in] | fdf_doc | 有效的FDF/XFDF文档对象，指定的注释将导出到此文档。

返回
  true表示成功，false表示失败。

## ◆ ExportFormFieldsToFDF()

bool foxit::pdf::PDFDoc::ExportFormFieldsToFDF | ( | const pdf::interform::FieldArray & | field_array,
|  | bool | is_include,
|  | const fdf::FDFDoc & | fdf_doc
| ) |  |

将指定的表单字段导出到FDF/XFDF文档。

参数

  [in] | field_array | 表单字段数组。参数is_include将决定是否导出这些表单字段的数据。
  [in] | is_include | 布尔值，用于决定是否导出指定表单字段的数据： true表示导出指定表单字段的数据，false表示不导出指定表单字段的数据。
  [in] | fdf_doc | 有效的FDF/XFDF文档对象，指定的表单字段将导出到此文档。

返回
  true表示成功，false表示失败。

## ◆ ExportToFDF()

bool foxit::pdf::PDFDoc::ExportToFDF | ( | const fdf::FDFDoc & | fdf_doc,
|  | int | types = `pdf::PDFDoc::e_Forms|pdf::PDFDoc::e_Annots`,
|  | const common::Range & | page_range = `common::Range()`
| ) |  |

将表单字段和注释导出到FDF/XFDF文档。

有关可用于导出的PDF对象类型的更多详细信息， 请参考"XML Forms Data Format Specification"第22页。

参数

  [in] | fdf_doc | 一个有效的FDF/XFDF文档对象，向其导出表单字段和注释。
  [in] | types | 用于决定将导出哪种类型的数据。请参考从 PDFDoc::e_Forms 开始的值， 这可以是这些值中的一个或组合。 默认值：(PDFDoc::e_Forms | PDFDoc::e_Annots)。
  [in] | page_range | 指定一些页面的范围对象。这些页面中的数据（指定类型）将被导出到FDF/XFDF文档。 如果此范围对象通过默认构造函数构造且未设置任何值，意味着当前文档的所有数据（指定类型） 将被导出到FDF/XFDF文档。 此参数仅在参数types包含 PDFDoc::e_Annots 时有用。 默认值：通过默认构造函数构造且未设置任何值的范围对象。

返回
  true表示成功，false表示失败。

## ◆ GetAllPageBasicInfo()

PageBasicInfoArray foxit::pdf::PDFDoc::GetAllPageBasicInfo | ( |  | ) |

获取所有页面的基本信息。

此函数可以快速获取PDF页面的基本信息，而无需获取该PDF页面对象。 如果当前PDF文档对象是使用AsyncReaderCallback构造的，这意味着进行异步加载， 此函数可能抛出异常 foxit::e_ErrDataNotReady。 在这种情况下，用户应为回调函数 common::file::AsyncReaderCallback::AddDownloadHint 通知的指定范围准备数据，然后再次调用此函数。

返回
  包含指定页面基本信息的所有页面基本信息对象数组，数组按页面升序排列。

## ◆ GetAnnotsByIdArray()

annots::AnnotArray foxit::pdf::PDFDoc::GetAnnotsByIdArray | ( | const WStringArray & | unique_id_arr | ) |

通过唯一ID数组返回注释数组。

参数

  [in] | unique_id_arr | 唯一ID数组。唯一ID由 annots::Annot::GetUniqueID 返回。

返回
  annots::Annot 对象数组。

## ◆ GetBookmarkLevelDepth()

int foxit::pdf::PDFDoc::GetBookmarkLevelDepth | ( |  | ) |

获取书签层级深度。

返回
  书签层级的深度。 如果当前文档没有任何书签，将返回零。

## ◆ GetCatalog()

objects::PDFDictionary* foxit::pdf::PDFDoc::GetCatalog | ( |  | ) | const

获取目录字典。

返回
  目录字典。 如果没有目录字典或发生任何错误，此函数将返回NULL。

## ◆ GetCertificateEncryptData()

CertificateEncryptData foxit::pdf::PDFDoc::GetCertificateEncryptData | ( |  | ) | const

获取证书加密的加密数据。

当当前文档使用证书加密时，此函数很有用。

返回
  证书加密的加密数据。

## ◆ GetCustomEncryptData()

CustomEncryptData foxit::pdf::PDFDoc::GetCustomEncryptData | ( |  | ) | const

获取自定义加密的加密数据。

当当前文档使用自定义加密时，此函数很有用。

返回
  自定义加密的加密数据。

## ◆ GetDisplayMode()

DisplayMode foxit::pdf::PDFDoc::GetDisplayMode | ( |  | ) | const

获取显示模式。

显示模式指定文档打开时应如何显示。

返回
  显示模式值。请参考从 PDFDoc::e_DisplayUseNone 开始的值， 这将是这些值中的一个。

## ◆ GetDRMEncryptData()

DRMEncryptData foxit::pdf::PDFDoc::GetDRMEncryptData | ( |  | ) | const

获取Foxit DRM加密的加密数据。

当当前文档使用Foxit DRM加密时，此函数很有用。

返回
  Foxit DRM加密的加密数据。

## ◆ GetEditableHeaderFooter()

HeaderFooter foxit::pdf::PDFDoc::GetEditableHeaderFooter | ( |  | ) |

获取可编辑的页眉页脚对象。

PDF文档可能已经多次添加页眉页脚，但只有其中一个页眉页脚可以是可编辑的。 此函数用于检索可编辑的页眉页脚。

返回
  表示可编辑页眉页脚的页眉页脚对象。

## ◆ GetEmbeddedFontData()

EmbeddedFontData foxit::pdf::PDFDoc::GetEmbeddedFontData | ( |  | ) |

获取嵌入字体数据。

此函数用于"优化器"模型中的取消嵌入字体。

返回
  嵌入字体数据。

## ◆ GetEncryptDict()

objects::PDFDictionary* foxit::pdf::PDFDoc::GetEncryptDict | ( |  | ) | const

获取加密字典。

返回
  加密字典。 如果没有加密字典或发生任何错误，此函数将返回NULL。

## ◆ GetEncryptionType()

EncryptType foxit::pdf::PDFDoc::GetEncryptionType | ( |  | ) | const

获取加密类型。

返回
  加密类型。请参考从PDFDoc::e_EncryptNone开始的值， 这将是这些值中的一个。

## ◆ GetFileSize()

uint64 foxit::pdf::PDFDoc::GetFileSize | ( |  | ) |

获取文件大小。

返回
  文件大小。

## ◆ GetFileVersion()

int foxit::pdf::PDFDoc::GetFileVersion | ( |  | ) |

获取存储在PDF头部部分的PDF文件版本。

返回
  文件版本。例如值14表示版本"1.4"，值15表示"1.5"，等等。

## ◆ GetFirstAvailPageIndex()

int foxit::pdf::PDFDoc::GetFirstAvailPageIndex | ( |  | ) | const

获取第一个可用页面的页面索引。

这对于线性化PDF文档很有用，因为在线性化PDF文档中， 第一个可用页面可能不是第一页。
此函数只能在文档成功加载后使用。

返回
  第一个可用页面的页面索引。

## ◆ GetFont()

common::Font foxit::pdf::PDFDoc::GetFont | ( | int | index | ) |

通过索引获取字体。

参数

  [in] | index | PDF字体的索引。有效范围：从0到(count-1)。 count由函数 PDFDoc::GetFontCount 返回。

返回
  字体对象。

## ◆ GetFontCount()

int foxit::pdf::PDFDoc::GetFontCount | ( |  | ) |

计算当前PDF文档中使用的所有PDF字体。

此函数将枚举用于页面、注释和交互式表单的所有字体资源。

返回
  字体数量。

## ◆ GetHeader()

String foxit::pdf::PDFDoc::GetHeader | ( |  | ) | const

获取标识文件所符合的PDF规范版本的PDF头部。

返回
  PDF头部字符串。它会是"PDF-1.4"、"PDF-1.5"等格式。

## ◆ GetIndirectObject()

objects::PDFObject* foxit::pdf::PDFDoc::GetIndirectObject | ( | uint32 | object_number | ) |

通过间接对象编号获取间接对象。

参数

  [in] | object_number | 间接对象编号。应该大于0。

返回
  接收间接PDF对象的 objects::PDFObject 对象。NULL 表示未找到。

## ◆ GetInfo()

objects::PDFDictionary* foxit::pdf::PDFDoc::GetInfo | ( |  | ) | const

获取信息字典。

文档的信息字典包含文档的元数据。

返回
  信息字典。 如果没有"Info"条目或发生任何错误，此函数将返回NULL。

## ◆ GetOpenAction()

actions::Action foxit::pdf::PDFDoc::GetOpenAction | ( |  | ) |

获取文档打开时要执行的动作。

返回
  动作对象。

## ◆ GetPage()

PDFPage foxit::pdf::PDFDoc::GetPage | ( | int | index | ) |

通过索引获取PDF页面。

如果当前PDF文档对象是使用AsyncReaderCallback构造的（表示进行异步加载）， 此函数可能抛出异常 foxit::e_ErrDataNotReady。 在这种情况下，用户应该为回调函数 common::file::AsyncReaderCallback::AddDownloadHint 通知的指定范围准备数据，然后再次调用此函数。

参数

  [in] | index | 页面索引。有效范围：从0到(count-1)。 count 由函数 PDFDoc::GetPageCount 返回。

返回
  PDF页面对象。

## ◆ GetPageBasicInfo()

PageBasicInfo foxit::pdf::PDFDoc::GetPageBasicInfo | ( | int | index | ) |

通过索引获取指定页面的基本信息。

此函数可以快速获取PDF页面的基本信息，而无需获取该PDF页面对象。 如果当前PDF文档对象是使用AsyncReaderCallback构造的，这意味着进行异步加载， 此函数可能抛出异常 foxit::e_ErrDataNotReady。 在这种情况下，用户应为回调函数 common::file::AsyncReaderCallback::AddDownloadHint 通知的指定范围准备数据，然后再次调用此函数。

参数

  [in] | index | 页面索引。有效范围：从0到(count-1)。 count由函数 PDFDoc::GetPageCount 返回。

返回
  包含指定页面基本信息的页面基本信息对象。

## ◆ GetPageCount()

int foxit::pdf::PDFDoc::GetPageCount | ( |  | ) | const

获取页面数量。

返回
  页面数量。

## ◆ GetPagesDict()

objects::PDFDictionary* foxit::pdf::PDFDoc::GetPagesDict | ( |  | ) | const

获取"Pages"的字典。

返回
  "Pages"的字典。 如果没有"Pages"条目或发生任何错误，此函数将返回NULL。

## ◆ GetPageText()

WString foxit::pdf::PDFDoc::GetPageText | ( | int | page_index | ) | const

以显示顺序获取指定页面文本。

参数

  [in] | page_index | 页面索引。有效范围：从0到（count-1）。 count 返回于 PDFDoc::GetPageCount 。

返回
  页面相关联的所有文本，该文本将以显示顺序提供。

## ◆ GetPasswordType()

PasswordType foxit::pdf::PDFDoc::GetPasswordType | ( |  | ) | const

获取当前使用的密码类型。

此函数在加载PDF文档后很有用，以获取加载过程中使用的密码类型。
如果当前文档是新的（不是从现有PDF文件加载），此函数将返回 PDFDoc::e_PwdNoPassword。
如果当前文档是从现有文件构造但尚未加载， 此函数将返回PDFDoc::e_PwdInvalid。

返回
  密码类型。请参考从PDFDoc::e_PwdInvalid开始的值， 这将是这些值中的一个。

## ◆ GetPayLoadData()

PayLoadData foxit::pdf::PDFDoc::GetPayLoadData | ( |  | ) |

如果当前文档的包装类型是 PDFDoc::e_WrapperPDFV2，获取载荷数据。

返回
  载荷数据。如果找不到包装数据或当前文档的包装类型不是 PDFDoc::e_WrapperPDFV2，将返回值为0和空字符串的载荷数据对象。

## ◆ GetReadingBookmark()

ReadingBookmark foxit::pdf::PDFDoc::GetReadingBookmark | ( | int | index | ) |

通过索引获取阅读书签。

参数

  [in] | index | 阅读书签的索引。有效范围：从0到(count-1)。 count 由函数 PDFDoc::GetReadingBookmarkCount 返回。

返回
  指定索引的阅读书签对象。

## ◆ GetReadingBookmarkCount()

int foxit::pdf::PDFDoc::GetReadingBookmarkCount | ( |  | ) |

获取阅读书签的数量。

返回
  阅读书签的数量。

## ◆ GetRMSEncryptData()

RMSEncryptData foxit::pdf::PDFDoc::GetRMSEncryptData | ( |  | ) | const

获取RMS加密的加密数据。

当当前文档使用RMS加密时，此函数很有用。

返回
  RMS加密的加密数据。

注解
  如果在函数common::Library::Initialize中使用的许可证信息中未定义"RMS"模块， 这意味着用户没有使用RMS相关函数的权利，此函数将抛出异常foxit::e_ErrNoRMSModuleRight。

## ◆ GetRootBookmark()

Bookmark foxit::pdf::PDFDoc::GetRootBookmark | ( |  | ) |

获取书签根节点。

返回
  表示根书签的书签对象。 如果当前PDF文档中没有书签，此函数将返回一个其函数 Bookmark::IsEmpty 返回true的书签对象。

## ◆ GetSecurityHandler()

SecurityHandler foxit::pdf::PDFDoc::GetSecurityHandler | ( |  | ) |

获取当前文档的当前PDF安全处理程序。

返回
  PDF安全处理程序对象。

注解
  如果在函数 common::Library::Initialize 中使用的许可证信息中未定义模块"RMS"， 这意味着用户没有使用RMS相关功能的权限，此函数将抛出异常 foxit::e_ErrNoRMSModuleRight。

## ◆ GetSignature()

foxit::pdf::Signature foxit::pdf::PDFDoc::GetSignature | ( | int | index | ) |

通过索引获取签名。

参数

  [in] | index | 签名的索引。有效范围：从0到(count-1)。 count 由函数 PDFDoc::GetSignatureCount 返回。

返回
  签名对象。

## ◆ GetSignatureCount()

int foxit::pdf::PDFDoc::GetSignatureCount | ( |  | ) |

获取签名数量。

返回
  签名数量。

## ◆ GetStdEncryptData()

StdEncryptData foxit::pdf::PDFDoc::GetStdEncryptData | ( |  | ) | const

获取标准加密（称为密码加密）的加密数据。

当当前文档使用密码加密时，此函数很有用。

返回
  标准加密的加密数据。

## ◆ GetTrailer()

objects::PDFDictionary* foxit::pdf::PDFDoc::GetTrailer | ( |  | ) | const

获取拖车字典。

返回
  拖车字典。 如果没有拖车字典或发生任何错误，此函数将返回NULL。

## ◆ GetUserPassword()

String foxit::pdf::PDFDoc::GetUserPassword | ( | const String & | owner_password | ) |

基于所有者密码获取用户密码。

当当前文档使用密码加密时，此函数很有用。

参数

  [in] | owner_password | 所有者密码字符串。

返回
  用户密码字符串。

## ◆ GetUserPermissions()

uint32 foxit::pdf::PDFDoc::GetUserPermissions | ( |  | ) | const

获取用户访问权限。

返回
  用户访问权限。请参考从 PDFDoc::e_PermPrint 开始的值， 这将是这些值中的一个。

## ◆ GetWrapperData()

WrapperData foxit::pdf::PDFDoc::GetWrapperData | ( |  | ) | const

如果当前文档的包装类型是 PDFDoc::e_WrapperFoxit，获取包装数据。

返回
  包装数据。如果找不到包装数据或当前文档的包装类型不是 PDFDoc::e_WrapperFoxit，将返回值为0和空字符串的包装数据对象。

## ◆ GetWrapperOffset()

int64 foxit::pdf::PDFDoc::GetWrapperOffset | ( |  | ) | const

如果当前文档的包装类型是 PDFDoc::e_WrapperFoxit，获取包装偏移量。

返回
  包装偏移量。如果找不到包装数据或当前文档的包装类型不是 PDFDoc::e_WrapperFoxit，将返回-1。

## ◆ GetWrapperType()

WrapperType foxit::pdf::PDFDoc::GetWrapperType | ( |  | ) | const

获取包装类型。

返回
  包装类型。请参考从 PDFDoc::e_WrapperNone 开始的值， 这将是其值中的一个或组合。

## ◆ HasForm()

bool foxit::pdf::PDFDoc::HasForm | ( |  | ) | const

检查当前PDF文档是否有交互式表单（也称为AcroForm）。

如果当前PDF文档对象是使用AsyncReaderCallback构造的（表示进行异步加载）， 此函数可能抛出异常 foxit::e_ErrDataNotReady。 在这种情况下，用户应该为回调函数 common::file::AsyncReaderCallback::AddDownloadHint 通知的指定范围准备数据，然后再次调用此函数。

返回
  true 表示当前文档有交互式表单。 false 表示当前文档没有交互式表单。

## ◆ HasHeaderFooter()

bool foxit::pdf::PDFDoc::HasHeaderFooter | ( |  | ) |

检查当前文档是否有页眉页脚。

返回
  true 表示当前文档有页眉页脚， false 表示当前文档没有页眉页脚。

## ◆ HasLayer()

bool foxit::pdf::PDFDoc::HasLayer | ( |  | ) | const

检查当前PDF文档是否有图层（在《PDF参考手册1.7》中称为"可选内容组"）。

返回
  true 表示当前文档有图层。 false 表示当前文档没有图层。

## ◆ HidePageTemplate()

bool foxit::pdf::PDFDoc::HidePageTemplate | ( | const wchar_t * | template_name | ) |

隐藏命名页面。

PDF文档中的页面可以映射到PDF文档中页面名称树中定义的名称。 此函数可用于隐藏这些命名页面。
类 objects::PDFNameTree（使用类型 objects::PDFNameTree::e_Pages 初始化）可用于确定 哪些页面名称可用以及将页面映射到名称。
PDF页面被隐藏后，名称将在内部移动到文档的模板名称树。

参数

  [in] | template_name | 要隐藏的PDF页面的名称。

返回
  true 表示成功，false 表示失败。

## ◆ ImportFromFDF()

bool foxit::pdf::PDFDoc::ImportFromFDF | ( | const fdf::FDFDoc & | fdf_doc,
|  | int | types = `pdf::PDFDoc::e_Forms|pdf::PDFDoc::e_Annots`,
|  | const common::Range & | page_range = `common::Range()`
| ) |  |

从FDF/XFDF文档导入表单字段和注释。

它还支持从FDF模板导入表单字段。与FDF模板关联的页面将插入到文档的末尾。 有关可用于导出的PDF对象类型的更多详细信息， 请参考"XML Forms Data Format Specification"第22页。

参数

  [in] | fdf_doc | 一个有效的FDF/XFDF文档对象，从中导入表单字段和注释。
  [in] | types | 用于决定将导入哪种类型的数据。请参考从 PDFDoc::e_Forms 开始的值， 这可以是这些值中的一个或组合。 默认值：(PDFDoc::e_Forms | PDFDoc::e_Annots)。 如果fdf_doc是fdf模板，此参数不起作用。
  [in] | page_range | 指定一些页面的范围对象。FDF/XFDF文档中的数据（指定类型）将被导入到这些指定页面。 如果此范围对象通过默认构造函数构造且未设置任何值，意味着FDF/XFDF文档中的数据（指定类型） 将被导入到相关的PDF页面，这些页面的索引已在FDF/XFDF文档中定义。 此参数仅在参数types包含 PDFDoc::e_Annots 时有用。 默认值：通过默认构造函数构造且未设置任何值的范围对象。 如果fdf_doc是fdf模板，此参数不起作用。

返回
  true表示成功，false表示失败。

## ◆ InsertDocument() [1/2]

void foxit::pdf::PDFDoc::InsertDocument | ( | int | dest_index,
|  | const PDFDoc & | src_doc,
|  | uint32 | options
| ) |  |

将另一个PDF文档插入到当前PDF文档的指定位置。

参数

  [in] | dest_index | 当前PDF文档中的页面索引。用于指定从src_doc插入页面的位置： 如果参数dest_index小于0，这些页面将被插入到最前面。 如果参数dest_index等于或大于当前页面计数， 这些页面将被插入到末尾。
  [in] | src_doc | 代表要插入到当前PDF文档的PDF文档的PDF文档对象。 此文档中的所有页面都将被插入到当前PDF文档中。 请保持此源PDF文档对象有效，直到当前文档不再保存或关闭。
  [in] | options | 插入PDF文档的选项。请参考从 PDFDoc::e_InsertDocOptionAttachments 开始的值， 这可以是这些值中的一个或组合。0表示不使用任何选项。

返回
  无。

## ◆ InsertDocument() [2/2]

void foxit::pdf::PDFDoc::InsertDocument | ( | int | dest_index,
|  | const PDFDoc & | src_doc,
|  | uint32 | options,
|  | const wchar_t * | bookmark_title
| ) |  |

将另一个PDF文档插入到当前PDF文档的指定位置。

参数

  [in] | dest_index | 当前PDF文档中的页面索引。用于指定从src_doc插入页面的位置： 如果参数dest_index小于0，这些页面将被插入到最前面。 如果参数dest_index等于或大于当前页面计数， 这些页面将被插入到末尾。
  [in] | src_doc | 代表要插入到当前PDF文档的PDF文档的PDF文档对象。 此文档中的所有页面都将被插入到当前PDF文档中。 请保持此源PDF文档对象有效，直到当前文档不再保存或关闭。
  [in] | options | 插入PDF文档的选项。请参考从 PDFDoc::e_InsertDocOptionAttachments 开始的值， 这可以是这些值中的一个或组合。0表示不使用任何选项。
  [in] | bookmark_title | 书签的标题。默认值：InsertBookMark。

返回
  无。

## ◆ InsertPage() [1/2]

PDFPage foxit::pdf::PDFDoc::InsertPage | ( | int | index,
|  | float | width,
|  | float | height
| ) |  |

通过索引向文档插入新的空白PDF页面。

参数

  [in] | index | 新页面的页面索引。 如果参数 index 小于0，新页面将插入到第一个位置。 如果参数 index 等于或大于当前页面数量， 新页面将插入到末尾。
  [in] | width | 新页面的宽度（单位是1/72英寸）。
  [in] | height | 新页面的高度（单位是1/72英寸）。

返回
  表示空白页面的新PDF页面对象。

## ◆ InsertPage() [2/2]

PDFPage foxit::pdf::PDFDoc::InsertPage | ( | int | index,
|  | foxit::pdf::PDFPage::Size | size = `PDFPage::e_SizeLetter`
| ) |  |

通过索引向文档插入新的空白PDF页面。

参数

  [in] | index | 新页面的页面索引。 如果参数 index 小于0，新页面将插入到第一个位置。 如果参数 index 等于或大于当前页面数量， 新页面将插入到末尾。
  [in] | size | 新页面的尺寸类型。请参考从 PDFPage::e_SizeLetter 开始的值， 这应该是这些值中的一个。默认值：PDFPage::e_SizeLetter。

返回
  表示空白页面的新PDF页面对象。

## ◆ InsertReadingBookmark()

ReadingBookmark foxit::pdf::PDFDoc::InsertReadingBookmark | ( | int | reading_bookmark_index,
|  | const WString & | title,
|  | int | dest_page_index
| ) |  |

向当前PDF文档插入阅读书签。

参数

  [in] | reading_bookmark_index | 阅读书签索引。 如果 reading_bookmark_index 小于0，新的阅读书签将插入到第一个位置。 如果 reading_bookmark_index 等于或大于阅读书签的数量， 新的阅读书签将插入到末尾。
  [in] | title | 新阅读书签的标题字符串，不应为空字符串。
  [in] | dest_page_index | 目标页面的索引。

返回
  新的阅读书签对象。

## ◆ IsEmpty()

bool foxit::pdf::PDFDoc::IsEmpty | ( |  | ) | const

检查当前对象是否为空。

当前对象为空时，表示当前对象是无用的。

返回
  true 表示当前对象为空，false 表示不为空。

## ◆ IsEncrypted()

bool foxit::pdf::PDFDoc::IsEncrypted | ( |  | ) | const

检查当前文档是否为加密文件。

返回
  true表示当前文档是加密文件， false表示当前文档不是加密文件。

## ◆ IsLinearized()

bool foxit::pdf::PDFDoc::IsLinearized | ( |  | ) | const

检查当前PDF文档是否为线性化文件。

- 如果当前文档对象使用 common::file::AsyncReaderCallback 对象构造，此函数可以 在文档成功加载之前或之后使用。特别地，如果在文档成功加载之前调用此函数， 应用程序应确保PDF文件的前1024字节可用；否则，此函数将调用回调函数 common::file::AsyncReaderCallback::AddDownloadHint 通知应用程序应下载的数据范围， 然后此函数将抛出异常 foxit::e_ErrDataNotReady。
- 如果当前文档对象通过其他方法或使用普通 common::file::ReaderCallback 对象构造， 此函数只能在文档成功加载后使用；否则， 将抛出异常 foxit::e_ErrUnknownState。

返回
  true 表示当前PDF文档是线性化文件， false 表示当前PDF文档不是线性化文件。

## ◆ IsOwnerPassword() [1/2]

bool foxit::pdf::PDFDoc::IsOwnerPassword | ( | const foxit::WString & | password | ) |

检查输入密码是否为当前PDF文档的所有者密码。

参数

  [in] | password | 要检测的密码字符串。

返回
  true表示输入密码是当前PDF文档的所有者密码，false表示 输入密码不是当前PDF文档的所有者密码。

## ◆ IsOwnerPassword() [2/2]

bool foxit::pdf::PDFDoc::IsOwnerPassword | ( | const String & | password | ) |

检查输入密码是否为当前PDF文档的所有者密码。

参数

  [in] | password | 要检测的密码字符串。

返回
  true表示输入密码是当前PDF文档的所有者密码，false表示 输入密码不是当前PDF文档的所有者密码。

## ◆ IsPortfolio()

bool foxit::pdf::PDFDoc::IsPortfolio | ( |  | ) |

检查当前PDF文档是否为文档集文件。

返回
  true表示当前PDF文档是文档集文件，false表示不是。

## ◆ IsTaggedPDF()

bool foxit::pdf::PDFDoc::IsTaggedPDF | ( |  | ) | const

检查当前PDF文档是否为标签化PDF文件。

标签化PDF意味着PDF文档中存在结构树。

返回
  true 表示当前PDF文档是标签化PDF文件， false 表示当前PDF文档不是标签化PDF文件。

## ◆ IsUserPassword() [1/2]

bool foxit::pdf::PDFDoc::IsUserPassword | ( | const foxit::WString & | password | ) |

检查输入密码是否为当前PDF文档的用户密码。

参数

  [in] | password | 要检测的密码字符串。

返回
  true表示输入密码是当前PDF文档的用户密码，false表示 输入密码不是当前PDF文档的用户密码。

## ◆ IsUserPassword() [2/2]

bool foxit::pdf::PDFDoc::IsUserPassword | ( | const String & | password | ) |

检查输入密码是否为当前PDF文档的用户密码。

参数

  [in] | password | 要检测的密码字符串。

返回
  true表示输入密码是当前PDF文档的用户密码，false表示 输入密码不是当前PDF文档的用户密码。

## ◆ IsWrapper()

bool foxit::pdf::PDFDoc::IsWrapper | ( |  | ) | const

检查当前文档是否为包装文件。

返回
  true 表示当前文档是包装文件， false 表示当前文档不是包装文件。

## ◆ IsXFA()

bool foxit::pdf::PDFDoc::IsXFA | ( |  | ) | const

检查当前PDF文档是否为XFA文档。

目前，Foxit PDF SDK不完全支持XFA文档。当加载XFA文档时， Foxit PDF SDK可能只加载XFA包装级别，无法访问真正的XFA内容。 Foxit PDF SDK尚不支持在XFA文档中插入/导入/删除/移动页面。

返回
  true表示当前文档是XFA文档， false表示当前文档不是XFA文档。

## ◆ Load()

ErrorCode foxit::pdf::PDFDoc::Load | ( | const String & | password = `""` | ) |

使用指定密码加载当前文档内容。

如果当前PDF文档对象是使用AsyncReaderCallback构造的，这意味着进行异步加载， 此函数可能返回 foxit::e_ErrDataNotReady。 在这种情况下，用户应该为回调函数 common::file::AsyncReaderCallback::AddDownloadHint 通知的指定范围准备数据，然后再次调用此函数。

参数

  [in] | password | 用于加载当前文档内容的密码字符串。密码可以是用户密码或所有者密码。 如果当前文档未使用密码加密，只需传递空字符串。默认值：空字符串。

返回
  foxit::e_ErrSuccess 表示成功。
  foxit::e_ErrFile 表示访问当前文档时发生任何错误。
  foxit::e_ErrPassword 表示输入密码错误。
  foxit::e_ErrFormat 表示当前文档内容的格式不是PDF或文件已损坏。
  foxit::e_ErrSecurityHandler 表示当前PDF文档由某些不支持的安全处理程序加密。
  foxit::e_ErrCertificate 表示当前PDF文档由数字证书加密， 当前用户没有正确的证书。
  对于其他错误代码值，请参考从 foxit::e_ErrSuccess 开始的值以获取更多详情。

## ◆ LoadW()

ErrorCode foxit::pdf::PDFDoc::LoadW | ( | const WString & | password = `WString()` | ) |

使用指定密码加载当前文档内容。

如果当前PDF文档对象是使用AsyncReaderCallback构造的，这意味着进行异步加载， 此函数可能返回 foxit::e_ErrDataNotReady。 在这种情况下，用户应该为回调函数 common::file::AsyncReaderCallback::AddDownloadHint 通知的指定范围准备数据，然后再次调用此函数。

参数

  [in] | password | 用于加载当前文档内容的密码字符串。密码可以是用户密码或所有者密码。 如果当前文档未使用密码加密，只需传递空字符串。默认值：空字符串。

返回
  foxit::e_ErrSuccess 表示成功。
  foxit::e_ErrFile 表示访问当前文档时发生任何错误。
  foxit::e_ErrPassword 表示输入密码错误。
  foxit::e_ErrFormat 表示当前文档内容的格式不是PDF或文件已损坏。
  foxit::e_ErrSecurityHandler 表示当前PDF文档由某些不支持的安全处理程序加密。
  foxit::e_ErrCertificate 表示当前PDF文档由数字证书加密， 当前用户没有正确的证书。
  对于其他错误代码值，请参考从 foxit::e_ErrSuccess 开始的值以获取更多详情。

## ◆ MovePagesTo()

bool foxit::pdf::PDFDoc::MovePagesTo | ( | const common::Range & | page_range,
|  | int | dest_index
| ) |  |

将一个或多个页面（按索引指定）移动到新位置。

如果只移动一个页面，此函数与函数 PDFDoc::MovePageTo 功能相同。
如果移动多个页面，这些页面将保持参数 page_range 中定义的顺序， 并作为一个整体移动到目标索引位置之后，基于当前页面数组。
此函数成功后，移动页面的索引将发生变化，其余页面的索引也可能受到影响。 例如：

- 原始页面顺序：[0, 1, 2, 3, 4, 5]
- 要移动的页面：[0, 1]
- 目标索引：4（移动到索引4之后）
- 结果顺序：[2, 3, 4, 0, 1, 5]。

参数

  [in] | page_range | 应至少包含一个有效范围的范围对象。 所有相关页面将保持顺序（由此范围指定）并作为一个整体移动。 如果范围中存在重复的索引，只有最后一次出现的才有用。
  [in] | dest_index | 目标位置的索引，基于当前页面数组。 页面将作为一个整体移动到目标索引位置之后。 如果要将页面移动到文档开头，将目标索引设置为任何负值，如-1。 如果要将页面移动到文档末尾，设置大于最后页面索引的目标索引。

返回
  true 表示成功或无需移动当前页面，false 表示失败。

## ◆ MovePageTo()

bool foxit::pdf::PDFDoc::MovePageTo | ( | const PDFPage & | page,
|  | int | dest_index
| ) |  |

将指定页面移动到新位置。

page 将移动到目标索引位置之后。如果指定页面成功移动到新位置， 指定页面的新索引和旧索引之间所有页面的页面索引也将发生变化。 例如，

- 原始页面顺序：[0, 1, 2, 3, 4, 5]
- 要移动的页面：[0]
- 目标索引：4（移动到索引4之后）
- 结果顺序：[1, 2, 3, 4, 0, 5]。

参数

  [in] | page | 要移动的PDF页面。它应该在当前PDF文档中。
  [in] | dest_index | 当前页面数组中目标位置的索引。page 将移动到目标索引位置之后。 count 由函数 PDFDoc::GetPageCount 返回。 如果要将页面移动到文档开头，将目标索引设置为任何负值，如-1。 如果要将页面移动到文档末尾，设置大于最后页面索引的目标索引。 如果参数 dest_index 与参数 page 的页面索引相同， 不会进行任何更改，此函数将直接返回true。

返回
  true 表示成功或无需移动当前页面，false 表示失败。

## ◆ operator!=()

bool foxit::pdf::PDFDoc::operator!= | ( | const PDFDoc & | other | ) | const

不等操作符。

参数

  [in] | other | 另一个PDF文档对象。此函数将检查当前对象是否不等于这个对象。

返回
  true 表示不相等，false 表示相等。

## ◆ operator=()

PDFDoc& foxit::pdf::PDFDoc::operator= | ( | const PDFDoc & | other | ) |

赋值操作符。

参数

  [in] | other | 另一个PDF文档对象，其值将被赋给当前对象。

返回
  当前对象自身的引用。

## ◆ operator==()

bool foxit::pdf::PDFDoc::operator== | ( | const PDFDoc & | other | ) | const

相等操作符。

参数

  [in] | other | 另一个PDF文档对象。此函数将检查当前对象是否等于这个对象。

返回
  true 表示相等，false 表示不相等。

## ◆ RemoveAllHeaderFooters()

bool foxit::pdf::PDFDoc::RemoveAllHeaderFooters | ( |  | ) |

删除所有页眉页脚。

返回
  true 表示成功，false 表示失败。

## ◆ RemoveBookmark()

bool foxit::pdf::PDFDoc::RemoveBookmark | ( | const Bookmark & | bookmark | ) |

删除指定的书签。

参数

  [in] | bookmark | 要删除的有效书签。

返回
  true 表示成功，false 表示失败。

## ◆ RemoveHiddenInfo()

void foxit::pdf::PDFDoc::RemoveHiddenInfo | ( | const HiddenInfoSettingData & | hidden_data_setting | ) |

根据用户定义的设置从当前PDF文档中删除指定类型的隐藏信息。

此方法提供对清理过程的精细控制。只有在提供的设置对象中启用的数据类型才会被删除。 它允许选择性删除诸如元数据、书签、隐藏文本、图层、注释、链接等元素。

参数

  [in] | hidden_data_setting | 一个 HiddenInfoSettingData 对象，定义要删除的隐藏数据类型。

返回
  无。

## ◆ RemoveOpenAction()

bool foxit::pdf::PDFDoc::RemoveOpenAction | ( |  | ) |

移除文档打开时要执行的动作。

返回
  true表示成功，false表示失败。

## ◆ RemovePage() [1/2]

bool foxit::pdf::PDFDoc::RemovePage | ( | const foxit::pdf::PDFPage & | page | ) |

删除指定的PDF页面。

一旦指定的PDF页面被成功删除，页面对象就不能再使用。

参数

  [in] | page | 表示要删除的PDF页面的PDF页面对象。页面应该在当前PDF文档中。

返回
  true 表示成功，false 表示失败。

## ◆ RemovePage() [2/2]

bool foxit::pdf::PDFDoc::RemovePage | ( | int | index | ) |

通过页面索引删除PDF页面。

参数

  [in] | index | 页面索引。有效范围：从0到(count-1)。 count 由函数 PDFDoc::GetPageCount 返回。

返回
  true 表示成功，false 表示失败。

## ◆ RemoveReadingBookmark()

bool foxit::pdf::PDFDoc::RemoveReadingBookmark | ( | const ReadingBookmark & | reading_bookmark | ) |

从当前PDF文档中删除阅读书签。

参数

  [in] | reading_bookmark | 要删除的有效阅读书签。

返回
  true 表示成功，false 表示失败。

## ◆ RemoveSecurity()

bool foxit::pdf::PDFDoc::RemoveSecurity | ( |  | ) |

从当前文档中移除安全处理程序，以便后续保存的文档将是未加密的。

返回
  true表示成功，false表示失败。

注解
  如果在函数 common::Library::Initialize 中使用的许可证信息中未定义模块"RMS"， 这意味着用户没有使用RMS相关功能的权限，此函数将抛出异常 foxit::e_ErrNoRMSModuleRight。

## ◆ RemoveSignature()

void foxit::pdf::PDFDoc::RemoveSignature | ( | const foxit::pdf::Signature & | signature | ) |

删除签名。

参数

  [in] | signature | 要删除的有效签名。如果此签名的类型是 Signature::e_SignatureTypePagingSeal，此函数 将删除与此签名相关的所有签名。

返回
  无。

## ◆ RemoveStructTree()

void foxit::pdf::PDFDoc::RemoveStructTree | ( |  | ) |

移除当前文档中的结构树。

返回
  无。

## ◆ Sanitize()

void foxit::pdf::PDFDoc::Sanitize | ( |  | ) |

使用默认设置从当前PDF文档中删除所有隐藏或潜在敏感信息。

此方法对PDF文档执行完整的清理。它自动检测并删除元数据、注释、隐藏文本、 文件附件、注释以及其他可能包含隐藏或私人信息的元素。

返回
  无。

## ◆ SaveAs() [1/2]

bool foxit::pdf::PDFDoc::SaveAs | ( | const char * | file_path,
|  | uint32 | save_flags = `PDFDoc::e_SaveFlagNormal`
| ) |  |

将当前PDF文档另存为另一个PDF文件。

如果当前文档是从现有PDF文件加载的，并且在保存之前通过 PDFDoc::SetFileVersion 设置了不同的文件版本，Foxit PDF SDK将忽略参数 save_flags 中的 PDFDoc::e_SaveFlagIncremental 并在保存的PDF文件中使用文件版本。

参数

  [in] | file_path | 新保存的PDF文件的完整路径。它不应该是空字符串。
  [in] | save_flags | 文档保存标志。请参考从 PDFDoc::e_SaveFlagNormal 开始的值， 这可以是这些值中的一个或组合。 默认值：PDFDoc::e_SaveFlagNormal。

返回
  true 表示保存成功完成，false 表示失败。

注解
  此函数不支持将当前PDF文档对象保存回用于构造当前PDF对象的PDF文件。 为了这样做，建议用户按照以下步骤操作：
  假设当前PDF对象是从名为"org.pdf"的PDF文件构造的。
  1. 使用当前函数将当前PDF对象保存到临时文件。这里，此临时文件名为"temp.tmp"。
  2. 确保当前PDF对象已析构——这等同于"关闭文档"。
  3. 删除"org.pdf"并将"temp.tmp"重命名为"org.pdf"。
  然后用户可以打开保存的PDF文件进行其他操作。

## ◆ SaveAs() [2/2]

bool foxit::pdf::PDFDoc::SaveAs | ( | const wchar_t * | file_path,
|  | uint32 | save_flags = `PDFDoc::e_SaveFlagNormal`
| ) |  |

将当前PDF文档另存为另一个PDF文件。

如果当前文档是从现有PDF文件加载的，并且在保存之前通过 PDFDoc::SetFileVersion 设置了不同的文件版本，Foxit PDF SDK将忽略参数 save_flags 中的 PDFDoc::e_SaveFlagIncremental 并在保存的PDF文件中使用文件版本。

参数

  [in] | file_path | 新保存的PDF文件的完整路径。它不应该是空字符串。
  [in] | save_flags | 文档保存标志。请参考从 PDFDoc::e_SaveFlagNormal 开始的值， 这可以是这些值中的一个或组合。 默认值：PDFDoc::e_SaveFlagNormal。

返回
  true 表示保存成功完成，false 表示失败。

注解
  此函数不支持将当前PDF文档对象保存回用于构造当前PDF对象的PDF文件。 为了这样做，建议用户按照以下步骤操作：
  假设当前PDF对象是从名为"org.pdf"的PDF文件构造的。
  1. 使用当前函数将当前PDF对象保存到临时文件。这里，此临时文件名为"temp.tmp"。
  2. 确保当前PDF对象已析构——这等同于"关闭文档"。
  3. 删除"org.pdf"并将"temp.tmp"重命名为"org.pdf"。
  然后用户可以打开保存的PDF文件进行其他操作。

## ◆ SaveAsWrapperFile()

bool foxit::pdf::PDFDoc::SaveAsWrapperFile | ( | const wchar_t * | file_path,
|  | const WrapperData * | wrapper_data = `0`,
|  | uint32 | user_permissions = `0xFFFFFFFC`,
|  | const char * | owner_password = `""`
| ) |  |

将当前PDF文档另存为包装文件。

PDF包装是一个扩展标准，它帮助向查看器提示一些信息。
PDF包装包含

- 包装类型：它是一个标识字符串，
- 包装偏移量：它告诉原始数据的结束位置，
- 包装模板：它是包装文档的内容。

此函数使用由 file_path 指定的文件的当前大小来设置包装偏移量。

参数

  [in] | file_path | PDF文件的完整路径。 当前PDF文档将作为包装文件保存到此PDF文件中。
  [in] | wrapper_data | 包装数据。如果这是NULL，则不使用包装数据。 默认值：NULL。
  [in] | user_permissions | 包装文档的用户权限。如果不需要特殊权限，传递0xFFFFFFFC。 请参考从 PDFDoc::e_PermPrint 开始的值， 这应该是这些值中的一个或组合。默认值：0xFFFFFFFC。
  [in] | owner_password | 所有者密码。如果这是空字符串，参数 user_permissions 将被忽略。 默认值：空字符串。

返回
  true 表示成功，false 表示失败。

## ◆ SetCacheFile()

void foxit::pdf::PDFDoc::SetCacheFile | ( | foxit::common::file::StreamCallback * | file_stream,
|  | bool | is_own_file_stream
| ) |  |

设置缓存文件 (代表文件流) 到当前PDF文档。

当生成内容流时，缓存文件可以被用于缓存大量数据。

参数

  [in] | file_stream | 由用户实现common::file::StreamCallback 对象用于数据缓存。 它可以是 NULL 。它是 NULL ，原始缓存文件将被释放。
  [in] | is_own_file_stream | 用于决定福昕PDF SDK 是否应该持有输入流回调对象所有权 : true 表示输入流对象将被福昕PDF SDK销毁 (当不再为当前文档缓存数据时，可以通过调用接口 StreamCallback::Release 释放)。 false 表示用户应该负责销毁回调对象。

返回
  无。

## ◆ SetDisplayMode()

void foxit::pdf::PDFDoc::SetDisplayMode | ( | DisplayMode | display_mode | ) |

设置显示模式。

显示模式指定文档打开时应如何显示。

参数

  [in] | display_mode | 显示模式值。请参考从 PDFDoc::e_DisplayUseNone 开始的值， 这应该是这些值中的一个。

返回
  无。

## ◆ SetFileVersion()

void foxit::pdf::PDFDoc::SetFileVersion | ( | int | version | ) |

设置将存储在保存的PDF文件的PDF头部部分中的PDF文件版本。

新的文件版本不会直接影响当前文档，但会在函数 pdf::PDFDoc::SaveAs 或 PDFDoc::StartSaveAs 中的保存PDF文件中使用。此函数不检查PDF内容是否与指定版本匹配。
如果用户想要进行关于PDF版本的合规性转换，请参考模块"Compliance" 并使用类 addon::compliance::PDFCompliance。

参数

  [in] | version | 指定文件版本的整数，例如值14表示版本"1.4"， 值15表示"1.5"，等等。此值应从10到17或20， 并且等于或大于当前PDF文件的当前版本。

返回
  无。

## ◆ SetOpenAction()

bool foxit::pdf::PDFDoc::SetOpenAction | ( | actions::Action & | action | ) |

设置文档打开时要执行的动作。

参数

  [in] | action | 要设置的有效动作。目前仅支持以下类型作为新动作： actions::Action::e_TypeGoto, actions::Action::e_TypeURI, actions::Action::e_TypeJavaScript, actions::Action::e_TypeNamed, actions::Action::e_TypeSubmitForm, actions::Action::e_TypeResetForm, actions::Action::e_TypeHide, actions::Action::e_TypeImportData。

返回
  true表示成功，false表示失败。

## ◆ SetSecurityHandler()

bool foxit::pdf::PDFDoc::SetSecurityHandler | ( | const SecurityHandler & | handler | ) |

为加密设置PDF安全处理程序，如标准加密（密码）、 证书加密等。

参数

  [in] | handler | PDF安全处理程序对象。

返回
  true表示成功，false表示失败。

注解
  如果在函数 common::Library::Initialize 中使用的许可证信息中未定义模块"RMS"， 这意味着用户没有使用RMS相关功能的权限，此函数将抛出异常 foxit::e_ErrNoRMSModuleRight。

## ◆ StartAddTiledWatermark() [1/4]

common::Progressive foxit::pdf::PDFDoc::StartAddTiledWatermark | ( | const foxit::pdf::PDFPage & | page,
|  | const TiledWatermarkSettings & | settings,
|  | const common::Range & | page_range,
|  | common::PauseCallback * | pause = `0`
| ) |  |

添加页面类型平铺水印。

如果水印被平铺到多页，这些页面将保持参数page_range的顺序 如果参数 page_range 被初始化为空， 平铺水印将被添加到所有页面中。另外，动态XFA不支持添加平铺水印。

参数

  [in] | page | 有效的页面对象，内容用于添加平铺水印。
  [in] | settings | 平铺水印设置，包含布局设置。
  [in] | page_range | 应至少包含一个有效范围的范围对象。 所有相关页面将保持顺序（由此范围指定）并作为一个整体移动。 如果范围中存在重复的索引，只有最后一次出现的才有用。
  [in] | pause | 决定加载过程是否需要暂停的暂停对象。 这可以是NULL，表示在解析过程中不暂停。 如果这不是NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  步进式进度对象。 请通过函数 common::Progressive::GetRateOfProgress 检查当前进度。如果当前进度比率没有到100，需要调用 common::Progressive::Continue 继续进度直到进度完成。

## ◆ StartAddTiledWatermark() [2/4]

common::Progressive foxit::pdf::PDFDoc::StartAddTiledWatermark | ( | const wchar_t * | src_img_file_path,
|  | const TiledWatermarkSettings & | settings,
|  | const common::Range & | page_range,
|  | common::PauseCallback * | pause = `0`
| ) |  |

Add image type tiled watermark to PDF pages by image path.

如果水印被平铺到多页，这些页面将保持参数page_range的顺序 如果参数 page_range 被初始化为空， 平铺水印将被添加到所有页面中。另外，动态XFA不支持添加平铺水印。
图像平铺水印支持 .bmp .dib .jpg .jpeg .jpe .gif .png .tif .tiff 格式。

参数

  [in] | src_img_file_path | 图像文件路径。这个不应该为空。
  [in] | settings | 平铺水印设置，包含布局设置。
  [in] | page_range | 应至少包含一个有效范围的范围对象。 所有相关页面将保持顺序（由此范围指定）并作为一个整体移动。 如果范围中存在重复的索引，只有最后一次出现的才有用。
  [in] | pause | 决定加载过程是否需要暂停的暂停对象。 这可以是NULL，表示在解析过程中不暂停。 如果这不是NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  步进式进度对象。 请通过函数 common::Progressive::GetRateOfProgress 检查当前进度。如果当前进度比率没有到100，需要调用 common::Progressive::Continue 继续进度直到进度完成。

## ◆ StartAddTiledWatermark() [3/4]

common::Progressive foxit::pdf::PDFDoc::StartAddTiledWatermark | ( | const wchar_t * | text,
|  | const TiledWatermarkSettings & | settings,
|  | const WatermarkTextProperties & | properties,
|  | const common::Range & | page_range,
|  | common::PauseCallback * | pause = `0`
| ) |  |

添加文本平铺水印到页面中。

如果水印被平铺到多页，这些页面将保持参数page_range的顺序 如果参数 page_range 被初始化为空， 平铺水印将被添加到所有页面中。另外，动态XFA不支持添加平铺水印。

参数

  [in] | text | 文本字符串。它将用于平铺水印的内容，它不能为空。
  [in] | settings | 平铺水印设置，包含布局设置。
  [in] | properties | 平铺水印文本属性。
  [in] | page_range | 应至少包含一个有效范围的范围对象。 所有相关页面将保持顺序（由此范围指定）并作为一个整体移动。 如果范围中存在重复的索引，只有最后一次出现的才有用。
  [in] | pause | 决定加载过程是否需要暂停的暂停对象。 这可以是NULL，表示在解析过程中不暂停。 如果这不是NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  步进式进度对象。 请通过函数 common::Progressive::GetRateOfProgress 检查当前进度。如果当前进度比率没有到100，需要调用 common::Progressive::Continue 继续进度直到进度完成。

## ◆ StartAddTiledWatermark() [4/4]

common::Progressive foxit::pdf::PDFDoc::StartAddTiledWatermark | ( | foxit::common::file::ReaderCallback * | src_img_stream,
|  | const TiledWatermarkSettings & | settings,
|  | const common::Range & | page_range,
|  | common::PauseCallback * | pause = `0`
| ) |  |

通过图像流添加图片类型平铺水印到页面中。

如果水印被平铺到多页，这些页面将保持参数page_range的顺序 如果参数 page_range 被初始化为空， 平铺水印将被添加到所有页面中。另外，动态XFA不支持添加平铺水印。
图像平铺水印支持 .bmp .dib .jpg .jpeg .jpe .gif .png .tif .tiff 格式。

参数

  [in] | src_img_stream | common::file::ReaderCallback 对象用于用户传递图像数据给福昕PDF SDK， 它一定是有效的。
  [in] | settings | 平铺水印设置，包含布局设置。
  [in] | page_range | 应至少包含一个有效范围的范围对象。 所有相关页面将保持顺序（由此范围指定）并作为一个整体移动。 如果范围中存在重复的索引，只有最后一次出现的才有用。
  [in] | pause | 决定加载过程是否需要暂停的暂停对象。 这可以是NULL，表示在解析过程中不暂停。 如果这不是NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  步进式进度对象。 请通过函数 common::Progressive::GetRateOfProgress 检查当前进度。如果当前进度比率没有到100，需要调用 common::Progressive::Continue 继续进度直到进度完成。

## ◆ StartEmbedAllFonts()

common::Progressive foxit::pdf::PDFDoc::StartEmbedAllFonts | ( | common::PauseCallback * | pause = `0` | ) |

开始转换所有未嵌入字体为内嵌字体。

转换将花费很长事件, 所以这个接口使用步进式完成。
这个接口只工作与可用的字体来嵌入，字体是否支持内嵌可以通过common::Font::IsSupportEmbedded 检查。
内嵌后，这个接口将删除原始字体对象，然而，原始字体在文档中的引用将仍然存在。

参数

  [in] | pause | 决定加载过程是否需要暂停的暂停对象。 这可以是NULL，表示在解析过程中不暂停。 如果这不是NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  步进式进度对象。 请通过函数 common::Progressive::GetRateOfProgress 检查当前进度。如果当前进度比率没有到100，需要调用 common::Progressive::Continue 继续进度直到进度完成。

## ◆ StartExtractPages() [1/3]

common::Progressive foxit::pdf::PDFDoc::StartExtractPages | ( | const char * | file_path,
|  | uint32 | options,
|  | const common::Range & | page_range = `common::Range()`,
|  | common::PauseCallback * | pause = `0`
| ) |  |

开始从当前PDF文档提取页面。

提取页面可能需要很长时间，因此Foxit PDF SDK使用渐进式过程来执行此操作。

参数

  [in] | file_path | 用于保存提取页面的新保存PDF文件的完整路径。它不应该是空字符串。
  [in] | options | 提取页面的选项。请参考从 PDFDoc::e_ExtractPagesOptionAnnotation 开始的值， 这可以是这些值中的一个或组合。 0表示不使用任何选项。
  [in] | page_range | 指定要提取哪些页面的范围对象。如果此范围对象通过默认构造函数构造 且未设置任何值，将提取当前文档中的所有页面。 默认值：通过默认构造函数构造且未设置任何值的范围对象。
  [in] | pause | 决定提取过程是否需要暂停的暂停对象。 这可以是NULL，表示在解析过程中不暂停。 如果不是NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  渐进式对象。请通过函数 common::Progressive::GetRateOfProgress 检查当前进度的速率。 如果速率还不是100，调用函数 common::Progressive::Continue 继续进度直到进度完成。

## ◆ StartExtractPages() [2/3]

common::Progressive foxit::pdf::PDFDoc::StartExtractPages | ( | const wchar_t * | file_path,
|  | uint32 | options,
|  | const common::Range & | page_range = `common::Range()`,
|  | common::PauseCallback * | pause = `0`
| ) |  |

开始从当前PDF文档提取页面。

提取页面可能需要很长时间，因此Foxit PDF SDK使用渐进式过程来执行此操作。

参数

  [in] | file_path | 用于保存提取页面的新保存PDF文件的完整路径。不应为空字符串。
  [in] | options | 提取页面的选项。请参考从 PDFDoc::e_ExtractPagesOptionAnnotation 开始的值， 这可以是这些值中的一个或组合。0表示不使用任何选项。
  [in] | page_range | 指定要提取哪些页面的范围对象。如果此范围对象通过默认构造函数构造 且未设置任何值，将提取当前文档中的所有页面。 默认值：通过默认构造函数构造且未设置任何值的范围对象。
  [in] | pause | 决定提取过程是否需要暂停的暂停对象。 这可以是NULL，表示在解析过程中不暂停。 如果不是NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  渐进式对象。请通过函数 common::Progressive::GetRateOfProgress 检查当前进度的速率。 如果速率还不是100，调用函数 common::Progressive::Continue 继续进度直到进度完成。

## ◆ StartExtractPages() [3/3]

common::Progressive foxit::pdf::PDFDoc::StartExtractPages | ( | foxit::common::file::WriterCallback * | file,
|  | uint32 | options,
|  | const foxit::common::Range & | page_range = `common::Range()`,
|  | foxit::common::PauseCallback * | pause = `0`
| ) |  |

开始从当前PDF文档提取页面。

提取页面可能需要很长时间，因此Foxit PDF SDK使用渐进式过程来执行此操作。

参数

  [in] | file | 用户实现的 common::file::WriterCallback 对象， 用于以自定义方式存储所有提取页面的数据。
  [in] | options | 提取页面的选项。请参考从 PDFDoc::e_ExtractPagesOptionAnnotation 开始的值， 这可以是这些值中的一个或组合。0表示不使用任何选项。
  [in] | page_range | 指定要提取哪些页面的范围对象。如果此范围对象通过默认构造函数构造 且未设置任何值，将提取当前文档中的所有页面。 默认值：通过默认构造函数构造且未设置任何值的范围对象。
  [in] | pause | 决定提取过程是否需要暂停的暂停对象。 这可以是NULL，表示在解析过程中不暂停。 如果不是NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  渐进式对象。请通过函数 common::Progressive::GetRateOfProgress 检查当前进度的速率。 如果速率还不是100，调用函数 common::Progressive::Continue 继续进度直到进度完成。

## ◆ StartGetPayloadFile()

common::Progressive foxit::pdf::PDFDoc::StartGetPayloadFile | ( | foxit::common::file::WriterCallback * | payload_file,
|  | common::PauseCallback * | pause = `0`
| ) |  |

开始获取载荷文件。

获取载荷文档可能需要很长时间，因此此函数使用渐进式过程来执行此操作。

参数

  [in] | payload_file | WriterCallback回调对象。用户应该在此回调对象中实现回调函数， 以便此回调对象可以用于保存载荷文件。
  [in] | pause | 暂停回调对象，用于决定解析过程是否需要暂停。 这可以是NULL，表示在解析过程中不暂停。 如果不是NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  渐进式对象。请通过函数 common::Progressive::GetRateOfProgress 检查当前进度的速率。 如果速率还不是100，调用函数 common::Progressive::Continue 继续进度直到进度完成。

## ◆ StartImportPages()

common::Progressive foxit::pdf::PDFDoc::StartImportPages | ( | int | dest_index,
|  | const PDFDoc & | src_doc,
|  | uint32 | flags = `PDFDoc::e_ImportFlagNormal`,
|  | const char * | layer_name = `""`,
|  | const common::Range & | page_range = `common::Range()`,
|  | common::PauseCallback * | pause = `0`
| ) |  |

开始从另一个PDF文档（通过PDF文档对象）导入页面。

导入页面可能需要很长时间，因此Foxit PDF SDK使用渐进式过程来执行此操作。
源PDF文档页面中的已签名签名不会导入到当前PDF文档中。
目前，如果当前PDF文档或源PDF文档包含XFA，Foxit PDF SDK 不支持进行导入。
如果此函数用于合并两个PDF文件，强烈建议将页面导入到目标PDF文件的末尾， 而不是目标PDF文件的开头。

参数

  [in] | dest_index | 当前PDF文档中的页面索引。用于指定导入页面的插入位置： 如果参数 dest_index 小于0，导入的页面将插入到第一个位置。 如果参数 dest_index 等于或大于当前页面数量， 导入的页面将插入到末尾。
  [in] | src_doc | 作为源PDF文档的PDF文档对象。此文档中的页面将导入到 当前PDF文档。请保持此源PDF文档对象有效， 直到当前文档不再保存或关闭。
  [in] | flags | 导入页面的选项。请参考从 PDFDoc::e_ImportFlagNormal 开始的值， 这可以是这些值中的一个或组合。 默认值：PDFDoc::e_ImportFlagNormal。
  [in] | layer_name | 要在应用程序图层面板中显示的不可选择标签的名称或不可选择标签的前缀名称。 默认值：空字符串。 如果参数 flags 包含 PDFDoc::e_ImportFlagWithLayers， 这不应为空，应为有效字符串。 如果参数 flags 不包含 PDFDoc::e_ImportFlagWithLayers， 此字符串将被忽略。 如果要将源PDF文档的所有页面导入到当前文档， 源文档的所有图层将分组在一个不可选择的标签下， 此字符串将直接用作标签。 如果只导入源PDF文档的部分页面到当前文档， 同一页面中的图层将分组在单个不可选择的标签下， 此字符串将用作标签的前缀名称。 标签将类似于"layerName_Page_X"。
  [in] | page_range | 指定要插入哪些页面的范围对象。如果此范围对象通过默认构造函数构造 且未设置任何值，将导入源文档中的所有页面。 默认值：通过默认构造函数构造且未设置任何值的范围对象。
  [in] | pause | 决定导入过程是否需要暂停的暂停对象。 这可以是NULL，表示在解析过程中不暂停。 如果不是NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  渐进式对象。请通过函数 common::Progressive::GetRateOfProgress 检查当前进度的速率。 如果速率还不是100，调用函数 common::Progressive::Continue 继续进度直到进度完成。

## ◆ StartImportPagesFromFilePath() [1/2]

common::Progressive foxit::pdf::PDFDoc::StartImportPagesFromFilePath | ( | int | dest_index,
|  | const wchar_t * | src_file_path,
|  | const String & | password,
|  | uint32 | flags = `PDFDoc::e_ImportFlagNormal`,
|  | const char * | layer_name = `""`,
|  | const common::Range & | page_range = `common::Range()`,
|  | common::PauseCallback * | pause = `0`
| ) |  |

开始从另一个PDF文档（通过文件路径）导入页面。

导入页面可能需要很长时间，因此Foxit PDF SDK使用渐进式过程来执行此操作。
源PDF文档页面中的已签名签名不会导入到当前PDF文档中。
目前，如果当前PDF文档或源PDF文档包含XFA，Foxit PDF SDK不支持进行导入。
如果此函数用于合并两个PDF文件，强烈建议将页面导入到目标PDF文件的末尾， 而不是目标PDF文件的开头。

参数

  [in] | dest_index | 当前PDF文档中的页面索引。用于指定导入页面的插入位置。 如果参数 dest_index 小于0，导入的页面将插入到第一个位置。 如果参数 dest_index 等于或大于当前页面数量， 导入的页面将插入到末尾。
  [in] | src_file_path | 作为源PDF文档的现有PDF文件的完整路径。 将从此PDF文件导入一些页面到当前PDF文档。
  [in] | password | 用于加载源PDF文档内容的密码字符串。 密码可以是用户密码或所有者密码。如果源PDF文档未使用密码加密， 只需传递空字符串。
  [in] | flags | 导入页面的选项。请参考从 PDFDoc::e_ImportFlagNormal 开始的值， 这可以是这些值中的一个或组合。 默认值：PDFDoc::e_ImportFlagNormal。
  [in] | layer_name | 要在应用程序图层面板中显示的不可选择标签的名称或不可选择标签的前缀名称。 默认值：空字符串。 如果参数 flags 包含 PDFDoc::e_ImportFlagWithLayers， 这不应为空，应为有效字符串。 如果参数 flags 不包含 PDFDoc::e_ImportFlagWithLayers， 此字符串将被忽略。 如果要将源PDF文档的所有页面导入到当前文档， 源文档的所有图层将分组在一个不可选择的标签下， 此字符串将直接用作标签。 如果只导入源PDF文档的部分页面到当前文档， 同一页面中的图层将分组在单个不可选择的标签下， 此字符串将用作标签的前缀名称。 标签将类似于"layerName_Page_X"。
  [in] | page_range | 指定要导入哪些页面的范围对象。如果此范围对象通过默认构造函数构造 且未设置任何值，将导入源文档中的所有页面。 默认值：通过默认构造函数构造且未设置任何值的范围对象。
  [in] | pause | 决定导入过程是否需要暂停的暂停对象。 这可以是NULL，表示在解析过程中不暂停。 如果不是NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  渐进式对象。请通过函数 common::Progressive::GetRateOfProgress 检查当前进度的速率。 如果速率还不是100，调用函数 common::Progressive::Continue 继续进度直到进度完成。

## ◆ StartImportPagesFromFilePath() [2/2]

common::Progressive foxit::pdf::PDFDoc::StartImportPagesFromFilePath | ( | int | dest_index,
|  | const wchar_t * | src_file_path,
|  | const WString & | password,
|  | uint32 | flags = `PDFDoc::e_ImportFlagNormal`,
|  | const char * | layer_name = `""`,
|  | const common::Range & | page_range = `common::Range()`,
|  | common::PauseCallback * | pause = `0`
| ) |  |

开始从另一个PDF文档（通过文件路径）导入页面。

导入页面可能需要很长时间，因此Foxit PDF SDK使用渐进式过程来执行此操作。
源PDF文档页面中的已签名签名不会导入到当前PDF文档中。
目前，如果当前PDF文档或源PDF文档包含XFA，Foxit PDF SDK不支持进行导入。
如果此函数用于合并两个PDF文件，强烈建议将页面导入到目标PDF文件的末尾， 而不是目标PDF文件的开头。

参数

  [in] | dest_index | 当前PDF文档中的页面索引。用于指定导入页面的插入位置。 如果参数 dest_index 小于0，导入的页面将插入到第一个位置。 如果参数 dest_index 等于或大于当前页面数量， 导入的页面将插入到末尾。
  [in] | src_file_path | 作为源PDF文档的现有PDF文件的完整路径。 将从此PDF文件导入一些页面到当前PDF文档。
  [in] | password | 用于加载源PDF文档内容的密码字符串。 密码可以是用户密码或所有者密码。如果源PDF文档未使用密码加密， 只需传递空字符串。
  [in] | flags | 导入页面的选项。请参考从 PDFDoc::e_ImportFlagNormal 开始的值， 这可以是这些值中的一个或组合。 默认值：PDFDoc::e_ImportFlagNormal。
  [in] | layer_name | 要在应用程序图层面板中显示的不可选择标签的名称或不可选择标签的前缀名称。 默认值：空字符串。 如果参数 flags 包含 PDFDoc::e_ImportFlagWithLayers， 这不应为空，应为有效字符串。 如果参数 flags 不包含 PDFDoc::e_ImportFlagWithLayers， 此字符串将被忽略。 如果要将源PDF文档的所有页面导入到当前文档， 源文档的所有图层将分组在一个不可选择的标签下， 此字符串将直接用作标签。 如果只导入源PDF文档的部分页面到当前文档， 同一页面中的图层将分组在单个不可选择的标签下， 此字符串将用作标签的前缀名称。 标签将类似于"layerName_Page_X"。
  [in] | page_range | 指定要导入哪些页面的范围对象。如果此范围对象通过默认构造函数构造 且未设置任何值，将导入源文档中的所有页面。 默认值：通过默认构造函数构造且未设置任何值的范围对象。
  [in] | pause | 决定导入过程是否需要暂停的暂停对象。 这可以是NULL，表示在解析过程中不暂停。 如果不是NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  渐进式对象。请通过函数 common::Progressive::GetRateOfProgress 检查当前进度的速率。 如果速率还不是100，调用函数 common::Progressive::Continue 继续进度直到进度完成。

## ◆ StartLoad()

common::Progressive foxit::pdf::PDFDoc::StartLoad | ( | const String & | password = `""`,
|  | bool | is_cache_stream = `true`,
|  | common::PauseCallback * | pause = `0`
| ) |  |

开始使用指定密码加载当前文档内容。

加载文档内容可能需要很长时间，因此此函数使用渐进过程来 执行此操作。
使用此函数时，参数is_cache_stream可用于决定是否将 流内容加载到内存中：

- 将流内容加载到内存中将提高频繁访问的性能，但是， 它也将消耗大量内存空间。
- 不将流内容加载到内存中，意味着将流内容留在文件系统上， 并在需要时读取它们。这可能会稍微降低性能，但会大大减少 内存消耗，特别是当文件很大时。

参数

  [in] | password | 用于加载当前文档内容的密码字符串。密码可以是 用户密码或所有者密码。如果当前文档未使用 密码加密，只需传递空字符串。默认值：空字符串。
  [in] | is_cache_stream | true表示将流内容加载到内存中，false表示不将 流内容加载到内存中，只将流内容留在文件系统上并在 需要时读取它们。请参考"详情"部分了解这两种模式之间的区别。 默认值：true。
  [in] | pause | 决定加载过程是否需要暂停的暂停对象。 这可以是NULL，表示在解析过程中不暂停。 如果这不是NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  一个渐进对象。请通过函数common::Progressive::GetRateOfProgress检查当前进度的比率。 如果比率尚未达到100，请调用函数common::Progressive::Continue继续进度， 直到进度完成。

## ◆ StartLoadW()

common::Progressive foxit::pdf::PDFDoc::StartLoadW | ( | const WString & | password = `WString()`,
|  | bool | is_cache_stream = `true`,
|  | common::PauseCallback * | pause = `0`
| ) |  |

开始使用指定密码加载当前文档内容。

加载文档内容可能需要很长时间，因此此函数使用渐进过程来 执行此操作。
使用此函数时，参数is_cache_stream可用于决定是否将 流内容加载到内存中：

- 将流内容加载到内存中将提高频繁访问的性能，但是， 它也将消耗大量内存空间。
- 不将流内容加载到内存中，意味着将流内容留在文件系统上， 并在需要时读取它们。这可能会稍微降低性能，但会大大减少 内存消耗，特别是当文件很大时。

参数

  [in] | password | 用于加载当前文档内容的密码字符串。密码可以是 用户密码或所有者密码。如果当前文档未使用 密码加密，只需传递空字符串。默认值：空字符串。
  [in] | is_cache_stream | true表示将流内容加载到内存中，false表示不将 流内容加载到内存中，只将流内容留在文件系统上并在 需要时读取它们。请参考"详情"部分了解这两种模式之间的区别。 默认值：true。
  [in] | pause | 决定加载过程是否需要暂停的暂停对象。 这可以是NULL，表示在解析过程中不暂停。 如果这不是NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  一个渐进对象。请通过函数common::Progressive::GetRateOfProgress检查当前进度的比率。 如果比率尚未达到100，请调用函数common::Progressive::Continue继续进度， 直到进度完成。

## ◆ StartRecognizeForm() [1/2]

common::Progressive foxit::pdf::PDFDoc::StartRecognizeForm | ( | bool | is_set_tool_tips,
|  | common::PauseCallback * | pause = `0`
| ) |  |

开始识别表单域。

识别表单可能需要很长时间，因此Foxit PDF SDK使用渐进式过程来执行此操作。
对于Windows平台，在调用这个函数之前，强烈建议用户通过调用 addon::ocr::OCREngine::Initialize 初始化OCR引擎。

参数

  [in] | is_set_tool_tips | true 意味着对识别表单设置提示， false 表示不设置。
  [in] | pause | 决定替换过程是否需要暂停的暂停对象。 这可以是NULL，表示在替换过程中不暂停。 如果不是NULL，它应该是用户实现的有效暂停对象。

返回
  渐进式对象。请通过函数 common::Progressive::GetRateOfProgress 检查当前进度的速率。 如果速率还不是100，调用函数 common::Progressive::Continue 继续进度直到进度完成。

## ◆ StartRecognizeForm() [2/2]

common::Progressive foxit::pdf::PDFDoc::StartRecognizeForm | ( | common::PauseCallback * | pause = `0` | ) |

开始识别表单域。

识别表单可能需要很长时间，因此Foxit PDF SDK使用渐进式过程来执行此操作。
对于Windows平台，在调用这个函数之前，强烈建议用户通过调用 addon::ocr::OCREngine::Initialize 初始化OCR引擎。

参数

  [in] | pause | 决定替换过程是否需要暂停的暂停对象。 这可以是NULL，表示在替换过程中不暂停。 如果不是NULL，它应该是用户实现的有效暂停对象。

返回
  渐进式对象。请通过函数 common::Progressive::GetRateOfProgress 检查当前进度的速率。 如果速率还不是100，调用函数 common::Progressive::Continue 继续进度直到进度完成。

## ◆ StartSaveAs() [1/3]

common::Progressive foxit::pdf::PDFDoc::StartSaveAs | ( | const char * | file_path,
|  | uint32 | save_flags = `PDFDoc::e_SaveFlagNormal`,
|  | common::PauseCallback * | pause = `0`
| ) |  |

开始将当前PDF文档另存为另一个PDF文件。

保存PDF文档可能需要很长时间，因此此函数使用渐进式过程来执行此操作。
如果当前文档是从现有PDF文件加载的，并且在保存之前通过 PDFDoc::SetFileVersion 设置了不同的文件版本，Foxit PDF SDK将忽略参数 save_flags 中的 PDFDoc::e_SaveFlagIncremental 并在保存的PDF文件中使用文件版本。

参数

  [in] | file_path | 新保存的PDF文件的完整路径。它不应该是空字符串。
  [in] | save_flags | 文档保存标志。请参考从 PDFDoc::e_SaveFlagNormal 开始的值， 这可以是这些值中的一个或组合。 默认值：PDFDoc::e_SaveFlagNormal。
  [in] | pause | 暂停回调对象，用于决定解析过程是否需要暂停。 这可以是NULL，表示在解析过程中不暂停。 如果不是NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  渐进式对象。请通过函数 common::Progressive::GetRateOfProgress 检查当前进度的速率。 如果速率还不是100，调用函数 common::Progressive::Continue 继续进度直到进度完成。

注解
  此函数不支持将当前PDF文档对象保存回用于构造当前PDF对象的PDF文件。 为了这样做，建议用户按照以下步骤操作：
  假设当前PDF对象是从名为"org.pdf"的PDF文件构造的。
  1. 使用当前函数将当前PDF对象保存到临时文件。这里，此临时文件名为"temp.tmp"。
  2. 确保当前PDF对象已析构——这等同于"关闭文档"。
  3. 删除"org.pdf"并将"temp.tmp"重命名为"org.pdf"。
  然后用户可以打开保存的PDF文件进行其他操作。

## ◆ StartSaveAs() [2/3]

common::Progressive foxit::pdf::PDFDoc::StartSaveAs | ( | const wchar_t * | file_path,
|  | uint32 | save_flags = `PDFDoc::e_SaveFlagNormal`,
|  | common::PauseCallback * | pause = `0`
| ) |  |

开始将当前PDF文档另存为另一个PDF文件。

保存PDF文档可能需要很长时间，因此此函数使用渐进式过程来执行此操作。
如果当前文档是从现有PDF文件加载的，并且在保存之前通过 PDFDoc::SetFileVersion 设置了不同的文件版本，Foxit PDF SDK将忽略参数 save_flags 中的 PDFDoc::e_SaveFlagIncremental 并在保存的PDF文件中使用文件版本。

参数

  [in] | file_path | 新保存的PDF文件的完整路径。它不应该是空字符串。
  [in] | save_flags | 文档保存标志。请参考从 PDFDoc::e_SaveFlagNormal 开始的值， 这可以是这些值中的一个或组合。 默认值：PDFDoc::e_SaveFlagNormal。
  [in] | pause | 暂停回调对象，用于决定解析过程是否需要暂停。 这可以是NULL，表示在解析过程中不暂停。 如果不是NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  渐进式对象。请通过函数 common::Progressive::GetRateOfProgress 检查当前进度的速率。 如果速率还不是100，调用函数 common::Progressive::Continue 继续进度直到进度完成。

注解
  此函数不支持将当前PDF文档对象保存回用于构造当前PDF对象的PDF文件。 为了这样做，建议用户按照以下步骤操作：
  假设当前PDF对象是从名为"org.pdf"的PDF文件构造的。
  1. 使用当前函数将当前PDF对象保存到临时文件。这里，此临时文件名为"temp.tmp"。
  2. 确保当前PDF对象已析构——这等同于"关闭文档"。
  3. 删除"org.pdf"并将"temp.tmp"重命名为"org.pdf"。
  然后用户可以打开保存的PDF文件进行其他操作。

## ◆ StartSaveAs() [3/3]

common::Progressive foxit::pdf::PDFDoc::StartSaveAs | ( | foxit::common::file::WriterCallback * | file,
|  | foxit::uint32 | save_flags = `PDFDoc::e_SaveFlagNormal`,
|  | foxit::common::PauseCallback * | pause = `0`
| ) |  |

开始将当前PDF文档另存为另一个PDF文件。

保存PDF文档可能需要很长时间，因此此函数使用渐进式过程来执行此操作。
如果当前文档是从现有PDF文件加载的，并且在保存之前通过 PDFDoc::SetFileVersion 设置了不同的文件版本，Foxit PDF SDK将忽略参数 save_flags 中的 PDFDoc::e_SaveFlagIncremental 并在保存的PDF文件中使用文件版本。

参数

  [in] | file | 用户实现的 common::file::WriterCallback 对象，用于保存PDF文档。
  [in] | save_flags | 文档保存标志。请参考从 PDFDoc::e_SaveFlagNormal 开始的值， 这可以是这些值中的一个或组合。 默认值：PDFDoc::e_SaveFlagNormal。
  [in] | pause | 暂停回调对象，用于决定解析过程是否需要暂停。 这可以是NULL，表示在解析过程中不暂停。 如果不是NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  渐进式对象。请通过函数 common::Progressive::GetRateOfProgress 检查当前进度的速率。 如果速率还不是100，调用函数 common::Progressive::Continue 继续进度直到进度完成。

注解
  此函数不支持将当前PDF文档对象保存回用于构造当前PDF对象的PDF文件。 为了这样做，建议用户按照以下步骤操作：
  假设当前PDF对象是从名为"org.pdf"的PDF文件构造的。
  1. 使用当前函数将当前PDF对象保存到临时文件。这里，此临时文件名为"temp.tmp"。
  2. 确保当前PDF对象已析构——这等同于"关闭文档"。
  3. 删除"org.pdf"并将"temp.tmp"重命名为"org.pdf"。
  然后用户可以打开保存的PDF文件进行其他操作。

## ◆ StartSaveAsPayloadFile()

common::Progressive foxit::pdf::PDFDoc::StartSaveAsPayloadFile | ( | const wchar_t * | file_path,
|  | const wchar_t * | payload_file_path,
|  | const wchar_t * | crypto_filter,
|  | const wchar_t * | description,
|  | float | version,
|  | uint32 | save_flags = `PDFDoc::e_SaveFlagNormal`,
|  | common::PauseCallback * | pause = `0`
| ) |  |

开始将当前PDF文档另存为带有载荷文档的包装文档（在PDF 2.0中定义）。

保存PDF文档可能需要很长时间，因此此函数使用渐进式过程来执行此操作。
如果当前文档是从现有PDF文件加载的，并且在保存之前通过 PDFDoc::SetFileVersion 设置了不同的文件版本，Foxit PDF SDK将忽略参数 save_flags 中的 PDFDoc::e_SaveFlagIncremental 并在保存的PDF文件中使用文件版本。

参数

  [in] | file_path | 新保存的PDF文件的完整路径。它不应该是空字符串。
  [in] | payload_file_path | 将用作载荷文档的PDF文档的完整路径。 它不应该是空字符串。
  [in] | crypto_filter | 用于加密加密载荷文档的加密过滤器的名称。
  [in] | description | 包装文件的描述，用于向应用程序显示或面对用户提示信息。
  [in] | version | 用于加密此字典引用的加密载荷的加密过滤器的版本号。
  [in] | save_flags | 文档保存标志。请参考从 PDFDoc::e_SaveFlagNormal 开始的值， 这可以是这些值中的一个或组合。 默认值：PDFDoc::e_SaveFlagNormal。
  [in] | pause | 暂停回调对象，用于决定解析过程是否需要暂停。 这可以是NULL，表示在解析过程中不暂停。 如果不是NULL，它应该是用户实现的有效暂停对象。 默认值：NULL。

返回
  渐进式对象。请通过函数 common::Progressive::GetRateOfProgress 检查当前进度的速率。 如果速率还不是100，调用函数 common::Progressive::Continue 继续进度直到进度完成。

## ◆ UpdateHeaderFooter()

void foxit::pdf::PDFDoc::UpdateHeaderFooter | ( | const HeaderFooter & | headerfooter | ) |

更新页眉页脚。

PDF文档可以多次添加页眉页脚。当页眉页脚被更新到文档时， 与新页眉页脚出现在同一位置的旧页眉页脚将全部被删除，然后添加新的页眉页脚。

参数

  [in] | headerfooter | 要更新到当前文档的有效页眉页脚对象。

返回
  无。