Guides
保存文档
ComPDF 支持保存到当前文档、另存为新文档,以及将文档保存到文件描述符或 Uri。
如果保存到当前文档,且文档支持增量保存,则修改内容会追加到原文件中。如果保存类型为非增量保存,或者需要移除文档权限,则 SDK 会通过全量保存流程写入目标文件。
保存方式说明
| 方法 | 说明 |
|---|---|
save() | 保存到当前文档,等同于 save(PDFDocumentSaveType.PDFDocumentSaveIncremental)。 |
save(PDFDocumentSaveType saveType) | 指定保存类型。PDFDocumentSaveNoIncremental 和 PDFDocumentSaveRemoveSecurity 会走全量保存流程。 |
save(PDFDocumentSaveType saveType, boolean fontSubset) | 指定保存类型,并控制是否对子集字体进行处理。 |
saveAs(String absolutePath, boolean removeSecurity) | 保存到指定路径,removeSecurity 为 true 时会移除文档权限。 |
saveAs(String absolutePath, boolean removeSecurity, boolean saveByFile) | 保存到指定路径,并指定是否通过文件方式保存。 |
saveAs(String absolutePath, boolean removeSecurity, boolean saveByFile, boolean fontSubset) | 保存到指定路径,同时控制保存方式和字体子集处理。 |
saveAs(Uri uri, boolean removeSecurity) | 保存到指定 Uri。 |
saveAs(Uri uri, boolean removeSecurity, boolean fontSubset) | 保存到指定 Uri,并控制是否对子集字体进行处理。 |
保存当前文档
保存当前文档时,先检查文档是否有修改,再调用 save()。
java
try {
if (document.hasChanges()) {
// 保存到当前文档。
boolean res = document.save();
}
} catch (CPDFDocumentException e) {
e.printStackTrace();
} finally {
// 关闭文档并释放资源。
document.close();
}kotlin
try {
if (document.hasChanges()) {
// 保存到当前文档。
val res = document.save()
}
} catch (e: CPDFDocumentException) {
e.printStackTrace()
} finally {
// 关闭文档并释放资源。
document.close()
}另存为新文档
保存到新的路径或 Uri 时,使用 saveAs()。如果需要移除文档权限,可将 removeSecurity 设置为 true。
java
String outputPath = ...;
Uri outputUri = ...;
try {
// 另存为新文档,并移除文档权限。
document.saveAs(outputPath, true);
// 另存为 Uri。
document.saveAs(outputUri, false);
} catch (CPDFDocumentException e) {
e.printStackTrace();
}kotlin
val outputPath = ...
val outputUri = ...
try {
// 另存为新文档,并移除文档权限。
document.saveAs(outputPath, true)
// 另存为 Uri。
document.saveAs(outputUri, false)
} catch (e: CPDFDocumentException) {
e.printStackTrace()
}如果需要通过文件描述符保存,或者需要控制字体子集处理,可以使用 save(int fd, ...) 或带 fontSubset 参数的重载。