Skip to content

CPDFReaderView - Props

打开文档

CPDFReaderView 是一个 React 组件,用于展示 PDF 文档。以下是关于 document 属性的详细信息。

document

指定要展示的 PDF 文档的路径或 URI。

  • 类型: string
  • 必需:

使用示例:

  • (Android) 对于本地存储文件路径:
tsx
<CPDFReaderView
	document={'/storage/emulated/0/Download/PDF_document.pdf'}/>
  • (Android) 对于内容 Uri:
tsx
<CPDFReaderView
	document={'content://...'}/>
  • (Android) 对于 assets 路径:
tsx
<CPDFReaderView
	document={'file:///android_asset/...'}/>
  • (iOS) 对于应用程序包文件路径:
tsx
<CPDFReaderView	
	document={'pdf_document.pdf'}/>

password

打开文档的密码是一个可选参数。

  • 类型: string

使用示例:

tsx
<CPDFReaderView	
	document={'pdf_document.pdf'}
  password={'password'}/>

configuration

用于在渲染 PDF 文件时传递配置参数,以自定义 UI 特性和 PDF 查看属性。ComPDFKit 提供了通过 ComPDFKit.getDefaultConfig 获取的默认配置参数。

  • 类型: string
  • 必需:

使用示例:

tsx
<CPDFReaderView
  document={samplePDF}
  configuration={ComPDFKit.getDefaultConfig({

  })}
  style={{flex:1}}
  />

文档相关

open

在当前的 CPDFReaderView 组件中重新打开指定的文档。

参数:

参数名类型描述
documentstringPDF文档的文件路径。
passwordstring文档的密码,可以为null或为空。

返回一个 Promise。

参数类型描述
resultbool如果文档成功打开,返回 true,否则返回 false
tsx
await pdfReaderRef.current?._pdfDocument.open(document, 'password');

hasChange

检查文档是否已被修改。

返回一个 Promise。

Promise 参数:

名称类型描述
hasChangebooleantrue:文档已被修改,false:文档未被修改。
tsx
const hasChange = await pdfReaderRef.current?.hasChange();

save

保存当前文档的更改。

返回一个 Promise。

Promise 参数:

名称类型描述
resultbooleantrue:保存成功,false:保存失败。
js
const saveResult = await pdfReaderRef.current.save();

onSaveDocument

可选函数

当文档保存时,此函数将被调用。

参数:

名称类型描述
pageNumberint当前页码
tsx
<CPDFReaderView
	onSaveDocument={()=>{}}
/>

getFileName

获取PDF文档的文件名。

返回一个 Promise。

参数类型描述
resultstring获取PDF文档的文件名。
tsx
const fileName = await pdfReaderRef.current?._pdfDocument.getFileName();

isImageDoc

检查PDF文档是否为图像文档。这是一个耗时的操作,取决于文档的大小。

返回一个 Promise。

参数类型描述
resultboolean如果文档是扫描的图像文档,则返回 true,否则返回 false
tsx
const isImageDoc = await pdfReaderRef.current?._pdfDocument.isImageDoc();

查看器

setMargins

设置当前 PDF 视图的边距。

参数:

名称类型描述
leftint左边距
topint上边距
rightint右边距
bottomint下边距
tsx
await pdfReaderRef.current?.setMargins(10, 10, 10, 10);

setPageSpacing

设置页面之间的间距。此方法仅在 Android 平台上支持。

  • 对于 iOS 平台,请使用 setMargins 方法。页面之间的间距等于 CPDFEdgeInsets.top 的值。

参数:

参数名类型描述
pageSpacingint页面之间的间距,以像素为单位。
tsx
await pdfReaderRef.current?.setPageSpacing(10);

注意:此方法仅支持 Android 平台。

setScale

设置页面缩放比例,值范围:1.0~5.0

参数:

参数名类型描述
scalenumber缩放值
tsx
await pdfReaderRef.current?.setScale(2.0);

getScale

获取当前页面的缩放比例。

返回一个 Promise。

参数名类型描述
resultnumber返回当前页面的缩放比例。
tsx
const scale = await pdfReaderRef.current?.getScale();

