Ominaisuuksien yleiskatsaus — Aspose.Note FOSS for Python
Aspose.Note FOSS for Python (package aspose-note, version 26.3.1) tarjoaa Python API:n Microsoft OneNote -osatiedostojen lukemiseen .one osatiedostot ja niiden vieminen PDF-muotoon. Kaikki alla luetellut ominaisuudet on tarkistettu versionhallinnan lähdekoodin, README:n ja esimerkkiskriptien perusteella.
Asennus ja käyttöönotto
Asenna PyPI:stä:
pip install aspose-notePDF-viennin tukea varten (vaatii ReportLabin):
pip install "aspose-note[pdf]"Vaatimukset: Python 3.10 tai uudempi. Microsoft Office -asennusta ei tarvita.
Ominaisuudet ja kyvyt
.one-tiedoston lataus
Lataa Microsoft OneNote -osatiedostot tiedostopolusta tai mistä tahansa binäärivirrosta (tiedostokahva, io.BytesIO, HTTP-vastausrunko, pilvitallennusvirta).
Document.FileFormatantaa parhaan mahdollisen arvion OneNote-tiedostomuodon versiosta (OneNote2010, OneNoteOnline tai OneNote2007)- Virta-pohjainen lataus poistaa levy‑I/O:n muistissa tai verkossa tapahtuvissa työnkuluissa.
LoadOptions.LoadHistorylippu määrittää, sisällytetäänkö sivuhistoria DOM:iin
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)Dokumentin DOM‑kierros
Koko OneNote-dokumentti esitetään puuna tyypitetyistä Python-objekteista. Jokainen solmu perii Node tai CompositeNode:
Document: juuri; paljastaaDisplayName,CreationTime,FileFormatPage: suora lapsiDocument; paljastaaTitle,Author,CreationTime,LastModifiedTime,LevelTitle: paljastaaTitleText,TitleDate,TitleTime(kaikkiRichTextsolmut)Outline: paikallinen säiliö, jossa onHorizontalOffset,VerticalOffset,MaxWidth,MaxHeight,MinWidth,ReservedWidth,IndentPositionOutlineElement: lehtisäiliö; paljastaaNumberList
Navigointimenetelmät päällä CompositeNode:
| Metodi / Ominaisuus | Kuvaus |
|---|---|
FirstChild, LastChild | Suora lapsisolmun käyttö |
GetChildNodes(Type) | Rekursiivinen, tyyppisuodattu haku |
AppendChildLast(node) | Lisää lapsi loppuun |
AppendChildFirst(node) | Lisää lapsi alkuun |
InsertChild(index, node) | Lisää kohtaan |
RemoveChild(node) | Poista lapsi |
for child in node | Iteroi suorat lapset |
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}")Rikastekstisisällön poiminta
RichText solmut paljastavat:
Text: str: täysi tavallinen tekstimerkkijonoTextRuns: list[TextRun]: luettelo muotoilluista segmenteistäTags: list[NoteTag]: OneNote-tunnisteet liitettynä tähän lohkoonAppend(text, style=None): lisää tekstirunko muistiinReplace(old_value, new_value): muistissa tapahtuva merkkijonojen korvaus
Jokainen TextRun sisältää:
| Ominaisuus | Tyyppi | Kuvaus |
|---|---|---|
Text | str | Segmentin teksti |
Style | TextStyle | Muotoilun metadata |
TextStyle ominaisuudet:
| Ominaisuus | Tyyppi |
|---|---|
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}")Kuvien poiminta
Image solmut paljastavat raakabittejä ja metatietoja jokaiselle upotetulle kuvalle:
| Ominaisuus | Tyyppi | Kuvaus |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Raakakuva-aineisto |
Width, Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[NoteTag] | Liitetyt OneNote-tunnisteet |
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)")Liitetiedostojen poiminta
AttachedFile solmut paljastavat upotetut tiedostoliitteet:
| Ominaisuus | Tyyppi | Kuvaus |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Raakadatan tiedot |
Tags | list[NoteTag] | Liitetyt OneNote-tunnisteet |
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)Taulukon jäsentäminen
Table, TableRow, ja TableCell näytä koko taulun rakenne:
| Luokka | Avainominaisuudet |
|---|---|
Table | Columns: list[TableColumn] (jokainen TableColumn on .Width ja .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag] |
TableRow | Käy solut läpi käyttäen GetChildNodes(TableCell) |
TableCell | Sisältää RichText, Image, ja muita sisältösolmuja |
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-tunnisteiden tarkastelu
NoteTag ilmestyy RichText, Image, AttachedFile, ja Table solmut niiden .Tags ominaisuuden. OutlineElement ei sisällä .Tags ominaisuutta. NoteTag ominaisuudet:
| Ominaisuus | Tyyppi | Kuvaus |
|---|---|---|
Icon | `int | None` |
Label | `str | None` |
FontColor | `int | None` |
Highlight | `int | None` |
CreationTime | `datetime | None` |
CompletedTime | `datetime | None` |
Tehdasmetodi: NoteTag.CreateYellowStar() luo vakioisen keltaisen tähden tunnistesolmun.
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})")Numeroidun listan tuki
OutlineElement.NumberList paljastaa:
| Ominaisuus | Tyyppi | Kuvaus |
|---|---|---|
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 -kulku
DocumentVisitor tarjoaa vierailijamallin rakenteelliseen koko-dokumentin läpikäyntiin. Ylikirjoita mikä tahansa VisitXxxStart / VisitXxxEnd metodi sieppaamaan tietyt solmutyypit:
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‑vienti
Tallenna ladattu asiakirja PDF-muotoon käyttäen Document.Save(). Tuettu valinnaisen ReportLab-taustajärjestelmän kautta.
from aspose.note import Document, SaveFormat
doc = Document("notebook.one")
doc.Save("output.pdf", SaveFormat.Pdf)PdfSaveOptions
| Vaihtoehto | Tyyppi | Kuvaus |
|---|---|---|
PageIndex | int | Kenttä on olemassa; ei välitetä PDF-vientiin versiossa v26.3.1 (ei vaikuta) |
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()Muoto- ja enum-viite
SaveFormat
| Arvo | Tila |
|---|---|
SaveFormat.Pdf | Toteutettu (vaatii ReportLabin) |
FileFormat
Document.FileFormat antaa parhaan mahdollisen arvion OneNote-tiedostomuodon versiosta. Enum määrittelee kolme arvoa:
| Arvo | Kuvaus |
|---|---|
FileFormat.OneNote2010 | OneNote 2010 -formaatti |
FileFormat.OneNoteOnline | OneNote Online -formaatti |
FileFormat.OneNote2007 | OneNote 2007 -formaatti |
NodeType
NodeType.Document, NodeType.Page, NodeType.Outline, NodeType.OutlineElement, NodeType.RichText, NodeType.Image, NodeType.Table, NodeType.AttachedFile
HorizontalAlignment
HorizontalAlignment.Left, HorizontalAlignment.Center, HorizontalAlignment.Right
Nykyiset rajoitukset
| Rajoitus | Yksityiskohta |
|---|---|
| Vain luku | Kirjoitetaan takaisin kohteeseen .one formaattia ei ole toteutettu |
| Ei salausta | Salatut asiakirjat aiheuttavat IncorrectPasswordException |
| PDF vain vientiin | Muu SaveFormat arvot aiheuttavat UnsupportedSaveFormatException |
| ReportLab vaaditaan PDF:lle | Asenna pip install "aspose-note[pdf]" erikseen |
GetPageHistory palauttaa yhden alkion listan | Koko sivun historian läpikäynti on testirutiini; palauttaa [page] |
DetectLayoutChanges() | Yhteensopivuustesti; ei toimintaa |
Vinkkejä ja parhaita käytäntöjä
- Tarkista, onko None:
Page.Title,Title.TitleText,OutlineElement.NumberList, ja useimmat metatietokentät voivat ollaNone. Suojaa ainaif x is not Nonetaiif xennen ominaisuuksien käyttöä. - Käytä
GetChildNodes(Type)rekursiiviseen hakuun sen sijaan, että iteroitaisiin puuta manuaalisesti. Se hakee koko alipuusta. - Iteroi suorat alisolmut kanssa
for child in nodekun tarvitset vain välittömät alisolmut. - Käsittele merkistökoodausta Windowsissa: Windowsissa,
sys.stdoutvoi käyttää vanhaa koodisivua. Lisääsys.stdout.reconfigure(encoding="utf-8", errors="replace")käynnistyksen yhteydessä, kun tulostetaan Unicode-tekstiä. - Asenna
[pdf]lisä: Älä tuoSaveFormat.Pdftoiminnallisuutta ilman, että ensin asennatpip install "aspose-note[pdf]". Ilman ReportLabia PDF-tiedostoon tallentaminen aiheuttaa import-virheen suoritusaikana.