Foxit PDF SDK

Public 成员函数 | 静态 Public 属性 | 所有成员列表
FSDK::ReflowPage类 参考

## Public 成员函数
| constructor (page)
| 构造函数,从已解析的 PDF 页面创建。 更多...
| GetContentHeight ()
| 在当前重排页面对象被解析后获取内容高度。 更多...
| GetContentWidth ()
| 在当前重排页面对象被解析后获取内容宽度。 更多...
| GetDisplayMatrix (offset_x, offset_y, width, height, rotate)
| 根据当前重排页面与屏幕之间顶侧的偏移量获取显示矩阵。 更多...
| GetFocusData (matrix, point)
| 获取设备坐标系中指定位置对应的焦点数据。 更多...
| GetFocusPosition (matrix, focus_data)
| 获取设备坐标系中与给定的焦点数据对应的位置。 更多...
| IsEmpty ()
| 检查当前对象是否为空。 更多...
| IsParsed ()
| 检查当前重排页面是否已被解析。 更多...
| SetImageScale (image_scale)
| 设置图像缩放比例。可以在调用函数 FSDK.ReflowPage.StartParse 之前调用。 更多...
| SetLineSpace (line_space)
| 设置行间距。可以在调用函数 FSDK.ReflowPage.StartParse 之前调用。 更多...
| SetParseFlags (flags)
| 设置解析标志。可以在调用函数 FSDK.ReflowPage.StartParse 之前调用。 更多...
| SetScreenMargin (left, top, right, bottom)
| 设置边距。可以在调用函数 FSDK.ReflowPage.StartParse 之前调用。 更多...
| SetScreenSize (width, height)
| 设置屏幕大小。应在调用函数 FSDK.ReflowPage.StartParse 和 FSDK.ReflowPage.SetLineSpace 之前调用。 更多...
| SetTopSpace (top_space)
| 设置顶部间距。可以在调用函数 FSDK.ReflowPage.StartParse 之前调用。 更多...
| SetZoom (zoom)
| 设置缩放因子。可以在调用函数 FSDK.ReflowPage.StartParse 之前调用。 更多...
| StartParse (pause)
| 开始解析当前重排页面。 更多...

## 静态 Public 属性
static | e_Normal
| 用于重排页面的解析标志枚举。 更多...
static | e_NoTruncate
| 解析标志,用于决定是否允许在指定的屏幕大小内截断第一个/最后一个图像或文本行。 更多...
static | e_WithImage
| 图像模式的解析标志。

## 详细描述

为了在小屏幕设备中显示页面内容，Foxit PDF SDK 引入了"重排页面"的概念。 在重排页面中，原始 PDF 页面内容将被重新布局以适应指定的屏幕大小。
对于 PDF 页面，当用户在该 PDF 页面与其相关的重排页面之间切换， 或在不同大小的相关重排页面之间切换时，用户可能希望保持对重排页面中某个位置的关注。 为了跟踪焦点位置，Foxit PDF SDK 使用"焦点数据"来表示焦点位置。 焦点数据类似于 PDF 中的书签或目标，但更简单。用户可以存储焦点数据 （或将数据保存到文件中），以便稍后即使重排页面的大小发生变化，用户也可以通过焦点数据再次检索焦点位置。
重排页面对象应从已解析的 PDF 页面构造。此类提供以下功能：

- 通过函数 FSDK.ReflowPage.StartParse 开始解析重排页面。在解析重排页面之前， 应使用函数 FSDK.ReflowPage.SetScreenSize 为重排页面指定屏幕大小。 用户还可以使用以下函数指定将影响重排页面解析结果的其他因素： FSDK.ReflowPage.SetZoom、FSDK.ReflowPage.SetParseFlags、 FSDK.ReflowPage.SetLineSpace、FSDK.ReflowPage.SetImageScale、FSDK.ReflowPage.SetTopSpace。 如果在解析重排页面之前未调用这些函数，将使用默认值。有关更多详细信息，请参阅这些函数的注释。
- 通过函数 FSDK.ReflowPage.GetContentWidth、FSDK.ReflowPage.GetContentHeight、 FSDK.ReflowPage.GetDisplayMatrix 获取已解析重排页面的实际内容大小和矩阵。
- 通过函数 FSDK.ReflowPage.GetFocusData 获取重排页面中指定位置的焦点数据， 或通过函数 FSDK.ReflowPage.GetFocusPosition 通过焦点数据检索位置。

要渲染重排页面，请使用函数 FSDK.Renderer.StartRenderReflowPage。

参见
  FSDK.PDFPage
  FSDK.Renderer

## 成员函数说明

## ◆ constructor()

FSDK::ReflowPage::constructor | ( | page |  | ) |

构造函数,从已解析的 PDF 页面创建。

参数

  [in] | page | 已解析的有效 PDF 页面对象。

## ◆ GetContentHeight()

FSDK::ReflowPage::GetContentHeight | ( |  | ) |

在当前重排页面对象被解析后获取内容高度。

返回
  内容高度。

## ◆ GetContentWidth()

FSDK::ReflowPage::GetContentWidth | ( |  | ) |