setCanScale

是否允许缩放。

参数:

参数名类型描述
canScaleboolean是否允许缩放
tsx
await pdfReaderRef.current?.setCanScale(false);

注意:此方法仅支持 Android 平台。

setReadBackgroundColor

设置阅读器的背景颜色。

参数:

参数名类型描述
themeCPDFThemes背景颜色主题
tsx
await pdfReaderRef.current?.setReadBackgroundColor(CPDFThemes.LIGHT);

主题说明

模式描述可选值
LIGHT使用白色背景和黑色文字,适合在光线充足的环境下阅读。CPDFThemes.LIGHT
DARK使用深色背景和浅色文字,适合在低光环境下阅读。CPDFThemes.DARK
SEPIA使用米色背景,适合习惯纸质阅读的用户。CPDFThemes.SEPIA
RESEDA采用柔和的浅绿色背景,减轻强光和高对比度带来的不适感,缓解视觉疲劳。CPDFThemes.RESEDA

getReadBackgroundColor

获取阅读器的背景颜色。

返回一个 Promise。

参数名类型描述
resultCPDFThemes背景颜色主题
tsx
CPDFThemes theme = await pdfReaderRef.current?.getReadBackgroundColor();

setFormFieldHighlight

设置是否显示表单字段高亮。

参数:

参数名类型描述
isFormFieldHighlightboolean是否显示表单字段高亮。
tsx
await pdfReaderRef.current?.setFormFieldHighlight(true);

isFormFieldHighlight

是否显示表单字段高亮。

返回一个 Promise。

参数名类型描述
resultboolean当前是否显示表单字段高亮
tsx
const isFormFieldHighlight = await pdfReaderRef.current?.isFormFieldHighlight();

setLinkHighlight

设置是否显示链接高亮。

参数:

参数名类型描述
isLinkHighlightboolean是否高亮显示链接。
tsx
await pdfReaderRef.current?.setLinkHighlight(true);

isLinkHighlight

是否显示链接高亮。

返回一个 Promise。

参数名类型描述
resultboolean
tsx
const isLinkHighlight = await pdfReaderRef.current?.isLinkHighlight();

setVerticalMode

设置是否为垂直滚动模式。

参数:

参数名类型描述
isVerticalModeboolean是否为垂直滚动模式。
tsx
await pdfReaderRef.current?.setVerticalMode(true);

isVerticalMode

是否为垂直滚动模式。

返回一个 Promise。

参数名类型描述
resultboolean如果是垂直滚动模式,返回 true,否则返回 false
tsx
await pdfReaderRef.current?.isVerticalMode();

setContinueMode

设置是否为连续滚动模式。

参数:

参数名类型描述
isContinueModeboolean是否为连续滚动模式。
tsx
await pdfReaderRef.current?.setContinueMode(true);

isContinueMode

是否为连续滚动模式。

返回一个 Promise。

参数名类型描述
resultboolean如果是连续滚动模式,返回 true,否则返回 false
tsx
await pdfReaderRef.current?.isContinueMode();

setDoublePageMode

设置是否为双页模式。

参数:

参数名类型描述
isDoublePageModeboolean是否为双页模式。
tsx
await pdfReaderRef.current?.setDoublePageMode(true);

isDoublePageMode

是否为双页模式。

返回一个 Promise。

参数名类型描述
resultboolean如果启用双页显示,返回 true,否则返回 false
tsx
await pdfReaderRef.current?.isDoublePageMode();
await pdfReaderRef.current?.isContinueMode();

setCoverPageMode

设置是否为封面页模式。

参数:

参数名类型描述
isCoverPageModeboolean是否显示封面页形式的文档
tsx
await pdfReaderRef.current?.setCoverPageMode(true);

isCoverPageMode

是否为封面页模式。

返回一个 Promise。

参数名类型描述
resultboolean如果显示封面页,返回 true,否则返回 false
tsx
await pdfReaderRef.current?.isCoverPageMode();

setCropMode

设置是否为裁剪模式。

参数:

