Εργασία με το έγγραφο σημειώσεων

Η Document Η κατηγορία είναι η ρίζα του Aspose.Note για το μοντέλο αντικειμένου εγγράφου Python (DOM). Κάθε ανάγνωση, διαδρομή ή εξαγωγή ξεκινά με ένα Document Η περίπτωση που αντιπροσωπεύει Μία μοναχική .one Ετικέτες αρχείο.


Κατεβάστε ένα έγγραφο

Κατεβάστε από ένα αρχείο δρόμο

Πηγαίνετε το δρόμο προς την .one Εισάγετε απευθείας στο Document Ο κατασκευαστής :

from aspose.note import Document

doc = Document("MyNotes.one")

Κατεβάστε από ένα δυαδικό ρεύμα

Χρησιμοποιήστε ένα αντικείμενο όπως το αρχείο όταν τα δεδομένα προέρχονται από μια απάντηση δικτύου, μπλοκ αποθήκευσης cloud ή σε μνήμη:

from pathlib import Path
from aspose.note import Document

with Path("MyNotes.one").open("rb") as f:
    doc = Document(f)

Δημιουργία κενής εγγράφου

Κατασκευάζει A Document χωρίς κανένα επιχειρηματικό στοιχείο για την κατασκευή ενός νέου εγγράφου του OneNote με προγραμματισμό:

from aspose.note import Document, Page

doc = Document()
doc.AppendChildLast(Page())

Κατεβάστε με επιλογές

Χρησιμοποιήστε LoadOptions Για να ρυθμίσετε τις προαιρετικές παραμέτρους κατά τη διάρκεια του χρόνου φόρτωσης:

from aspose.note import Document, LoadOptions

opts = LoadOptions()
opts.LoadHistory = True   # include page revision history in the DOM
doc = Document("MyNotes.one", opts)
LoadOptions ΙδιοκτησίαΤύποςΥπολογισμοίΠεριγραφή
LoadHistoryboolFalseΌταν True, οι αναθεωρήσεις ιστορικού σελίδων περιλαμβάνονται στο DOM και είναι προσβάσιμες μέσω Document.GetPageHistory
DocumentPassword`strNone`None

Ετικέτες Αποκάλυψη

Η FileFormat Το αρχείο αναγνωρίζει ποια μορφή του OneNote χρησιμοποιεί:

from aspose.note import Document, FileFormat

doc = Document("MyNotes.one")

if doc.FileFormat == FileFormat.OneNote2010:
    print("OneNote 2010 format")
elif doc.FileFormat == FileFormat.OneNoteOnline:
    print("OneNote Online format")
elif doc.FileFormat == FileFormat.OneNote2007:
    print("OneNote 2007 format")
else:
    print("Format:", doc.FileFormat)
FileFormat ΑξίαΠεριγραφή
OneNote2010Κανόνες .one αρχείο που γράφτηκε από το OneNote 2010 και μετά
OneNoteOnline.one Εισαγωγή στο αρχείο του OneNote Online / Microsoft 365
OneNote2007κληρονομιά .one Ετικέτες OneNote 2007
UnknownΗ μορφή δεν μπορεί να εντοπιστεί

Ιταλικές σελίδες

Οι σελίδες είναι τα άμεσα παιδιά των Document.Χρησιμοποιήστε το A for Σύνδεση για απλή ιθερά:

from aspose.note import Document

doc = Document("MyNotes.one")

for page in doc:
    title_text = (
        page.Title.TitleText.Text
        if page.Title and page.Title.TitleText
        else "(untitled)"
    )
    author = page.Author or "(unknown)"
    level = page.Level or 1
    indent = "  " * (level - 1)
    print(f"{indent}{title_text}  [by {author}]")

Χρησιμοποιήστε GetChildNodes(Page) Για να πάρετε μια τυποποιημένη λίστα όλων των σελίδων ταυτόχρονα:

from aspose.note import Document, Page

doc = Document("MyNotes.one")
pages = doc.GetChildNodes(Page)
print(f"Total pages: {len(pages)}")

