Foxit PDF SDK

Public 成员函数 | 静态 Public 属性 | 所有成员列表
com.foxit.sdk.pdf.ReflowPage类 参考
类 com.foxit.sdk.pdf.ReflowPage 继承关系图:

## Public 成员函数
| ReflowPage (PDFPage page) throws com.foxit.sdk.PDFException
| 从已解析的PDF页面构造的构造函数。 更多...
| ReflowPage (ReflowPage other)
| 使用另一个重排页面对象的构造函数。 更多...
synchronized void | delete ()
| 直接清除C++相关资源。 更多...
float | getContentHeight () throws com.foxit.sdk.PDFException
| 在当前重排页面对象解析完成后获取内容高度。 更多...
float | getContentWidth () throws com.foxit.sdk.PDFException
| 在当前重排页面对象解析完成后获取内容宽度。 更多...
Matrix2D | getDisplayMatrix (float offset_x, float offset_y, int width, int height, int rotate) throws com.foxit.sdk.PDFException
| 根据当前重排页面和屏幕之间顶边的偏移量获取显示矩阵。 更多...
String | getFocusData (Matrix2D matrix, PointF point) throws com.foxit.sdk.PDFException
| 获取设备坐标系中给定位置对应的焦点数据。 更多...
PointF | getFocusPosition (Matrix2D matrix, String focus_data) throws com.foxit.sdk.PDFException
| 获取设备坐标系中给定焦点数据对应的位置。 更多...
boolean | isEmpty ()
| 检查当前对象是否为空。 更多...
boolean | isParsed () throws com.foxit.sdk.PDFException
| 检查当前重排页面是否已被解析。 更多...
void | setImageScale (float image_scale)
| 设置图像缩放。可以在调用函数 ReflowPage.startParse 之前调用此函数。 更多...
void | setLineSpace (float line_space) throws com.foxit.sdk.PDFException
| 设置行间距。可以在调用函数 ReflowPage.startParse 之前调用此函数。 更多...
void | setParseFlags (int flags) throws com.foxit.sdk.PDFException
| 设置解析标志。可以在调用函数 ReflowPage.startParse 之前调用此函数。 更多...
void | setScreenMargin (int left, int top, int right, int bottom) throws com.foxit.sdk.PDFException
| 设置边距。可以在调用函数 ReflowPage.startParse 之前调用此函数。 更多...
void | setScreenSize (float width, float height) throws com.foxit.sdk.PDFException
| 设置屏幕尺寸。在调用函数 ReflowPage.startParse 和 ReflowPage.setLineSpace 之前应该调用此函数。 更多...
void | setTopSpace (float top_space) throws com.foxit.sdk.PDFException
| 设置顶部空间。可以在调用函数 ReflowPage.startParse 之前调用此函数。 更多...
void | setZoom (int zoom) throws com.foxit.sdk.PDFException
| 设置缩放因子。可以在调用函数 ReflowPage.startParse 之前调用此函数。 更多...
Progressive | startParse (PauseCallback pause) throws com.foxit.sdk.PDFException
| 开始解析当前重排页面。 更多...

## 静态 Public 属性
static final int | e_Normal = 0x0
| 正常模式的解析标志，不包含图像。
static final int | e_NoTruncate = 0x2
| 解析标志，用于决定是否允许在指定屏幕尺寸内截断第一个/最后一个图像或文本行。 更多...
static final int | e_WithImage = 0x1
| 图像模式的解析标志。

## 详细描述

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

- 通过函数 ReflowPage.startParse 开始解析重排页面。在解析重排页面之前， 用户应该使用函数 ReflowPage.setScreenSize 为重排页面指定屏幕尺寸。 用户还可以使用以下函数来指定影响重排页面解析结果的其他因素： ReflowPage.setZoom 、ReflowPage.setParseFlags 、 ReflowPage.setLineSpace 、ReflowPage.setImageScale 、ReflowPage.setTopSpace 。 如果在解析重排页面之前没有调用这些函数，将使用默认值。更多详细信息请参考这些函数的注释。
- 通过函数 ReflowPage.getContentWidth 、ReflowPage.getContentHeight 、 ReflowPage.getDisplayMatrix 获取已解析重排页面的实际内容大小和矩阵。
- 通过函数 ReflowPage.getFocusData 获取重排页面中指定位置的焦点数据， 或通过函数 ReflowPage.getFocusPosition 通过焦点数据检索位置。

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