参数名类型描述
isCropModeboolean是否为裁剪模式。
tsx
await pdfReaderRef.current?.setCropMode(true);

isCropMode

是否为裁剪模式。

返回一个 Promise。

参数名类型描述
resultboolean如果当前模式为裁剪模式,返回 true,否则返回 false
tsx
await pdfReaderRef.current?.isCropMode();

setPageSameWidth

在单页模式下,设置是否所有页面保持相同宽度,并且原始页面保持与 readerView 相同的宽度。

参数:

参数名类型描述
isPageSameWidthbooleantrue: 所有页面保持相同宽度,原始状态与 readerView 宽度相同;false: 按页面的实际宽度显示
tsx
await pdfReaderRef.current?.setPageSameWidth(true);

注意:此方法仅支持 Android 平台。

isPageInScreen

获取指定的 pageIndex 是否显示在屏幕上。

参数:

参数名类型描述
pageIndexint页面索引
tsx
const isPageInScreen = await pdfReaderRef.current?.isPageInScreen(1);

注意:此方法仅支持 Android 平台。

setFixedScroll

设置在阅读时缩放时是否固定非滑动方向的位置。

参数:

参数名类型描述
isFixedScrollboolean是否固定滚动位置
tsx
await pdfReaderRef.current?.setFixedScroll(true);

注意:此方法仅支持 Android 平台。

setPreviewMode

切换当前 CPDFReaderWidget 显示的模式。

参数:

参数名类型描述
viewModeCPDFViewMode要显示的视图模式
tsx
await pdfReaderRef.current?.setPreviewMode(CPDFViewMode.VIEWER);

getPreviewMode

获取当前显示的模式。

返回一个 Promise。

名称类型描述
viewModeCPDFViewMode返回当前显示的视图模式
tsx
const mode = await pdfReaderRef.current?.getPreviewMode();

showThumbnailView

显示缩略图视图。当 [editMode] 为 true 时,页面进入编辑模式,允许执行插入、删除、提取等操作。

返回一个 Promise。

名称类型描述
editModeboolean是否启用编辑模式
tsx
await pdfReaderRef.current?.showThumbnailView(true);

showBotaView

显示 BOTA 视图,包括文档大纲、书签和注释列表。

tsx
await pdfReaderRef.current?.showBotaView();

showAddWatermarkView

显示添加水印视图,包括文档大纲、书签和注释列表。

tsx
await pdfReaderRef.current?.showAddWatermarkView();

showSecurityView

显示文档安全设置视图,允许用户配置文档安全选项。

tsx
await pdfReaderRef.current?.showSecurityView();

showDisplaySettingView

显示设置视图,用户可以在此配置滚动方向、滚动模式和主题等选项。

tsx
await pdfReaderRef.current?.showDisplaySettingView();

enterSnipMode

进入截图模式,允许用户截取屏幕截图。

tsx
await pdfReaderRef.current?.enterSnipMode();

exitSnipMode

退出截图模式,停止用户截图操作。

tsx
await pdfReaderRef.current?.exitSnipMode();

页面

setDisplayPageIndex

跳转到指定页面索引。

参数:

名称类型描述
pageIndexint需要跳转的页码
tsx
await pdfReaderRef.current?.setDisplayPageIndex(1);

getCurrentPageIndex

获取当前页面的索引。

返回一个 Promise。

Promise 参数:

名称类型描述
pageIndexint当前文档展示的页面索引
tsx
const pageIndex = await pdfReaderRef.current?.getCurrentPageIndex();

onPageChanged

可选函数

页面编号更改时调用此函数。

参数:

名称类型描述
pageNumberint当前页面的页码
tsx
<CPDFReaderView
  onPageChanged={(pageIndex: number) => {
    console.log('Current Page:', pageIndex);
  }}
/>

getPageCount

获取当前文档的总页数

返回一个 Promise。

Promise 参数:

名称类型描述
countint获取当前文档的总页数
tsx
const pageCount = await pdfReaderRef.current?._pdfDocument.getPageCount();

注释

importAnnotations