Μέταδο της σελίδας

ΙδιοκτησίαΤύποςΠεριγραφή
Title`TitleNone`
Author`strNone`
CreationTime`datetimeNone`
LastModifiedTime`datetimeNone`
Level`intNone`
IsConflictPageboolTrue Αν η σελίδα είναι αντίγραφο σύγκρουσης συγχρονισμού

Πέρασε το δέντρο του εγγράφου

Document κληρονόμος από CompositeNode, δίνοντάς του πλήρη δέντρο διαδρομικές μεθόδους:

from aspose.note import Document, RichText

doc = Document("MyNotes.one")

# Extract all plain text from the entire document
all_text = [rt.Text for rt in doc.GetChildNodes(RichText) if rt.Text]
print("\n".join(all_text))

Η ιεραρχία του DOM:

Document
  └── Page (0..n)
        ├── Title
        │     ├── TitleText (RichText)
        │     ├── TitleDate (RichText)
        │     └── TitleTime (RichText)
        └── Outline (0..n)
              └── OutlineElement (0..n)
                    ├── RichText
                    ├── Image
                    ├── Table
                    │     └── TableRow → TableCell → RichText / Image
                    └── AttachedFile

Κλειδιά διαδρομικών μεθόδων που κληρονομήθηκαν από CompositeNode:

ΜέθοδοςΠεριγραφή
GetChildNodes(NodeType)Επιστρέψτε μια τυποποιημένη λίστα όλων των απογόνων που ταιριάζουν με τον συγκεκριμένο τύπο
AppendChildLast(node)Προσθήκη παιδικού κόμβου στο τέλος του λίστας των παιδιών
AppendChildFirst(node)Προσθέστε ένα παιδικό νύχτα στην αρχή
InsertChild(index, node)Εισάγετε ένα παιδί σε έναν συγκεκριμένο δείκτη
RemoveChild(node)Αφαιρέστε ένα παιδικό νύχι
GetEnumerator()Επαναφορά απευθείας παιδιών

Ιστορία σελίδας

Όταν φορτίζεται με LoadHistory=True, Document.GetPageHistory Επιστρέφει όλες τις αποθηκευμένες αναθεωρήσεις Από την παλαιότερη μέχρι την πιο πρόσφατη:

from aspose.note import Document, LoadOptions

opts = LoadOptions()
opts.LoadHistory = True
doc = Document("MyNotes.one")

for page in doc.GetChildNodes(None.__class__.__mro__[0]):  # iterate pages
    pass

# Get revisions for a specific page
import aspose.note as an

doc2 = Document("MyNotes.one", opts)
pages = doc2.GetChildNodes(an.Page)
if pages:
    history = doc2.GetPageHistory(pages[0])
    print(f"Revision count: {history.Count}")
    for rev in history:
        print(f"  Modified: {rev.LastModifiedTime}")

Σημείωση: GetPageHistory Επιστρέφει ένα κενό PageHistory Το αντικείμενο όταν LoadHistory Είναι False (από την προετοιμασία) Πάντα να opts.LoadHistory = True Πριν από την φόρτιση, αν χρειαστείτε ΕΠΙΤΡΟΦΗ ΠΛΗΡΟΤΗΤΑ.


Αποταμίευση και εξαγωγή

Χρησιμοποιήστε Document.Save Το PDF είναι το μόνο μορφότυπο εξαγωγής που υποστηρίζεται.

Αποθηκεύστε σε ένα αρχείο

from aspose.note import Document, SaveFormat

doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)

Αποθηκεύστε σε ένα stream in-memory

import io
from aspose.note import Document, SaveFormat

doc = Document("MyNotes.one")
buf = io.BytesIO()
doc.Save(buf, SaveFormat.Pdf)
pdf_bytes = buf.getvalue()

Αποθηκεύστε με επιλογές