参见
  PDFPage
  com.foxit.sdk.common.Renderer

## 构造及析构函数说明

## ◆ ReflowPage() [1/2]

com.foxit.sdk.pdf.ReflowPage.ReflowPage | ( | PDFPage | page | ) | throws com.foxit.sdk.PDFException

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

参数

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

## ◆ ReflowPage() [2/2]

com.foxit.sdk.pdf.ReflowPage.ReflowPage | ( | ReflowPage | other | ) |

使用另一个重排页面对象的构造函数。

参数

  [in] | other | 另一个重排页面对象。

## 成员函数说明

## ◆ delete()

synchronized void com.foxit.sdk.pdf.ReflowPage.delete | ( |  | ) |

直接清除C++相关资源。

返回
  无。

注解
  一旦这个接口被调用，这个对象将不能再被使用。

重载 com.foxit.sdk.common.Base .

## ◆ getContentHeight()

float com.foxit.sdk.pdf.ReflowPage.getContentHeight | ( |  | ) | throws com.foxit.sdk.PDFException

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

返回
  内容高度。

## ◆ getContentWidth()

float com.foxit.sdk.pdf.ReflowPage.getContentWidth | ( |  | ) | throws com.foxit.sdk.PDFException

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

返回
  内容宽度。

## ◆ getDisplayMatrix()

Matrix2D com.foxit.sdk.pdf.ReflowPage.getDisplayMatrix | ( | float | offset_x,
|  | float | offset_y,
|  | int | width,
|  | int | height,
|  | int | rotate
| ) |  | throws com.foxit.sdk.PDFException

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

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

参数

  [in] | offset_x | 偏移值，表示从当前重排页面顶边 到屏幕顶边的偏移量。
  [in] | offset_y | 偏移值，表示从当前重排页面左边 到屏幕左边的偏移量。
  [in] | width | 屏幕中变换区域的宽度，通常以像素为单位。
  [in] | height | 屏幕中变换区域的高度，通常以像素为单位。
  [in] | rotate | 旋转值。请参考从 com.foxit.sdk.common.Constants.e_Rotation0 开始的值， 应该是这些值中的一个。

返回
  显示矩阵。

## ◆ getFocusData()

String com.foxit.sdk.pdf.ReflowPage.getFocusData | ( | Matrix2D | matrix,
|  | PointF | point
| ) |  | throws com.foxit.sdk.PDFException

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

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

参数

  [in] | matrix | 由函数 ReflowPage.getDisplayMatrix 返回的矩阵。
  [in] | point | 设备坐标系中指定位置的点。

返回
  焦点数据。

## ◆ getFocusPosition()

PointF com.foxit.sdk.pdf.ReflowPage.getFocusPosition | ( | Matrix2D | matrix,
|  | String | focus_data
| ) |  | throws com.foxit.sdk.PDFException

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

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

参数

  [in] | matrix | 由函数 ReflowPage.getDisplayMatrix 返回的矩阵。
  [in] | focus_data | 用于获取其在设备坐标系中对应位置的焦点数据， 使用指定的矩阵。 这是通过之前调用函数 ReflowPage.getFocusData 获取的。

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

## ◆ isEmpty()

boolean com.foxit.sdk.pdf.ReflowPage.isEmpty | ( |  | ) |

检查当前对象是否为空。

当前对象为空时，意味着当前对象无用。

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

## ◆ isParsed()

boolean com.foxit.sdk.pdf.ReflowPage.isParsed | ( |  | ) | throws com.foxit.sdk.PDFException

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

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

