本页内容
保存文档
手动保存
在使用 CPDFReaderWidget
组件时,文档会在执行分享、扁平化或添加水印等操作时自动保存。此外,您还可以通过 CPDFReaderWidgetController
在任何需要的时刻手动保存文档。例如:
dart
late CPDFReaderWidgetController _controller;
Scaffold(
resizeToAvoidBottomInset: false,
appBar: AppBar(
leading: IconButton(
onPressed: () {
_save();
Navigator.pop(context);
},
icon: const Icon(Icons.arrow_back)),
),
body: CPDFReaderWidget(
document: widget.documentPath,
configuration: CPDFConfiguration(),
onCreated: (controller) {
setState(() {
_controller = controller;
});
},
));
void _save() async {
bool saveResult = await _controller.document.save();
debugPrint('ComPDFKit-Flutter: saveResult:$saveResult');
}
另存为
ComPDFKit Flutter SDK 支持通过“另存为”功能保存文档。在 Flutter 中使用 CPDFReaderWidget 显示文档后,您可以按照以下步骤实现“另存为”功能:
- 使用
CPDFReaderWidget
打开文档。 - 当自定义 Flutter 按钮被点击时,调用
CPDFReaderWidgetController
的saveAs
接口。
Dart 代码示例如下:
dart
late CPDFReaderWidgetController _controller;
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: false,
appBar: AppBar(),
body: Column(children: [
TextButton(onPressed: () async{
final tempDir = await ComPDFKit.getTemporaryDirectory();
String savePath = '${tempDir.path}/temp/test_save_as.pdf';
bool saveResult = await _controller.document.saveAs(savePath, removeSecurity: false, fontSubSet: true);
}, child: const Text('另存为')),
Expanded(child: CPDFReaderWidget(
document: widget.documentPath,
configuration: CPDFConfiguration(),
onCreated: (controller) {
setState(() {
_controller = controller;
});
},
))
],));
}
在 Android 平台上,saveAs()
方法还支持通过 Uri 保存到指定目录。例如,以下代码将文档保存到设备公共目录的 Downloads
文件夹中:
dart
String? uri = await ComPDFKit.createUri('save_as.pdf');
if(uri != null){
bool saveResult = await _controller.document.saveAs(uri, removeSecurity: false, fontSubSet: true);
}
参数详情:
参数名称 | 类型 | 描述 |
---|---|---|
savePath | string | “另存为”操作的目标路径 |
removeSecurity | bool | 是否移除文档密码默认值: false |
fontSubSet | bool | 是否在文档中包含字体子集。该参数会影响 PDF 在其他软件中的显示效果。如果其他软件中缺少所需字体,文本可能无法正确显示。默认值: true |
保存回调
在创建 CPDFReaderWidget
时,您可以设置保存监听器来处理保存事件。例如:
dart
CPDFReaderWidget(
document: widget.documentPath,
configuration: CPDFConfiguration(),
onCreated: (controller) {
},
onSaveCallback: (){
debugPrint('CPDFDocument: 保存成功');
},
)