Χρησιμοποιήστε PdfSaveOptions (από την aspose.note.savingΓια να ελέγξετε την επιλογή σελίδας:

import io
from aspose.note import Document
from aspose.note.saving import PdfSaveOptions

doc = Document("MyNotes.one")

# Export pages 2 and 3 only (zero-based index)
opts = PdfSaveOptions(PageIndex=1, PageCount=2)
buf = io.BytesIO()
doc.Save(buf, opts)
pdf_bytes = buf.getvalue()

Σημαντικό: Η εξαγωγή PDF απαιτεί την ελεγχόμενη εξάρτηση ReportLab. Εγκαταστήστε το με pip install "aspose-note[pdf]".


Ανακαλύψτε τις αλλαγές στο διάγραμμα

Κλήση DetectLayoutChanges Μετά την τροποποίηση του εγγράφου για να επαναληφθούν οι μετρήσεις διάταξης Πριν από την εξοικονόμηση:

from aspose.note import Document, Page

doc = Document()
page = Page()
doc.AppendChildLast(page)

# ... add content to page ...

doc.DetectLayoutChanges()
doc.Save("output.pdf")

Συμβουλές και βέλτιστες πρακτικές

  • Επαναλάβετε μία φορά, ρωτήστε πολλές φορές: Document Κατεβάζει ολόκληρο το .one Εισαγωγή σε μνήμη στο Κρατήστε ένα. Document ΕΡΓΑΣΙΑ ΚΑΙ ΚΛΗΜΟΣ GetChildNodes Πάντα και πάλι, αντί να Επαναφορτώστε το αρχείο για κάθε ερώτηση.
  • Ελέγξτε IsConflictPage: Το OneNote sync μπορεί να παράγει σελίδες σύγκρουσης. [p for p in doc if not p.IsConflictPage] Πριν από την επεξεργασία περιεχομένου.
  • Χρησιμοποιήστε LoadHistory=False (αποκατεύθυνση) για ταχύτητα:Η ιστορία της σελίδας προσθέτει σημαντική μνήμη και Σημειώνεται ότι μόνο το LoadHistory=True όταν χρειάζεστε ρητά αναθεωρήσεις δεδομένων.
  • Σύνδεση για μεγάλα αρχεία: Μεταβείτε ένα ανοιχτό αντικείμενο αρχείου αντί για μια γραμμή διαδρομής κατά την ανάγνωση Μεγάλη .one αρχεία για να αποφύγετε την ανοικτή κράτηση του αρχείου μετά το συμπλήρωμα της παρτίδας.
  • Κλήση DetectLayoutChanges Πρώτα Save:• Όταν δημιουργείτε ένα έγγραφο με προγραμματισμό και να ανοίξει τα κόμβα, καλέστε DetectLayoutChanges() Για να διασφαλιστεί ότι οι συντονισμοί του σχεδίου είναι Συντονισμένο πριν από την εξαγωγή στο PDF.

κοινά ζητήματα

ΘέμαΑιτίαΦΙΛΕΞΗ
IncorrectPasswordException ΣΤΟ ΛΟΙΓΤα αρχεία κρυπτογραφούνται, τα κρύα έγγραφα δεν υποστηρίζονται.Αποκτήστε ένα μη κρυπτογραφημένο αντίγραφο του αρχείου
FileCorruptedException ΣΤΟ ΛΟΙΓΤο αρχείο είναι κρυμμένο ή έχει μια μη υποστηριζόμενη εσωτερική μορφή.Ελέγξτε το αρχείο είναι έγκυρο .one Το τμήμα (όχι το .onetoc2 Πίνακας περιεχομένου)
UnsupportedSaveFormatException ΣωστάειΠροσπαθήστε να αποθηκεύσετε σε μορφή διαφορετική από το PDFΜόνο SaveFormat.Pdf Υποστηρίζεται για εξαγωγές
Αδειά GetPageHistory ΑποτέλεσμαLoadOptions.LoadHistory Δεν έχει οριστεί για True Πριν φορτίσειΕπαναφορτώστε το έγγραφο με opts.LoadHistory = True
ModuleNotFoundError: reportlabΕξαγωγή PDF δοκιμάστηκε χωρίς το επιπλέον PDFΔρομολόγηση pip install "aspose-note[pdf]"

FAQ

Τι μορφές του OneNote μπορεί να διαβάσει το Aspose.Nota;?

Όλα τα τρία μορφή του τμήματος OneNote: OneNote2007, OneNote2010,και OneNoteOnline. Χρησιμοποιήστε doc.FileFormat Να αναγνωρίσουμε ποια παραλλαγή έχει φορτωθεί.

Μπορώ να γράψω πίσω σε ένα .one Πληροφορίες μετά το διάβασμα;?

Γράφει πίσω στο .one Δεν είναι διαθέσιμο. εξαγωγή σε PDF με Document.Save Είναι η Μόνο η παραγωγή υποστηρίζεται.

Πώς μπορώ να διαβάσω μια συγκεκριμένη σελίδα ανά τίτλο;?

Εισάγετε σελίδες και συγκρίνετε page.Title.TitleText.Text Για το στόχο σας:

from aspose.note import Document

doc = Document("MyNotes.one")
target = next(
    (p for p in doc
     if p.Title and p.Title.TitleText and p.Title.TitleText.Text == "My Page"),
    None,
)

Πώς μπορώ να μετρήσω υποσελίδες ξεχωριστά από τις σελίδες κορυφής επιπέδου;?

Χρησιμοποιήστε page.Level:Το επίπεδο 1 είναι το ανώτερο, το επίπεδο 2 είναι μια υποσελίδα και ούτω καθεξής.

from aspose.note import Document

doc = Document("MyNotes.one")
top_level = [p for p in doc if (p.Level or 1) == 1]
sub_pages  = [p for p in doc if (p.Level or 1) > 1]
print(f"Top-level: {len(top_level)}, Sub-pages: {len(sub_pages)}")

Υποστήριξη του Aspose.Note .onetoc2 Πίνακας περιεχομένου αρχεία;?

Όχι μόνο .one Τα αρχεία τμήματος υποστηρίζονται. .onetoc2 Τα σημειωματάρια θα αυξηθούν FileCorruptedException.


Συνοπτική αναφορά API

Κλάση / ΜέθοδοςΠεριγραφή
Document(path_or_stream, options?)Κατεβάστε A .one Εισαγωγή ή δημιουργία κενής αρχείου
Document.FileFormatΗ διατύπωση του τύπου (FileFormat ΟΜΗ)
Document.GetChildNodes(NodeType)Αποκαταστήστε όλα τα υποδοχικά κόμβα ενός συγκεκριμένου τύπου
Document.GetPageHistory(page)Κάντε ιστορικό αναθεώρησης για μια σελίδα (απαραίτητες) LoadHistory=True)
Document.Save(target, format_or_options)Εξαγωγή σε PDF με το δίκτυο αρχείων ή τη ροή
Document.DetectLayoutChanges()Ανακαλύψτε τις μετρήσεις διάταξης μετά από προγραμματικές επεξεργασίες
Document.Accept(visitor)Περπατήστε το DOM χρησιμοποιώντας ένα DocumentVisitor Υποκλάσεις
LoadOptions.LoadHistoryΣΕΤΙΔΑ ΓΙΑ True Να συμπεριλάβετε αναθεωρήσεις σελίδων στο DOM
LoadOptions.DocumentPasswordΠροστατευμένο: κρυπτογραφημένα αρχεία αναρτώνται IncorrectPasswordException
FileFormatΕΝΟΜ : OneNote2010, OneNoteOnline, OneNote2007, Unknown
SaveFormat.PdfΗ μόνη μορφή εξαγωγής που υποστηρίζεται
PageHistory.CountΑριθμός σελίδων που είναι διαθέσιμες
Page.LevelΣύνδεση με το επίπεδο (1 = ανώτατο)
Page.IsConflictPageTrue για συγχρονισμό αντιγράφων σύγκρουσης

Δείτε επίσης

 Ελληνικά