在当前重排页面对象被解析后获取内容宽度。

返回
  内容宽度。

## ◆ GetDisplayMatrix()

FSDK::ReflowPage::GetDisplayMatrix | ( | offset_x | ,
|  | offset_y | ,
|  | width | ,
|  | height | ,
|  | rotate |
| ) |  |

根据当前重排页面与屏幕之间顶侧的偏移量获取显示矩阵。

此函数只能在重排页面已被解析后使用。

参数

  [in] | offset_x | 偏移值,表示当前重排页面顶侧 到屏幕顶侧的偏移量。
  [in] | offset_y | 偏移值,表示当前重排页面左侧 到屏幕左侧的偏移量。
  [in] | width | 屏幕中转换区域的宽度,通常以像素为单位。
  [in] | height | 屏幕中转换区域的高度,通常以像素为单位。
  [in] | rotate | 旋转值。请参考从 FSDK.e_Rotation0 开始的值, 应为这些值之一。

返回
  显示矩阵。

## ◆ GetFocusData()

FSDK::ReflowPage::GetFocusData | ( | matrix | ,
|  | point |
| ) |  |

获取设备坐标系中指定位置对应的焦点数据。

此函数只能在重排页面已被解析后使用。
焦点数据类似于 PDF 中的书签或目标,用于定位 重排页面中指定内容的位置。对于 PDF 页面,指定内容的位置是固定的, 即使相关重排页面的大小发生变化也不会改变。因此焦点数据可以用于 从 PDF 页面定位到其相关的不同大小但具有相同重排内容的重排页面中的相同内容。
通常,用户可以调用函数 FSDK.ReflowPage.GetFocusData 获取 指定位置的焦点数据,并存储焦点数据。当重排页面的大小发生变化时, 用户可以在函数 FSDK.ReflowPage.GetFocusPosition 中使用存储的焦点数据 获取新位置,然后仍然可以聚焦在相同的内容或附近的内容上。

参数

  [in] | matrix | 由函数 FSDK.ReflowPage.GetDisplayMatrix 返回的矩阵。
  [in] | point | 指定位置的点,采用设备坐标系。

返回
  焦点数据。

## ◆ GetFocusPosition()

FSDK::ReflowPage::GetFocusPosition | ( | matrix | ,
|  | focus_data |
| ) |  |

获取设备坐标系中与给定的焦点数据对应的位置。

此函数只能在重排页面已被解析后使用。
焦点数据类似于 PDF 中的书签或目标,用于定位 重排页面中指定内容的位置。对于 PDF 页面,指定内容的位置是固定的, 即使相关重排页面的大小发生变化也不会改变。因此焦点数据可以用于 从 PDF 页面定位到其相关的不同大小但具有相同重排内容的重排页面中的相同内容。
通常,用户可以调用函数 FSDK.ReflowPage.GetFocusData 获取 指定位置的焦点数据,并存储焦点数据。当重排页面的大小发生变化时, 用户可以在函数 FSDK.ReflowPage.GetFocusPosition 中使用存储的焦点数据 获取新位置,然后仍然可以聚焦在相同的内容或附近的内容上。

参数

  [in] | matrix | 由函数 FSDK.ReflowPage.GetDisplayMatrix 返回的矩阵。
  [in] | focus_data | 用于在指定矩阵下获取其对应的设备坐标系位置的焦点数据。 该数据由之前调用函数 FSDK.ReflowPage.GetFocusData 获取。

返回
  设备坐标系中的位置。

## ◆ IsEmpty()

FSDK::ReflowPage::IsEmpty | ( |  | ) |

检查当前对象是否为空。

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

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

## ◆ IsParsed()

FSDK::ReflowPage::IsParsed | ( |  | ) |

检查当前重排页面是否已被解析。

返回
  true 表示当前重排页面已被解析, false 表示当前页面尚未被解析。

## ◆ SetImageScale()

FSDK::ReflowPage::SetImageScale | ( | image_scale |  | ) |

设置图像缩放比例。可以在调用函数 FSDK.ReflowPage.StartParse 之前调用。

参数

  [in] | image_scale | 图像缩放比例。此值应为正数。 如果未设置图像缩放比例,默认使用值 1.0f。

返回
  无。

## ◆ SetLineSpace()

FSDK::ReflowPage::SetLineSpace | ( | line_space |  | ) |

设置行间距。可以在调用函数 FSDK.ReflowPage.StartParse 之前调用。

参数

  [in] | line_space | 行间距。此值应在 -25 到 (screen height/2) 之间,screen height 由 函数 FSDK.ReflowPage.SetScreenSize 设置。如果未设置行间距,默认使用值 0。

返回
  无。

## ◆ SetParseFlags()

FSDK::ReflowPage::SetParseFlags | ( | flags |  | ) |

设置解析标志。可以在调用函数 FSDK.ReflowPage.StartParse 之前调用。

参数

  [in] | flags | 解析标志。请参考从 FSDK.ReflowPage.e_Normal 开始的值, 应为这些值之一或其组合。 如果未设置解析标志,默认使用值 FSDK.ReflowPage.e_Normal。