将指定的 XFDF 文件中的注释导入到当前 PDF 文档中。

参数:

名称类型描述
xfdfFilestring要导入的 XFDF 文件的路径。
Android 支持以下路径:
- assets 文件: 'file:///android_asset/test.xfdf'
- 文件路径: '/data/xxx.xfdf'
- Uri: 'content://xxxx'

返回一个 Promise。

Promise 参数:

名称类型描述
resultbooleantrue: 导入成功,false: 导入失败。
tsx
const result = await pdfReaderRef.current?.importAnnotations('xxx.xfdf');

exportAnnotations

将当前 PDF 文档中的注释导出为 XFDF 文件。

返回一个 Promise。

Promise 参数:

名称类型描述
xfdfPathstring如果导出成功,返回 XFDF 文件的路径;如果导出失败,则返回空字符串。
tsx
const exportXfdfFilePath = await pdfReaderRef.current?.exportAnnotations();

removeAllAnnotations

删除当前文档中的所有注释。

返回一个 Promise。

Promise 参数:

名称类型描述
resultbooleantrue: 成功,false: 失败。
tsx
const removeResult = await pdfReaderRef.current?.removeAllAnnotations();

安全性

isEncrypted

检查PDF文档是否加密。

返回一个 Promise。

名称类型描述
resultboolean当前文档是否已加密
tsx
const isEncrypted = await pdfReaderRef.current?._pdfDocument.isEncrypted();

getPermissions

获取当前文档的权限。

权限类型有三种:

  • 无限制:CPDFDocumentPermissions.NONE
  • 如果文档有打开密码和所有者密码,使用打开密码将授予 CPDFDocumentPermissions.USER 权限,使用所有者密码将授予 CPDFDocumentPermissions.OWNER 权限。

返回一个 Promise。

名称类型描述
resultCPDFDocumentPermissions获取当前文档的权限
tsx
const permissions = await pdfReaderRef.current?._pdfDocument.getPermissions();

checkOwnerUnlocked

检查所有者权限是否已解锁。

返回一个 Promise。

名称类型描述
resultboolean
tsx
const unlocked = await pdfReaderRef.current?._pdfDocument.checkOwnerUnlocked();

checkOwnerPassword

检查所有者密码是否正确。如果密码正确,文档将解锁并授予完整的所有者权限。

参数:

名称类型描述
passwordstring要验证的所有者密码

返回一个 Promise。

名称类型描述
resultboolean如果所有者密码正确,返回 true,否则返回 false
tsx
const check = await pdfReaderRef.current?._pdfDocument.checkOwnerPassword('ownerPassword');

setPassword

设置文档密码,包括用于访问限制的用户密码和用于授予权限的所有者密码。

  • 要启用如打印或复制等权限,必须设置所有者密码,否则设置将不起作用。

参数:

名称类型描述
userPasswordstring用于文档访问限制的用户密码
ownerPasswordstring用于授予权限的所有者密码(例如,打印、复制)
allowsPrintingboolean是否允许打印(true 或 false)
allowsCopyingboolean是否允许复制(true 或 false)
encryptAlgoCPDFDocumentEncryptAlgo使用的加密算法(例如 CPDFDocumentEncryptAlgo.rc4

返回一个 Promise。

名称类型描述
resultboolean如果密码成功设置,则返回 true,否则返回 false
tsx
const success = await pdfReaderRef.current?._pdfDocument.setPassword(
  'user_password',
  'owner_password',
  false,
  false,
  CPDFDocumentEncryptAlgo.rc4
);

removePassword

移除文档中设置的用户密码和所有者权限密码,并执行增量保存。

返回一个 Promise。

名称类型描述
resultboolean如果密码移除成功,则返回 true,否则返回 false
tsx
const check = await pdfReaderRef.current?._pdfDocument.checkOwnerPassword('ownerPassword');

getEncryptAlgo

获取当前文档的加密算法。

返回一个 Promise。

名称类型描述
resultCPDFDocumentEncryptAlgo加密类型
tsx
const encryptAlgo = await pdfReaderRef.current?._pdfDocument.getEncryptAlgo();