Funkciók áttekintése — Aspose.Note FOSS for Python
Aspose.Note FOSS for Python (package aspose-note, version 26.3.1) egy Python API-t a Microsoft OneNote olvasásához .one szekciófájlok és PDF-be exportálásához. Az alább felsorolt összes funkciót a tároló forráskódja, a README és a példascriptek alapján ellenőriztük.
Telepítés és beállítás
Telepítés a PyPI-ról:
pip install aspose-notePDF export támogatásához (ReportLab szükséges):
pip install "aspose-note[pdf]"Követelmények: Python 3.10 vagy újabb. Microsoft Office telepítése nem szükséges.
Funkciók és képességek
.one fájl betöltése
Töltsön be Microsoft OneNote szekciófájlokat egy fájlútvonalról vagy bármilyen bináris adatfolyamból (fájlkezelő, io.BytesIO,HTTP választest, felhő tároló adatfolyam).
Document.FileFormatlegjobb erőfeszítéssel jelzi a OneNote fájlformátum verzióját (OneNote2010, OneNoteOnline vagy OneNote2007)- Az adatfolyam-alapú betöltés kiküszöböli a lemez I/O-t memória-alapú vagy hálózati munkafolyamatok esetén.
LoadOptions.LoadHistorykapcsoló szabályozza, hogy a lap előzményei szerepelnek-e a DOM-ban
from aspose.note import Document
##From a file path
doc = Document("notebook.one")
##From a binary stream
with open("notebook.one", "rb") as f:
doc = Document(f)Dokumentum DOM bejárása
A teljes OneNote dokumentum egy típusos Python objektumokból álló fa formájában érhető el. Minden csomópont örökli a Node vagy CompositeNode:
Document: gyökér; kitettiDisplayName,CreationTime,FileFormatPage: közvetlen gyermekDocument; kitettiTitle,Author,CreationTime,LastModifiedTime,LevelTitle: kitettiTitleText,TitleDate,TitleTime(összesRichTextcsomópontok)Outline: pozíciós tároló aHorizontalOffset,VerticalOffset,MaxWidth,MaxHeight,MinWidth,ReservedWidth,IndentPositionOutlineElement: levél tároló; kitettiNumberList
Navigációs módszerek be CompositeNode:
| Módszer / Tulajdonság | Leírás |
|---|---|
FirstChild, LastChild | Közvetlen gyermek hozzáférés |
GetChildNodes(Type) | Rekurzív, típus szűrt keresés |
AppendChildLast(node) | Gyermek hozzáadása a végén |
AppendChildFirst(node) | Gyermek hozzáadása az elején |
InsertChild(index, node) | Beszúrás pozícióba |
RemoveChild(node) | Gyermek eltávolítása |
for child in node | Közvetlen gyermekek iterálása |
from aspose.note import Document, Page, Outline, OutlineElement, RichText
doc = Document("notebook.one")
for page in doc.GetChildNodes(Page):
title_text = page.Title.TitleText.Text if page.Title and page.Title.TitleText else ""
print(f"Page: {title_text}")
for outline in page.GetChildNodes(Outline):
for oe in outline.GetChildNodes(OutlineElement):
for rt in oe.GetChildNodes(RichText):
print(f" {rt.Text}")Rich Text tartalom kinyerése
RichText csomópontok tartalmazzák:
Text: str: teljes egyszerű szöveg karakterláncTextRuns: list[TextRun]: formázott szegmensek listájaTags: list[NoteTag]: ehhez a blokkhoz csatolt OneNote címkékAppend(text, style=None): szövegrészlet hozzáfűzése memóriábanReplace(old_value, new_value): memóriabeli karakterlánc helyettesítés
Minden TextRun tartalmaz:
| Tulajdonság | Típus | Leírás |
|---|---|---|
Text | str | Szegmens szöveg |
Style | TextStyle | Formázási metaadatok |
TextStyle tulajdonságok:
| Tulajdonság | Típus |
|---|---|
IsBold, IsItalic, IsUnderline, IsStrikethrough | bool |
IsSuperscript, IsSubscript | bool |
FontName | `str |
FontSize | `float |
FontColor, Highlight | `int |
Language | `int |
IsHyperlink | bool |
HyperlinkAddress | `str |
from aspose.note import Document, RichText
doc = Document("notebook.one")
for rt in doc.GetChildNodes(RichText):
for run in rt.TextRuns:
if run.Style.IsHyperlink:
print(f"Hyperlink: {run.Text} -> {run.Style.HyperlinkAddress}")
if run.Style.IsBold:
print(f"Bold text: {run.Text}")Képkinyerés
Image a csomópontok nyers bájtokat és metaadatokat tesznek elérhetővé minden beágyazott képhez:
| Tulajdonság | Típus | Leírás |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Nyers képadatok |
Width, Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[NoteTag] | Csatolt OneNote címkék |
from aspose.note import Document, Image
doc = Document("notebook.one")
for i, img in enumerate(doc.GetChildNodes(Image), start=1):
filename = img.FileName or f"image_{i}.bin"
with open(filename, "wb") as f:
f.write(img.Bytes)
print(f"Saved: {filename} ({img.Width} x {img.Height} pts)")Csatolt fájl kinyerése
AttachedFile a csomópontok beágyazott fájlcsatolmányokat tesznek elérhetővé:
| Tulajdonság | Típus | Leírás |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Nyers fájladatok |
Tags | list[NoteTag] | Csatolt OneNote címkék |
from aspose.note import Document, AttachedFile
doc = Document("notebook.one")
for i, af in enumerate(doc.GetChildNodes(AttachedFile), start=1):
filename = af.FileName or f"attachment_{i}.bin"
with open(filename, "wb") as f:
f.write(af.Bytes)Táblázatfeldolgozás
Table, TableRow, és TableCell mutassa a teljes táblázat szerkezetét:
| Osztály | Kulcsfontosságú tulajdonságok |
|---|---|
Table | Columns: list[TableColumn] (mindegyik TableColumn van .Width és .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag] |
TableRow | Iteráljon a cellákon a GetChildNodes(TableCell) |
TableCell | Tartalmaz RichText, Image, és egyéb tartalomcsomópontok |
from aspose.note import Document, Table, TableRow, TableCell, RichText
doc = Document("notebook.one")
for table in doc.GetChildNodes(Table):
print("Column widths:", [col.Width for col in table.Columns])
for r, row in enumerate(table.GetChildNodes(TableRow), start=1):
cells = row.GetChildNodes(TableCell)
values = [
" ".join(rt.Text for rt in cell.GetChildNodes(RichText)).strip()
for cell in cells
]
print(f"Row {r}:", values)OneNote címke vizsgálata
NoteTag megjelenik a RichText, Image, AttachedFile, és Table csomópontok a saját .Tags tulajdonságuk. OutlineElement nem rendelkezik egy .Tags tulajdonsággal. NoteTag tulajdonságok:
| Tulajdonság | Típus | Leírás |
|---|---|---|
Icon | `int | None` |
Label | `str | None` |
FontColor | `int | None` |
Highlight | `int | None` |
CreationTime | `datetime | None` |
CompletedTime | `datetime | None` |
Gyári metódus: NoteTag.CreateYellowStar() létrehoz egy szabványos sárga csillag címke‑csomópontot.
from aspose.note import Document, RichText
doc = Document("notebook.one")
for rt in doc.GetChildNodes(RichText):
for tag in rt.Tags:
print(f"Tag: {tag.Label} (icon={tag.Icon}, completed={tag.CompletedTime})")Számozott lista támogatás
OutlineElement.NumberList kitetti:
| Tulajdonság | Típus | Leírás |
|---|---|---|
Format | `str | None` |
Restart | `int | None` |
from aspose.note import Document, OutlineElement
doc = Document("notebook.one")
for oe in doc.GetChildNodes(OutlineElement):
nl = oe.NumberList
if nl:
print(f"format={nl.Format!r}")DocumentVisitor bejárás
DocumentVisitor biztosít egy látogató mintát a strukturált teljes dokumentum bejárásához. Felülírhatja bármely VisitXxxStart / VisitXxxEnd metódust a specifikus csomóponttípusok elfogásához:
VisitDocumentStart(doc)/VisitDocumentEnd(doc)VisitPageStart(page)/VisitPageEnd(page)VisitTitleStart(title)/VisitTitleEnd(title)VisitOutlineStart(outline)/VisitOutlineEnd(outline)VisitOutlineElementStart(oe)/VisitOutlineElementEnd(oe)VisitRichTextStart(rt)/VisitRichTextEnd(rt)VisitImageStart(img)/VisitImageEnd(img)
from aspose.note import Document, DocumentVisitor, Page, RichText, Image
class MySummaryVisitor(DocumentVisitor):
def __init__(self):
self.pages, self.texts, self.images = 0, 0, 0
def VisitPageStart(self, page: Page) -> None:
self.pages += 1
def VisitRichTextStart(self, rt: RichText) -> None:
self.texts += 1
def VisitImageStart(self, img: Image) -> None:
self.images += 1
doc = Document("notebook.one")
v = MySummaryVisitor()
doc.Accept(v)
print(f"Pages={v.pages} RichText={v.texts} Images={v.images}")PDF export
Mentse el a betöltött dokumentumot PDF-be a Document.Save(). Támogatott az opcionális ReportLab háttérprogramon keresztül.
from aspose.note import Document, SaveFormat
doc = Document("notebook.one")
doc.Save("output.pdf", SaveFormat.Pdf)PdfSaveOptions
| Opció | Típus | Leírás |
|---|---|---|
PageIndex | int | A mező létezik; nem továbbítva a PDF exportálóhoz a v26.3.1 verzióban (nincs hatása) |
PageCount | `int | None` |
ImageCompression | `Any | None` |
JpegQuality | `int | None` |
PageSettings | `Any | None` |
PageSplittingAlgorithm | `Any | None` |
import io
from aspose.note import Document, SaveFormat
from aspose.note.saving import PdfSaveOptions
doc = Document("notebook.one")
##Save to file
doc.Save("output.pdf", SaveFormat.Pdf)
##Save to in-memory stream
buf = io.BytesIO()
doc.Save(buf, PdfSaveOptions())
pdf_bytes = buf.getvalue()Formátum és enum hivatkozás
SaveFormat
| Érték | Állapot |
|---|---|
SaveFormat.Pdf | Megvalósítva (ReportLab szükséges) |
FileFormat
Document.FileFormat legjobb erőfeszítéssel ad tájékoztatást a OneNote fájlformátum verziójáról. Az enum három értéket deklarál:
| Érték | Leírás |
|---|---|
FileFormat.OneNote2010 | OneNote 2010 formátum |
FileFormat.OneNoteOnline | OneNote Online formátum |
FileFormat.OneNote2007 | OneNote 2007 formátum |
NodeType
NodeType.Document, NodeType.Page, NodeType.Outline, NodeType.OutlineElement, NodeType.RichText, NodeType.Image, NodeType.Table, NodeType.AttachedFile
HorizontalAlignment
HorizontalAlignment.Left, HorizontalAlignment.Center, HorizontalAlignment.Right
Jelenlegi korlátozások
| Korlátozás | Részlet |
|---|---|
| Csak olvasható | Visszaírás ide .one formátum nincs megvalósítva |
| Nincs titkosítás | Titkosított dokumentumok hibát okoznak IncorrectPasswordException |
| PDF csak exportáláshoz | Egyéb SaveFormat értékek hibát okoznak UnsupportedSaveFormatException |
| PDF-hez ReportLab szükséges | Telepítés pip install "aspose-note[pdf]" külön |
GetPageHistory egyelemű listát ad vissza | A teljes oldal történet bejárása csak helykitöltő; visszaadja [page] |
DetectLayoutChanges() | Kompatibilitási helykitöltő; nincs művelet |
Tippek és bevált gyakorlatok
- Ellenőrizze, hogy None:
Page.Title,Title.TitleText,OutlineElement.NumberList, és a legtöbb metaadatmező lehetNone. Mindig ellenőrizzeif x is not Nonevagyif xa tulajdonságok elérése előtt. - Használja
GetChildNodes(Type)rekurzív kereséshez ahelyett, hogy manuálisan iterálná a fát. Az egész alfa keresését végzi. - Iterálja a közvetlen gyermekeket val
for child in nodeha csak közvetlen gyermekekre van szükség. - Kezelje a kódolást Windows rendszeren: Windows rendszeren,
sys.stdouthasználhat egy régi kódlapot. Adjon hozzásys.stdout.reconfigure(encoding="utf-8", errors="replace")indításkor Unicode szöveg nyomtatásakor. - Telepítse
[pdf]extra: Ne importáljaSaveFormat.Pdffunkcionalitást anélkül, hogy előbb telepítenépip install "aspose-note[pdf]". A ReportLab nélkül a PDF-be mentés futásidőben importálási hibát fog okozni.