CPDFReaderView - Props
打开文档
CPDFReaderView
是一个 React 组件,用于展示 PDF 文档。以下是关于 document
属性的详细信息。
document
指定要展示的 PDF 文档的路径或 URI。
- 类型:
string
- 必需: 是
使用示例:
- (Android) 对于本地存储文件路径:
<CPDFReaderView
document={'/storage/emulated/0/Download/PDF_document.pdf'}/>
- (Android) 对于内容 Uri:
<CPDFReaderView
document={'content://...'}/>
- (Android) 对于 assets 路径:
<CPDFReaderView
document={'file:///android_asset/...'}/>
- (iOS) 对于应用程序包文件路径:
<CPDFReaderView
document={'pdf_document.pdf'}/>
password
打开文档的密码是一个可选参数。
- 类型:
string
使用示例:
<CPDFReaderView
document={'pdf_document.pdf'}
password={'password'}/>
configuration
用于在渲染 PDF 文件时传递配置参数,以自定义 UI 特性和 PDF 查看属性。ComPDFKit
提供了通过 ComPDFKit.getDefaultConfig
获取的默认配置参数。
- 类型:
string
- 必需: 是
使用示例:
<CPDFReaderView
document={samplePDF}
configuration={ComPDFKit.getDefaultConfig({
})}
style={{flex:1}}
/>
文档相关
open
在当前的 CPDFReaderView
组件中重新打开指定的文档。
参数:
参数名 | 类型 | 描述 |
---|---|---|
document | string | PDF文档的文件路径。 |
password | string | 文档的密码,可以为null或为空。 |
返回一个 Promise。
参数 | 类型 | 描述 |
---|---|---|
result | bool | 如果文档成功打开,返回 true ,否则返回 false 。 |
await pdfReaderRef.current?._pdfDocument.open(document, 'password');
hasChange
检查文档是否已被修改。
返回一个 Promise。
Promise 参数:
名称 | 类型 | 描述 |
---|---|---|
hasChange | boolean | true :文档已被修改,false :文档未被修改。 |
const hasChange = await pdfReaderRef.current?.hasChange();
save
保存当前文档的更改。
返回一个 Promise。
Promise 参数:
名称 | 类型 | 描述 |
---|---|---|
result | boolean | true:保存成功,false:保存失败。 |
const saveResult = await pdfReaderRef.current.save();
onSaveDocument
可选函数
当文档保存时,此函数将被调用。
参数:
名称 | 类型 | 描述 |
---|---|---|
pageNumber | int | 当前页码 |
<CPDFReaderView
onSaveDocument={()=>{}}
/>
getFileName
获取PDF文档的文件名。
返回一个 Promise。
参数 | 类型 | 描述 |
---|---|---|
result | string | 获取PDF文档的文件名。 |
const fileName = await pdfReaderRef.current?._pdfDocument.getFileName();
isImageDoc
检查PDF文档是否为图像文档。这是一个耗时的操作,取决于文档的大小。
返回一个 Promise。
参数 | 类型 | 描述 |
---|---|---|
result | boolean | 如果文档是扫描的图像文档,则返回 true ,否则返回 false 。 |
const isImageDoc = await pdfReaderRef.current?._pdfDocument.isImageDoc();
查看器
setMargins
设置当前 PDF 视图的边距。
参数:
名称 | 类型 | 描述 |
---|---|---|
left | int | 左边距 |
top | int | 上边距 |
right | int | 右边距 |
bottom | int | 下边距 |
await pdfReaderRef.current?.setMargins(10, 10, 10, 10);
setPageSpacing
设置页面之间的间距。此方法仅在 Android
平台上支持。
- 对于
iOS
平台,请使用setMargins
方法。页面之间的间距等于CPDFEdgeInsets.top
的值。
参数:
参数名 | 类型 | 描述 |
---|---|---|
pageSpacing | int | 页面之间的间距,以像素为单位。 |
await pdfReaderRef.current?.setPageSpacing(10);
注意:此方法仅支持 Android 平台。
setScale
设置页面缩放比例,值范围:1.0~5.0
参数:
参数名 | 类型 | 描述 |
---|---|---|
scale | number | 缩放值 |
await pdfReaderRef.current?.setScale(2.0);
getScale
获取当前页面的缩放比例。
返回一个 Promise。
参数名 | 类型 | 描述 |
---|---|---|
result | number | 返回当前页面的缩放比例。 |
const scale = await pdfReaderRef.current?.getScale();
setCanScale
是否允许缩放。
参数:
参数名 | 类型 | 描述 |
---|---|---|
canScale | boolean | 是否允许缩放 |
await pdfReaderRef.current?.setCanScale(false);
注意:此方法仅支持 Android 平台。
setReadBackgroundColor
设置阅读器的背景颜色。
参数:
参数名 | 类型 | 描述 |
---|---|---|
theme | CPDFThemes | 背景颜色主题 |
await pdfReaderRef.current?.setReadBackgroundColor(CPDFThemes.LIGHT);
主题说明
模式 | 描述 | 可选值 |
---|---|---|
LIGHT | 使用白色背景和黑色文字,适合在光线充足的环境下阅读。 | CPDFThemes.LIGHT |
DARK | 使用深色背景和浅色文字,适合在低光环境下阅读。 | CPDFThemes.DARK |
SEPIA | 使用米色背景,适合习惯纸质阅读的用户。 | CPDFThemes.SEPIA |
RESEDA | 采用柔和的浅绿色背景,减轻强光和高对比度带来的不适感,缓解视觉疲劳。 | CPDFThemes.RESEDA |
getReadBackgroundColor
获取阅读器的背景颜色。
返回一个 Promise。
参数名 | 类型 | 描述 |
---|---|---|
result | CPDFThemes | 背景颜色主题 |
CPDFThemes theme = await pdfReaderRef.current?.getReadBackgroundColor();
setFormFieldHighlight
设置是否显示表单字段高亮。
参数:
参数名 | 类型 | 描述 |
---|---|---|
isFormFieldHighlight | boolean | 是否显示表单字段高亮。 |
await pdfReaderRef.current?.setFormFieldHighlight(true);
isFormFieldHighlight
是否显示表单字段高亮。
返回一个 Promise。
参数名 | 类型 | 描述 |
---|---|---|
result | boolean | 当前是否显示表单字段高亮 |
const isFormFieldHighlight = await pdfReaderRef.current?.isFormFieldHighlight();
setLinkHighlight
设置是否显示链接高亮。
参数:
参数名 | 类型 | 描述 |
---|---|---|
isLinkHighlight | boolean | 是否高亮显示链接。 |
await pdfReaderRef.current?.setLinkHighlight(true);
isLinkHighlight
是否显示链接高亮。
返回一个 Promise。
参数名 | 类型 | 描述 |
---|---|---|
result | boolean |
const isLinkHighlight = await pdfReaderRef.current?.isLinkHighlight();
setVerticalMode
设置是否为垂直滚动模式。
参数:
参数名 | 类型 | 描述 |
---|---|---|
isVerticalMode | boolean | 是否为垂直滚动模式。 |
await pdfReaderRef.current?.setVerticalMode(true);
isVerticalMode
是否为垂直滚动模式。
返回一个 Promise。
参数名 | 类型 | 描述 |
---|---|---|
result | boolean | 如果是垂直滚动模式,返回 true ,否则返回 false |
await pdfReaderRef.current?.isVerticalMode();
setContinueMode
设置是否为连续滚动模式。
参数:
参数名 | 类型 | 描述 |
---|---|---|
isContinueMode | boolean | 是否为连续滚动模式。 |
await pdfReaderRef.current?.setContinueMode(true);
isContinueMode
是否为连续滚动模式。
返回一个 Promise。
参数名 | 类型 | 描述 |
---|---|---|
result | boolean | 如果是连续滚动模式,返回 true ,否则返回 false |
await pdfReaderRef.current?.isContinueMode();
setDoublePageMode
设置是否为双页模式。
参数:
参数名 | 类型 | 描述 |
---|---|---|
isDoublePageMode | boolean | 是否为双页模式。 |
await pdfReaderRef.current?.setDoublePageMode(true);
isDoublePageMode
是否为双页模式。
返回一个 Promise。
参数名 | 类型 | 描述 |
---|---|---|
result | boolean | 如果启用双页显示,返回 true ,否则返回 false |
await pdfReaderRef.current?.isDoublePageMode();
await pdfReaderRef.current?.isContinueMode();
setCoverPageMode
设置是否为封面页模式。
参数:
参数名 | 类型 | 描述 |
---|---|---|
isCoverPageMode | boolean | 是否显示封面页形式的文档 |
await pdfReaderRef.current?.setCoverPageMode(true);
isCoverPageMode
是否为封面页模式。
返回一个 Promise。
参数名 | 类型 | 描述 |
---|---|---|
result | boolean | 如果显示封面页,返回 true ,否则返回 false |
await pdfReaderRef.current?.isCoverPageMode();
setCropMode
设置是否为裁剪模式。
参数:
参数名 | 类型 | 描述 |
---|---|---|
isCropMode | boolean | 是否为裁剪模式。 |
await pdfReaderRef.current?.setCropMode(true);
isCropMode
是否为裁剪模式。
返回一个 Promise。
参数名 | 类型 | 描述 |
---|---|---|
result | boolean | 如果当前模式为裁剪模式,返回 true ,否则返回 false |
await pdfReaderRef.current?.isCropMode();
setPageSameWidth
在单页模式下,设置是否所有页面保持相同宽度,并且原始页面保持与 readerView
相同的宽度。
参数:
参数名 | 类型 | 描述 |
---|---|---|
isPageSameWidth | boolean | true: 所有页面保持相同宽度,原始状态与 readerView 宽度相同;false: 按页面的实际宽度显示 |
await pdfReaderRef.current?.setPageSameWidth(true);
注意:此方法仅支持 Android 平台。
isPageInScreen
获取指定的 pageIndex
是否显示在屏幕上。
参数:
参数名 | 类型 | 描述 |
---|---|---|
pageIndex | int | 页面索引 |
const isPageInScreen = await pdfReaderRef.current?.isPageInScreen(1);
注意:此方法仅支持 Android 平台。
setFixedScroll
设置在阅读时缩放时是否固定非滑动方向的位置。
参数:
参数名 | 类型 | 描述 |
---|---|---|
isFixedScroll | boolean | 是否固定滚动位置 |
await pdfReaderRef.current?.setFixedScroll(true);
注意:此方法仅支持 Android 平台。
setPreviewMode
切换当前 CPDFReaderWidget
显示的模式。
参数:
参数名 | 类型 | 描述 |
---|---|---|
viewMode | CPDFViewMode | 要显示的视图模式 |
await pdfReaderRef.current?.setPreviewMode(CPDFViewMode.VIEWER);
getPreviewMode
获取当前显示的模式。
返回一个 Promise。
名称 | 类型 | 描述 |
---|---|---|
viewMode | CPDFViewMode | 返回当前显示的视图模式 |
const mode = await pdfReaderRef.current?.getPreviewMode();
showThumbnailView
显示缩略图视图。当 [editMode] 为 true
时,页面进入编辑模式,允许执行插入、删除、提取等操作。
返回一个 Promise。
名称 | 类型 | 描述 |
---|---|---|
editMode | boolean | 是否启用编辑模式 |
await pdfReaderRef.current?.showThumbnailView(true);
showBotaView
显示 BOTA 视图,包括文档大纲、书签和注释列表。
await pdfReaderRef.current?.showBotaView();
showAddWatermarkView
显示添加水印视图,包括文档大纲、书签和注释列表。
await pdfReaderRef.current?.showAddWatermarkView();
showSecurityView
显示文档安全设置视图,允许用户配置文档安全选项。
await pdfReaderRef.current?.showSecurityView();
showDisplaySettingView
显示设置视图,用户可以在此配置滚动方向、滚动模式和主题等选项。
await pdfReaderRef.current?.showDisplaySettingView();
enterSnipMode
进入截图模式,允许用户截取屏幕截图。
await pdfReaderRef.current?.enterSnipMode();
exitSnipMode
退出截图模式,停止用户截图操作。
await pdfReaderRef.current?.exitSnipMode();
页面
setDisplayPageIndex
跳转到指定页面索引。
参数:
名称 | 类型 | 描述 |
---|---|---|
pageIndex | int | 需要跳转的页码 |
await pdfReaderRef.current?.setDisplayPageIndex(1);
getCurrentPageIndex
获取当前页面的索引。
返回一个 Promise。
Promise 参数:
名称 | 类型 | 描述 |
---|---|---|
pageIndex | int | 当前文档展示的页面索引 |
const pageIndex = await pdfReaderRef.current?.getCurrentPageIndex();
onPageChanged
可选函数
页面编号更改时调用此函数。
参数:
名称 | 类型 | 描述 |
---|---|---|
pageNumber | int | 当前页面的页码 |
<CPDFReaderView
onPageChanged={(pageIndex: number) => {
console.log('Current Page:', pageIndex);
}}
/>
getPageCount
获取当前文档的总页数
返回一个 Promise。
Promise 参数:
名称 | 类型 | 描述 |
---|---|---|
count | int | 获取当前文档的总页数 |
const pageCount = await pdfReaderRef.current?._pdfDocument.getPageCount();
注释
importAnnotations
将指定的 XFDF 文件中的注释导入到当前 PDF 文档中。
参数:
名称 | 类型 | 描述 |
---|---|---|
xfdfFile | string | 要导入的 XFDF 文件的路径。 Android 支持以下路径: - assets 文件: 'file:///android_asset/test.xfdf' - 文件路径: '/data/xxx.xfdf' - Uri: 'content://xxxx' |
返回一个 Promise。
Promise 参数:
名称 | 类型 | 描述 |
---|---|---|
result | boolean | true: 导入成功,false: 导入失败。 |
const result = await pdfReaderRef.current?.importAnnotations('xxx.xfdf');
exportAnnotations
将当前 PDF 文档中的注释导出为 XFDF 文件。
返回一个 Promise。
Promise 参数:
名称 | 类型 | 描述 |
---|---|---|
xfdfPath | string | 如果导出成功,返回 XFDF 文件的路径;如果导出失败,则返回空字符串。 |
const exportXfdfFilePath = await pdfReaderRef.current?.exportAnnotations();
removeAllAnnotations
删除当前文档中的所有注释。
返回一个 Promise。
Promise 参数:
名称 | 类型 | 描述 |
---|---|---|
result | boolean | true: 成功,false: 失败。 |
const removeResult = await pdfReaderRef.current?.removeAllAnnotations();
安全性
isEncrypted
检查PDF文档是否加密。
返回一个 Promise。
名称 | 类型 | 描述 |
---|---|---|
result | boolean | 当前文档是否已加密 |
const isEncrypted = await pdfReaderRef.current?._pdfDocument.isEncrypted();
getPermissions
获取当前文档的权限。
权限类型有三种:
- 无限制:
CPDFDocumentPermissions.NONE
- 如果文档有打开密码和所有者密码,使用打开密码将授予
CPDFDocumentPermissions.USER
权限,使用所有者密码将授予CPDFDocumentPermissions.OWNER
权限。
返回一个 Promise。
名称 | 类型 | 描述 |
---|---|---|
result | CPDFDocumentPermissions | 获取当前文档的权限 |
const permissions = await pdfReaderRef.current?._pdfDocument.getPermissions();
checkOwnerUnlocked
检查所有者权限是否已解锁。
返回一个 Promise。
名称 | 类型 | 描述 |
---|---|---|
result | boolean |
const unlocked = await pdfReaderRef.current?._pdfDocument.checkOwnerUnlocked();
checkOwnerPassword
检查所有者密码是否正确。如果密码正确,文档将解锁并授予完整的所有者权限。
参数:
名称 | 类型 | 描述 |
---|---|---|
password | string | 要验证的所有者密码 |
返回一个 Promise。
名称 | 类型 | 描述 |
---|---|---|
result | boolean | 如果所有者密码正确,返回 true ,否则返回 false |
const check = await pdfReaderRef.current?._pdfDocument.checkOwnerPassword('ownerPassword');
setPassword
设置文档密码,包括用于访问限制的用户密码和用于授予权限的所有者密码。
- 要启用如打印或复制等权限,必须设置所有者密码,否则设置将不起作用。
参数:
名称 | 类型 | 描述 |
---|---|---|
userPassword | string | 用于文档访问限制的用户密码 |
ownerPassword | string | 用于授予权限的所有者密码(例如,打印、复制) |
allowsPrinting | boolean | 是否允许打印(true 或 false) |
allowsCopying | boolean | 是否允许复制(true 或 false) |
encryptAlgo | CPDFDocumentEncryptAlgo | 使用的加密算法(例如 CPDFDocumentEncryptAlgo.rc4 ) |
返回一个 Promise。
名称 | 类型 | 描述 |
---|---|---|
result | boolean | 如果密码成功设置,则返回 true ,否则返回 false |
const success = await pdfReaderRef.current?._pdfDocument.setPassword(
'user_password',
'owner_password',
false,
false,
CPDFDocumentEncryptAlgo.rc4
);
removePassword
移除文档中设置的用户密码和所有者权限密码,并执行增量保存。
返回一个 Promise。
名称 | 类型 | 描述 |
---|---|---|
result | boolean | 如果密码移除成功,则返回 true ,否则返回 false |
const check = await pdfReaderRef.current?._pdfDocument.checkOwnerPassword('ownerPassword');
getEncryptAlgo
获取当前文档的加密算法。
返回一个 Promise。
名称 | 类型 | 描述 |
---|---|---|
result | CPDFDocumentEncryptAlgo | 加密类型 |
const encryptAlgo = await pdfReaderRef.current?._pdfDocument.getEncryptAlgo();