## ◆ setImageScale()

void com.foxit.sdk.pdf.ReflowPage.setImageScale | ( | float | image_scale | ) |

设置图像缩放。可以在调用函数 ReflowPage.startParse 之前调用此函数。

参数

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

返回
  无。

## ◆ setLineSpace()

void com.foxit.sdk.pdf.ReflowPage.setLineSpace | ( | float | line_space | ) | throws com.foxit.sdk.PDFException

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

参数

  [in] | line_space | 行间距。此值应在 -25 到 (屏幕高度/2) 之间，屏幕高度 由 函数 ReflowPage.setScreenSize 设置。如果未设置行间距，默认使用值 0。

返回
  无。

## ◆ setParseFlags()

void com.foxit.sdk.pdf.ReflowPage.setParseFlags | ( | int | flags | ) | throws com.foxit.sdk.PDFException

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

参数

  [in] | flags | 解析标志。请参考从 com.foxit.sdk.pdf.ReflowPage.e_Normal 开始的值， 应该是这些值中的一个或组合。 如果未设置解析标志，默认使用值 com.foxit.sdk.pdf.ReflowPage.e_Normal 。

返回
  无。

## ◆ setScreenMargin()

void com.foxit.sdk.pdf.ReflowPage.setScreenMargin | ( | int | left,
|  | int | top,
|  | int | right,
|  | int | bottom
| ) |  | throws com.foxit.sdk.PDFException

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

如果从未为当前重排页面设置边距，Foxit PDF SDK 将使用值 (0, 0, 0, 0) 作为默认边距。
如果设置了新边距，新边距将一直有效，直到当前重排页面被 重新解析和渲染。

参数

  [in] | left | 左边距。此值应在 0 和 (屏幕宽度 / 3) 之间，屏幕宽度 由 函数 ReflowPage.setScreenSize 设置。
  [in] | top | 顶边距。此值应在 0 和 (屏幕高度 / 3) 之间，屏幕高度 由 函数 ReflowPage.setScreenSize 设置。
  [in] | right | 右边距。此值应在 0 和 (屏幕宽度 / 3) 之间，屏幕宽度 由 函数 ReflowPage.setScreenSize 设置。
  [in] | bottom | 底边距。此值应在 0 和 (屏幕高度 / 3) 之间，屏幕高度 由 函数 ReflowPage.setScreenSize 设置。

返回
  无。

## ◆ setScreenSize()

void com.foxit.sdk.pdf.ReflowPage.setScreenSize | ( | float | width,
|  | float | height
| ) |  | throws com.foxit.sdk.PDFException

设置屏幕尺寸。在调用函数 ReflowPage.startParse 和 ReflowPage.setLineSpace 之前应该调用此函数。

在解析重排页面和设置行间距之前，用户应该调用此函数来设置 解析重排页面的屏幕尺寸。

参数

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

返回
  无。

## ◆ setTopSpace()

void com.foxit.sdk.pdf.ReflowPage.setTopSpace | ( | float | top_space | ) | throws com.foxit.sdk.PDFException

设置顶部空间。可以在调用函数 ReflowPage.startParse 之前调用此函数。

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

参数

  [in] | top_space | 顶部空间。此值应在 0 和 高度 之间。 如果未设置顶部空间，默认使用值 0。

返回
  无。

## ◆ setZoom()

void com.foxit.sdk.pdf.ReflowPage.setZoom | ( | int | zoom | ) | throws com.foxit.sdk.PDFException

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

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

参数

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

返回
  无。

## ◆ startParse()

Progressive com.foxit.sdk.pdf.ReflowPage.startParse | ( | PauseCallback | pause | ) | throws com.foxit.sdk.PDFException

开始解析当前重排页面。

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

参数

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

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

## 类成员变量说明

## ◆ e_NoTruncate

final int com.foxit.sdk.pdf.ReflowPage.e_NoTruncate = 0x2
| static

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

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

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

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