Īpašību pārskats — Aspose.Note FOSS priekš Python
Aspose.Note FOSS for Python (package aspose-note, versija 26.3.1) nodrošina Python API Microsoft OneNote lasīšanai .one sadaļas failus un to eksportēšanu uz PDF. Visas zemāk uzskaitītās funkcijas ir pārbaudītas pret krātuves pirmkodu, README, un piemēru skriptiem.
Instalēšana un iestatīšana
Instalējiet no PyPI:
pip install aspose-notePDF eksportēšanas atbalstam (nepieciešams ReportLab):
pip install "aspose-note[pdf]"Prasības: Python 3.10 vai jaunāks. Nav nepieciešama Microsoft Office instalācija.
Funkcijas un iespējas
.one failu ielāde
Ielādēt Microsoft OneNote sadaļas failus no faila ceļa vai jebkura binārā straumes (faila rokturis, io.BytesIO, HTTP atbildes ķermenis, mākoņa glabāšanas straume).
Document.FileFormatsniedz labāko iespējamā mēģinājuma norādi par OneNote faila formāta versiju (OneNote2010, OneNoteOnline, vai OneNote2007)- Straumes balstīta ielāde likvidē diska I/O atmiņā vai tīkla darba plūsmām
LoadOptions.LoadHistorykarogs kontrolē, vai lapas vēsture ir iekļauta 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)Dokumenta DOM pārlūkošana
Pilns OneNote dokuments tiek atklāts kā tipizētu Python objektu koks. Katrs mezgls manto no Node vai CompositeNode:
Document: sakne; atklājDisplayName,CreationTime,FileFormatPage: tiešs bērns noDocument; atklājTitle,Author,CreationTime,LastModifiedTime,LevelTitle: atklājTitleText,TitleDate,TitleTime(visiRichTextmezgli)Outline: pozicionāls konteiner arHorizontalOffset,VerticalOffset,MaxWidth,MaxHeight,MinWidth,ReservedWidth,IndentPositionOutlineElement: lapas konteineris; atklājNumberList
Navigācijas metodes ieslēgtas CompositeNode:
| Metode / Īpašība | Apraksts |
|---|---|
FirstChild, LastChild | Tiešā bērna piekļuve |
GetChildNodes(Type) | Rekursīva, tipa filtrēta meklēšana |
AppendChildLast(node) | Pievienot bērnu beigās |
AppendChildFirst(node) | Pievienot bērnu sākumā |
InsertChild(index, node) | Ievietot pozīcijā |
RemoveChild(node) | Noņemt bērnu |
for child in node | Iterēt tiešos bērnus |
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}")Bagātināta teksta satura izgūšana
RichText mezgli atklāj:
Text: str: pilna vienkārša teksta virkneTextRuns: list[TextRun]: formatētu segmentu sarakstsTags: list[NoteTag]: OneNote birkas, kas pievienotas šim blokamAppend(text, style=None): pievienot teksta fragmentu atmiņāReplace(old_value, new_value): virknes aizvietošana atmiņā
Katrs TextRun satur:
| Īpašība | Tips | Apraksts |
|---|---|---|
Text | str | Segmenta teksts |
Style | TextStyle | Formatēšanas metadati |
TextStyle īpašības:
| Īpašība | Tips |
|---|---|
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}")Attēlu izguve
Image mezgli atklāj neapstrādātas baitus un metadatus katram iegultajam attēlam:
| Īpašība | Tips | Apraksts |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Neapstrādāti attēla dati |
Width, Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[NoteTag] | Pievienotās OneNote birkas |
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)")Pievienotā faila izgūšana
AttachedFile mezgli atklāj iegultus failu pielikumus:
| Īpašība | Tips | Apraksts |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Neapstrādāti faila dati |
Tags | list[NoteTag] | Pievienotās OneNote birkas |
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)Tabulu parsēšana
Table, TableRow, un TableCell atklāj pilnu tabulas struktūru:
| Klase | Atslēgas īpašības |
|---|---|
Table | Columns: list[TableColumn] (katrs TableColumn ir .Width un .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag] |
TableRow | Iterēt šūnas, izmantojot GetChildNodes(TableCell) |
TableCell | Satur RichText, Image, un citi satura mezgli |
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 birku pārbaude
NoteTag parādās uz RichText, Image, AttachedFile, un Table mezgli caur to .Tags īpašība. OutlineElement nav .Tags īpašība. NoteTag īpašības:
| Īpašība | Tips | Apraksts |
|---|---|---|
Icon | `int | None` |
Label | `str | None` |
FontColor | `int | None` |
Highlight | `int | None` |
CreationTime | `datetime | None` |
CompletedTime | `datetime | None` |
Ražotāja metode: NoteTag.CreateYellowStar() izveido standarta dzeltena-zvaigznes taga mezglu.
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})")Numurēto sarakstu atbalsts
OutlineElement.NumberList atklāj:
| Īpašība | Tips | Apraksts |
|---|---|---|
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 pārlūkošana
DocumentVisitor nodrošina apmeklētāja modeli strukturētai pilna dokumenta pārlūkošanai. Pārrakstiet jebkuru VisitXxxStart / VisitXxxEnd metodi, lai pārtvertu konkrētus mezglu 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 eksportēšana
Saglabāt ielādētu dokumentu PDF formātā, izmantojot Document.Save(). Atbalstīts, izmantojot izvēles ReportLab aizmugursistēmu.
from aspose.note import Document, SaveFormat
doc = Document("notebook.one")
doc.Save("output.pdf", SaveFormat.Pdf)PdfSaveOptions
| Opcija | Tips | Apraksts |
|---|---|---|
PageIndex | int | Lauks pastāv; nav pārsūtīts PDF eksportētājam versijā 26.3.1 (nav ietekmes) |
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āta un uzskaitījuma atsauce
SaveFormat
| Vērtība | Statuss |
|---|---|
SaveFormat.Pdf | Īstenots (nepieciešams ReportLab) |
FileFormat
Document.FileFormat sniedz labāko iespējamā mēģinājuma norādi par OneNote faila formāta versiju. Enums deklarē trīs vērtības:
| Vērtība | Apraksts |
|---|---|
FileFormat.OneNote2010 | OneNote 2010 formāts |
FileFormat.OneNoteOnline | OneNote Online formāts |
FileFormat.OneNote2007 | OneNote 2007 formāts |
NodeType
NodeType.Document, NodeType.Page, NodeType.Outline, NodeType.OutlineElement, NodeType.RichText, NodeType.Image, NodeType.Table, NodeType.AttachedFile
HorizontalAlignment
HorizontalAlignment.Left, HorizontalAlignment.Center, HorizontalAlignment.Right
Pašreizējie ierobežojumi
| Ierobežojums | Detaļa |
|---|---|
| Tikai lasāms | Rakstīšana atpakaļ uz .one formāts nav īstenots |
| Nav šifrēšanas | Šifrēti dokumenti izraisa IncorrectPasswordException |
| PDF tikai eksportam | Citi SaveFormat vērtības izraisa UnsupportedSaveFormatException |
| ReportLab nepieciešams PDF | Instalēt pip install "aspose-note[pdf]" atsevišķi |
GetPageHistory atgriež vienas elementa sarakstu | Pilnas lapas vēstures pārlūkošana ir stub; atgriež [page] |
DetectLayoutChanges() | Saderības stub; nav darbības |
Padomi un labākā prakse
- Pārbaudīt None:
Page.Title,Title.TitleText,OutlineElement.NumberList, un vairums metadatu lauku var būtNone. Vienmēr aizsargājiet arif x is not Nonevaiif xpirms piekļuves īpašībām. - Izmantojiet
GetChildNodes(Type)rekursīvai meklēšanai, nevis manuāli iterējot koku. Tas meklē visu apakškoku. - Iterējiet tiešos bērnus ar
for child in nodekad jums vajag tikai tiešos bērnus. - Apstrādājiet kodējumu Windows vidē: Windows vidē,
sys.stdoutvar izmantot mantoto kodēšanas lapu. Pievienojietsys.stdout.reconfigure(encoding="utf-8", errors="replace")palaišanas laikā, kad drukājat Unicode tekstu. - Instalējiet
[pdf]papildu: NeimportējietSaveFormat.Pdffunkcionalitāti, neinstalējot vispirmspip install "aspose-note[pdf]". Bez ReportLab saglabāšana PDF formātā izraisīs importēšanas kļūdu izpildlaikā.