Savybių apžvalga — Aspose.Note FOSS for Python
Aspose.Note FOSS for Python (package aspose-note, versija 26.3.1) suteikia Python API, skirtą Microsoft OneNote .one skyriaus failus ir jų eksportavimą į PDF. Visos žemiau išvardintos funkcijos patikrintos pagal saugyklos šaltinio kodą, README ir pavyzdinius scenarijus.
Įdiegimas ir konfigūracija
Įdiekite iš PyPI:
pip install aspose-notePDF eksportui (reikalauja ReportLab):
pip install "aspose-note[pdf]"Reikalavimai: Python 3.10 arba vėlesnė. Microsoft Office įdiegimo nereikia.
Funkcijos ir galimybės
.one failų įkėlimas
Įkelkite Microsoft OneNote skyriaus failus iš failo kelio arba bet kurio dvejetainio srauto (failo rankenėlės, io.BytesIO, HTTP atsakymo kūno, debesų saugyklos srauto).
Document.FileFormatsuteikia geriausią įmanomą OneNote failo formato versijos indikaciją (OneNote2010, OneNoteOnline arba OneNote2007)- Srauto pagrindu vykdomas įkėlimas pašalina disko I/O atminties ar tinklo darbo srautams.
LoadOptions.LoadHistoryžymė valdo, ar puslapio istorija įtraukiama į DOM
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)Dokumento DOM naršymas
Visas OneNote dokumentas pateikiamas kaip tipų Python objektų medis. Kiekvienas mazgas paveldi iš Node arba CompositeNode:
Document: šaknis; atskleidžiaDisplayName,CreationTime,FileFormatPage: tiesioginis vaikas ofDocument; atskleidžiaTitle,Author,CreationTime,LastModifiedTime,LevelTitle: atskleidžiaTitleText,TitleDate,TitleTime(visiRichTextmazgai)Outline: pozicinis konteineris suHorizontalOffset,VerticalOffset,MaxWidth,MaxHeight,MinWidth,ReservedWidth,IndentPositionOutlineElement: lapų konteineris; atskleidžiaNumberList
Naršymo metodai ant CompositeNode:
| Metodas / Savybė | Aprašymas |
|---|---|
FirstChild, LastChild | Tiesioginė vaiko prieiga |
GetChildNodes(Type) | Rekursinė, tipų filtruota paieška |
AppendChildLast(node) | Pridėti vaiką pabaigoje |
AppendChildFirst(node) | Pridėti vaiką pradžioje |
InsertChild(index, node) | Įterpti į poziciją |
RemoveChild(node) | Pašalinti vaiką |
for child in node | Iteruoti tiesioginius vaikus |
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}")Raiškiojo teksto turinio išgavimas
RichText mazgai atskleidžia:
Text: str: pilnas paprasto teksto eilutėTextRuns: list[TextRun]: formatuotų segmentų sąrašasTags: list[NoteTag]: OneNote žymės, prisegtos prie šio blokoAppend(text, style=None): pridėti teksto seką atmintyjeReplace(old_value, new_value): eilutės pakeitimas atmintyje
Kiekvienas TextRun turi:
| Savybė | Tipas | Aprašymas |
|---|---|---|
Text | str | Segmento tekstas |
Style | TextStyle | Formatavimo metaduomenys |
TextStyle savybės:
| Savybė | Tipas |
|---|---|
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}")Vaizdų išgavimas
Image mazgai atskleidžia neapdorotus baitus ir metaduomenis kiekvienam įterptam vaizdui:
| Savybė | Tipas | Aprašymas |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Neapdoroti paveikslėlio duomenys |
Width, Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[NoteTag] | Pridėtos OneNote žymės |
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)")Prisegtų failų išgavimas
AttachedFile mazgai atskleidžia įterptus failų priedus:
| Savybė | Tipas | Aprašymas |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Neapdoroti failo duomenys |
Tags | list[NoteTag] | Prisegtos OneNote žymos |
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)Lentelės analizė
Table, TableRow, ir TableCell atskleisti visą lentelės struktūrą:
| Klasė | Raktinės savybės |
|---|---|
Table | Columns: list[TableColumn] (kiekvienas TableColumn turi .Width ir .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag] |
TableRow | Kartoti ląsteles per GetChildNodes(TableCell) |
TableCell | Turi RichText, Image, ir kiti turinio mazgai |
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 žymių peržiūra
NoteTag atsiranda RichText, Image, AttachedFile, ir Table mazgai per jų .Tags savybę. OutlineElement neturi .Tags savybės. NoteTag savybės:
| Savybė | Tipas | Aprašymas |
|---|---|---|
Icon | `int | None` |
Label | `str | None` |
FontColor | `int | None` |
Highlight | `int | None` |
CreationTime | `datetime | None` |
CompletedTime | `datetime | None` |
Gamintojo metodas: NoteTag.CreateYellowStar() sukuria standartinį geltonos žvaigždės žymės mazgą.
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})")Numeruoto sąrašo palaikymas
OutlineElement.NumberList atskleidžia:
| Savybė | Tipas | Aprašymas |
|---|---|---|
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 perėjimas
DocumentVisitor suteikia lankytojo šabloną struktūruotam viso dokumento perėjimui. Perrašykite bet kurį VisitXxxStart / VisitXxxEnd metodą, kad sugautumėte konkrečius mazgo tipus:
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 eksportas
Išsaugoti įkeltą dokumentą PDF naudojant Document.Save(). Palaikoma per pasirenkamą ReportLab backendą.
from aspose.note import Document, SaveFormat
doc = Document("notebook.one")
doc.Save("output.pdf", SaveFormat.Pdf)PdfSaveOptions
| Parinktis | Tipas | Aprašymas |
|---|---|---|
PageIndex | int | Laukas egzistuoja; neperduodama PDF eksporteriui v26.3.1 (neturi jokios įtakos) |
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()Formato ir enumų nuoroda
SaveFormat
| Reikšmė | Būsena |
|---|---|
SaveFormat.Pdf | Įgyvendinta (reikalauja ReportLab) |
FileFormat
Document.FileFormat pateikia geriausią įmanomą OneNote failo formato versijos indikaciją. Enum deklaruoja tris reikšmes:
| Reikšmė | Aprašymas |
|---|---|
FileFormat.OneNote2010 | OneNote 2010 formatas |
FileFormat.OneNoteOnline | OneNote Online formatas |
FileFormat.OneNote2007 | OneNote 2007 formatas |
NodeType
NodeType.Document, NodeType.Page, NodeType.Outline, NodeType.OutlineElement, NodeType.RichText, NodeType.Image, NodeType.Table, NodeType.AttachedFile
HorizontalAlignment
HorizontalAlignment.Left, HorizontalAlignment.Center, HorizontalAlignment.Right
Dabartiniai apribojimai
| Ribojimas | Detalė |
|---|---|
| Tik skaitymui | Rašymas atgal į .one formatas neįgyvendintas |
| Nėra šifravimo | Užšifruoti dokumentai sukelia IncorrectPasswordException |
| PDF tik eksportui | Kita SaveFormat reikšmės sukelia UnsupportedSaveFormatException |
| ReportLab reikalingas PDF | Įdiegti pip install "aspose-note[pdf]" atskirai |
GetPageHistory grąžina vieno elemento sąrašą | Visos puslapio istorijos perėjimas yra stubas; grąžina [page] |
DetectLayoutChanges() | Suderinamumo stubas; jokios operacijos |
Patarimai ir geriausia praktika
- Patikrinkite, ar yra None:
Page.Title,Title.TitleText,OutlineElement.NumberList, ir dauguma metaduomenų laukų gali būtiNone. Visada apsaugokite suif x is not Nonearbaif xprieš prieinant prie savybių. - Naudokite
GetChildNodes(Type)rekursinei paieškai, o ne rankiniu medžio iteravimu. Ji ieško viso po-medžio. - Iteruokite tiesioginius vaikus su
for child in nodekai jums reikia tik tiesioginių vaikų. - Tvarkykite kodavimą Windows sistemoje: „Windows“ operacinėje sistemoje,
sys.stdoutgali naudoti seną kodų puslapį. Pridėkitesys.stdout.reconfigure(encoding="utf-8", errors="replace")paleidimo metu spausdinant Unicode tekstą. - Įdiegti
[pdf]papildoma: NeimportuokiteSaveFormat.Pdffunkcionalumas be ankstesnio įdiegimopip install "aspose-note[pdf]". Be ReportLab, PDF įrašymas sukels importavimo klaidą vykdymo metu.