返回
  无。

## ◆ SetScreenMargin()

FSDK::ReflowPage::SetScreenMargin | ( | left | ,
|  | top | ,
|  | right | ,
|  | bottom |
| ) |  |

设置边距。可以在调用函数 FSDK.ReflowPage.StartParse 之前调用。

如果从未为当前重排页面设置过边距,Foxit PDF SDK 将使用值 (0, 0, 0, 0) 作为默认边距。
如果设置了新的边距,新边距将在当前重排页面被 重新解析和重新渲染后生效。

参数

  [in] | left | 左边距。此值应在 0 和 (screen width / 3) 之间,screen width 由 函数 FSDK.ReflowPage.SetScreenSize 设置。
  [in] | top | 上边距。此值应在 0 和 (screen height/ 3) 之间,screen height 由 函数 FSDK.ReflowPage.SetScreenSize 设置。
  [in] | right | 右边距。此值应在 0 和 (screen width / 3) 之间,screen width 由 函数 FSDK.ReflowPage.SetScreenSize 设置。
  [in] | bottom | 下边距。此值应在 0 和 (screen height / 3) 之间,screen height 由 函数 FSDK.ReflowPage.SetScreenSize 设置。

返回
  无。

## ◆ SetScreenSize()

FSDK::ReflowPage::SetScreenSize | ( | width | ,
|  | height |
| ) |  |

设置屏幕大小。应在调用函数 FSDK.ReflowPage.StartParse 和 FSDK.ReflowPage.SetLineSpace 之前调用。

在解析重排页面和设置行间距之前,用户应调用此函数设置屏幕大小 以便解析重排页面。

参数

  [in] | width | 屏幕宽度。
  [in] | height | 屏幕高度。

返回
  无。

## ◆ SetTopSpace()

FSDK::ReflowPage::SetTopSpace | ( | top_space |  | ) |

设置顶部间距。可以在调用函数 FSDK.ReflowPage.StartParse 之前调用。

此函数用于设置页面顶部与屏幕顶部之间的距离。此距离将 在解析重排页面时生效。

参数

  [in] | top_space | 顶部间距。此值应在 0 和 height 之间。 如果未设置顶部间距,默认使用值 0。

返回
  无。

## ◆ SetZoom()

FSDK::ReflowPage::SetZoom | ( | zoom |  | ) |

设置缩放因子。可以在调用函数 FSDK.ReflowPage.StartParse 之前调用。

如果从未为当前重排页面设置过缩放因子,Foxit PDF SDK 将使用值 100 作为默认缩放因子,表示 100。
如果设置了新的缩放因子,新缩放因子将在当前重排页面被 重新解析和重新渲染后生效。

参数

  [in] | zoom | 缩放因子。该值表示百分比值,例如,100 表示 100。 此值应在 25 和 1000 之间。 如果未设置缩放因子,默认使用值 100。

返回
  无。

## ◆ StartParse()

FSDK::ReflowPage::StartParse | ( | pause |  | ) |

开始解析当前重排页面。

解析重排页面可能需要很长时间,因此 Foxit PDF SDK 使用渐进式进程来完成此操作。 所有关于重排页面的资源将在重排页面解析后加载。
在使用当前重排页面对象的任何获取函数之前,应调用此函数。 如果当前页面中有小部件注释,当前不支持此函数。

参数

  [in] | pause | 暂停回调对象,用于决定解析进程是否需要暂停。 可以为 null,表示在解析过程中不暂停。 如果不为 null,应为用户实现的有效暂停对象。 默认值: null。

返回
  渐进式对象。请通过函数 FSDK.Progressive.GetRateOfProgress 检查当前进度的进率。如果进率尚未达到 100,请调用函数 FSDK.Progressive.Continue 继续进度,直到进度完成。

## 类成员变量说明

## ◆ e_Normal

FSDK::ReflowPage::e_Normal
| static

用于重排页面的解析标志枚举。

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

正常模式的解析标志，不包含图像。

## ◆ e_NoTruncate

FSDK::ReflowPage::e_NoTruncate
| static

解析标志,用于决定是否允许在指定的屏幕大小内截断第一个/最后一个图像或文本行。

最终解析的重排页面的高度可能大于实际屏幕高度。在这种情况下, 重排页面的内容将在应用程序中以多个屏幕显示。
应用程序可以使用以下模式显示此类重排页面:

- 一次只在屏幕中显示重排页面的部分内容。当用户点击或轻触时, 显示上一部分或下一部分内容。这就像在真实的书中翻页。 这里称这种模式为"单屏幕模式"。
- 连续显示重排页面 – 这意味着用户可以滚动屏幕查看 此重排页面中的任何部分内容。这里称这种模式为"滚动屏幕模式"。

如果使用"单屏幕模式"显示重排页面,可能会出现截断问题:第一行文本 或图像只在屏幕顶部显示下半部分,或最后一行文本或图像只在屏幕底部显示上半部分。 可以设置此标志来避免此类问题。
如果使用"滚动屏幕模式",则无需使用此标志。