Εργασία με το έγγραφο σημειώσεων
Η 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 Ιδιοκτησία | Τύπος | Υπολογισμοί | Περιγραφή |
|---|---|---|---|
LoadHistory | bool | False | Όταν True, οι αναθεωρήσεις ιστορικού σελίδων περιλαμβάνονται στο DOM και είναι προσβάσιμες μέσω Document.GetPageHistory |
DocumentPassword | `str | None` | 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 | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
IsConflictPage | bool | True Αν η σελίδα είναι αντίγραφο σύγκρουσης συγχρονισμού |
Πέρασε το δέντρο του εγγράφου
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.IsConflictPage | True για συγχρονισμό αντιγράφων σύγκρουσης |
Δείτε επίσης
- Εξαγωγή κειμένου: εξάτμιση του κειμένου και των μορφοποιημένων ρουρών
- PDF Εξαγωγή: επιλογές εξαγωγής, επιλογή σελίδας και ροή παραγωγής
- Φωτογραφίες και προσθήκες: εξάτμιση ενσωματωμένων εικόνων και συνημμένα αρχεία
- ΣΤΑΛΙΔΑ: διαμόρφωση δομής του τραπέζου και περιεχόμενο κυττάρων
- Ετικέτες: API Document