OFD 线性包
本节介绍 OFD 线性包访问能力。OFDLinearPackage 用于打开线性化 OFD 文件,并按包内路径读取指定文件内容(例如 OFD.xml、Doc_0/Document.xml、页面 Content.xml、资源 XML 等)。该能力适用于包结构分析、调试或读取内部原始文件。
OFDLinearPackage 不依赖 OFDDoc 或 OFDPage 作为入口,与 OFDPackage::LoadDocument 的文档加载流程相互独立。
任务场景
- 读取线性化 OFD 包内指定路径的文件内容。
- 分析或排查 OFD 包内部 XML、资源文件。
- 验证包内路径是否可读(与
GetFileContent行为相关)。
API 概览
| 功能 | C++ API(foxit::ofd) | 核心参数 / 描述 |
|---|---|---|
| 线性包 | OFDLinearPackage | 从 OFD 文件路径构造;与 OFDPackage 独立入口 |
| 读取包内文件 | GetFileContent | 参数为包内相对路径(如 OFD.xml、Doc_0/Document.xml);支持 String / WString |
| 有效性 | IsEmpty | 构造失败或路径无效时为 true |
读取包内文件内容
通过文件路径构造 OFDLinearPackage 后,调用 GetFileContent 传入包内相对路径(支持 String 或 WString)。路径不存在或无效时,可能返回空内容或抛出异常,具体以接口文档为准。
以下示例演示读取包内 OFD.xml 内容。
c++
#include "ofd/fs_ofdlinearpackage.h"
using namespace foxit;
using namespace foxit::ofd;
void ReadLinearPackageEntry(const wchar_t* input_file) {
OFDLinearPackage linear_package(input_file);
if (linear_package.IsEmpty()) {
return;
}
String content = linear_package.GetFileContent(String("OFD.xml"));
}
java
import com.foxit.sdk.ofd.OFDLinearPackage;
public class OFDLinearPackageRead {
public static void readLinearPackageEntry(String inputFile) throws Exception {
OFDLinearPackage linearPackage = new OFDLinearPackage(inputFile);
if (linearPackage.isEmpty()) {
return;
}
String content = linearPackage.getFileContent("OFD.xml");
}
}
注意事项
OFDLinearPackage与OFDPackage用途不同:前者按路径读内部文件,后者用于加载OFDDoc、保存文件包等完整包操作。- 需要判断 OFD 是否符合规范时,请使用
OFDPackage::Verify,不要使用本节 API 替代。