打开文档
PDFViewCtrl 提供了多种打开 PDF 文档的方式,涵盖文件路径、Android Uri、内存 Buffer、网络 URL 和自定义数据源等场景。
从文件路径打开
最常见的方式,openDoc() 内部会完成创建 PDFDoc、加载文档并设置到 PDFViewCtrl:
java
String path = "/sdcard/FoxitSDK/Sample.pdf";
pdfViewCtrl.openDoc(path, null);
也可以手动创建 PDFDoc 后通过 setDoc() 设置:
java
try {
PDFDoc doc = new PDFDoc(path);
doc.load(null);
pdfViewCtrl.setDoc(doc);
} catch (PDFException e) {
e.printStackTrace();
}
从 Android Uri 打开
适用于通过 Intent、DocumentProvider 或 SAF(Storage Access Framework)获取的文件 Uri:
java
Uri uri = data.getData();
pdfViewCtrl.openDoc(uri, null);
从内存 Buffer 打开
适用于文档数据已在内存中的场景(如解密后的字节数组):
java
byte[] pdfBuffer = loadPdfBytes();
pdfViewCtrl.openDocFromMemory(pdfBuffer, null);
从自定义数据源打开
通过实现 FileReaderCallback 接口,支持自定义读取逻辑(如加密存储、网络流等):
java
pdfViewCtrl.openDoc(fileReaderCallback, null);
备注
使用自定义数据源时,也可以直接通过 Core SDK 创建 PDFDoc:
java
PDFDoc doc = new PDFDoc(fileReaderCallback);
doc.load(null);
pdfViewCtrl.setDoc(doc);
从 URL 打开
通过 openDocFromUrl() 从网络 URL 打开 PDF,SDK 会自动处理下载和缓存:
java
PDFViewCtrl.CacheOption cacheOption = new PDFViewCtrl.CacheOption();
cacheOption.setCacheFile("/sdcard/FoxitSDK/cache/sample.pdf");
pdfViewCtrl.openDocFromUrl(
"https://example.com/sample.pdf", null, cacheOption, null);
CacheOption 可指定本地缓存路径;HttpRequestProperties 可设置自定义 HTTP 请求头。
提示
通过 URL 打开时若遇到文档显示异常或无法打开,请参阅:通过 URL 打开 PDF 异常排查。
打开后跳转到指定页面
SDK 使用多线程渲染,需确保文档已打开成功后再调用 gotoPage()。推荐在 IDocEventListener.onDocOpened() 回调中跳转:
java
pdfViewCtrl.registerDocEventListener(new PDFViewCtrl.IDocEventListener() {
@Override
public void onDocWillOpen() {}
@Override
public void onDocOpened(PDFDoc pdfDoc, int errCode) {
pdfViewCtrl.gotoPage(2);
}
@Override
public void onDocWillClose(PDFDoc pdfDoc) {}
@Override
public void onDocClosed(PDFDoc pdfDoc, int i) {}
@Override
public void onDocWillSave(PDFDoc pdfDoc) {}
@Override
public void onDocSaved(PDFDoc pdfDoc, int i) {}
});
pdfViewCtrl.openDoc(path, null);
关闭文档
java
pdfViewCtrl.closeDoc();
调用 closeDoc() 后,PDFViewCtrl 会释放文档资源并触发 IDocEventListener 的 onDocWillClose 和 onDocClosed 回调。
API 参考
PDFDoc、PDFViewCtrl 的完整接口说明请参阅 API 手册。