1. 产品
  2.   Aspose.Note
  3.   Aspose.Note FOSS for Python

Aspose.Note FOSS for Python

从 Python 读取、遍历并导出 Microsoft OneNote (.one) 文件 — 免费且开源,无需 Microsoft Office。

开源 Python 库,用于 OneNote 文件

Aspose.Note FOSS for Python 是一个 100% 免费、MIT 许可证的库,允许您完全在 Python 中读取 Microsoft OneNote (.one) 文件,无需 Microsoft Office、COM 自动化,也不需要专有运行时。它提供了一个简洁的公共 API(aspose.note.*),其模型基于熟悉的 Aspose.Note for .NET 接口,并由用纯 Python 编写的内置 MS-ONE/OneStore 二进制解析器支持。

通过 PyPI 安装,使用 pip install aspose-note(或 pip install "aspose-note[pdf]" 以启用 PDF 导出)。需要 Python 3.10 或更高版本。

该库适用于文档自动化脚本、内容索引流水线、归档工具以及任何需要在不依赖 Microsoft Office 的情况下处理 OneNote 内容的服务器端工作流。

读取并遍历 OneNote 文档

  • 加载 .one 文件: 通过 Document 从文件路径或二进制流打开任意 OneNote 部分。
  • 完整 DOM 遍历:Document → Page → Outline → OutlineElement → RichText / Image / Table / AttachedFile 之间导航。
  • 富文本提取: 通过 RichText.Text 读取原始文本,或检查 TextRun 段落以获取粗体、斜体、字体、颜色和超链接元数据。
  • 表格解析: 遍历 Table → TableRow → TableCell 层级,获取列宽和边框可见性信息。
  • 标签检查: 读取文本、图像和表格节点上的 NoteTag 元数据(形状、标签、颜色、完成状态)。

在哪里可以使用 Aspose.Note FOSS

  • 内容索引: 提取并索引 OneNote 档案中的所有文本,以供搜索流水线使用。
  • 文档迁移: 将 OneNote 部分转换为 PDF、纯文本或结构化数据。
  • 归档工具:.one 文件中将嵌入的图像和附件保存到磁盘。
  • CI/CD 工作流: 在 Docker 容器中验证或处理 OneNote 内容。
  • 知识库流水线: 从团队的 OneNote 笔记本中提取结构化内容。

导出、图像和附件

  • PDF 导出: 使用 Document.Save(path, SaveFormat.Pdf) 将任意已加载的 Document 保存为 PDF。
  • PDF 选项: 通过 PdfSaveOptions 自定义页码范围、标签图标目录、图标大小和间距。
  • 图像导出: 遍历 Image 节点以获取原始字节、文件名、尺寸和 alt 文本。
  • 附件保存: 遍历 AttachedFile 节点,将嵌入的文件附件保存到磁盘。
  • 基于流的加载: 从二进制流(例如 io.BytesIO)打开 .one 文件,无需写入磁盘。

开发者体验

Aspose.Note FOSS 可通过单个 pip install aspose-note 命令安装。基础包没有可选依赖;PDF 导出需要 ReportLab,可通过 pip install "aspose-note[pdf]" 安装。

API 采用熟悉的 Aspose.Note for .NET 接口模型:DocumentPageOutlineRichTextImageTableAttachedFile。该库采用 MIT 许可证,开源,并接受在 GitHub 上的错误报告和贡献。

加载 OneNote 文件并提取所有文本

使用 pip 安装后,将文件路径传递给 Document() 以解析 OneNote 二进制格式。GetChildNodes(RichText) 执行深度递归搜索,返回文档中的每个文本节点,这对于全文索引或迁移流水线非常有用。

pip install aspose-note
from aspose.note import Document, RichText

doc = Document("notebook.one")
print(f"Pages: {len(list(doc))}")

# 提取整个文档中的所有文本
texts = [rt.Text for rt in doc.GetChildNodes(RichText) if rt.Text]
for text in texts:
    print(text)

导出为 PDF 并保存附带的图像

PDF 导出需要可选的 ReportLab 依赖。使用 pip install "aspose-note[pdf]" 安装它。相同的 Document 对象也可以遍历 Image 节点,以一次性提取并保存所有嵌入的图像到磁盘。

from aspose.note import Document, SaveFormat, Image
import pathlib

doc = Document("notebook.one")

# 将文档导出为 PDF(需要 aspose-note[pdf])
doc.Save("output.pdf", SaveFormat.Pdf)

# 将所有嵌入的图像保存到磁盘
out_dir = pathlib.Path("images")
out_dir.mkdir(exist_ok=True)
for i, img in enumerate(doc.GetChildNodes(Image)):
    name = img.FileName or f"image_{i}.bin"
    (out_dir / name).write_bytes(img.Bytes)

常见问题

什么是用于 Python 的 Aspose.Note FOSS?

它是一个免费、MIT 许可证的 Python 库,用于读取 Microsoft OneNote (.one) 文件,无需 Microsoft Office、COM 自动化或任何专有运行时。

支持哪些 OneNote 格式变体?

支持 OneNote 2010、OneNote Online 和 OneNote 2007 格式变体。任何有效的 .one 节文件都可以加载。

我该如何安装它?

运行 pip install aspose-note 安装基础库,或运行 pip install "aspose-note[pdf]" 来包含用于 PDF 导出的可选 ReportLab 依赖。

我可以将 OneNote 文件导出为 PDF 吗?

是的。调用 Document.Save(path, SaveFormat.Pdf)。PDF 导出需要通过 [pdf] 额外安装的可选 ReportLab 依赖。

我可以从流中加载 .one 文件吗?

是的。Document 类接受二进制流(例如 io.BytesIO 或 HTTP 响应体),因此您可以在不写入磁盘的情况下处理文件。

需要哪个 Python 版本?

Python 3.10 或更高版本是必需的。

我可以写入或修改 .one 文件吗?

不。当前版本为只读。它可以打开并解析任何有效的 .one 节段文件,但不支持写回 OneNote 二进制格式。

是否支持加密的 OneNote 文档?

不。加载受密码保护的 .one 文件会抛出 IncorrectPasswordException。当前版本不支持加密文档。

我可以在哪里找到源代码?

该库采用 MIT 许可证,托管在 GitHub 上。欢迎提交错误报告和拉取请求。

  

支持和学习资源

 中文