Bekerja dengan dokumen catatan
Pengelolaan Document class adalah akar dari Aspose.Catatan untuk model objek dokumen Python (DOM). Setiap membaca, pelacakan atau ekspor operasi dimulai dengan sebuah Document contoh yang mewakili satu kali .one bagian file.
Mengunggah Dokumen
Pemuatan dari jalur file
Pergilah ke jalur. .one langsung ke kantor pusat. Document Konstruksi:
from aspose.note import Document
doc = Document("MyNotes.one")Beban dari aliran biner
Gunakan objek seperti file ketika data berasal dari respon jaringan, blob penyimpanan cloud, atau buffer in-memori:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Buat dokumen kosong
Membangun sebuah Document tanpa argumen untuk membuat dokumen OneNote baru secara program:
from aspose.note import Document, Page
doc = Document()
doc.AppendChildLast(Page())Pengecatan dengan opsi
Penggunaan LoadOptions untuk mengatur parameter opsional pada waktu beban:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True # include page revision history in the DOM
doc = Document("MyNotes.one", opts)LoadOptions properti | Jenis | Default (Pengaturan default) | Deskripsi |
|---|---|---|---|
LoadHistory | bool | False | Kapan? True, revisi riwayat halaman dimasukkan ke dalam DOM dan dapat diakses melalui Document.GetPageHistory |
DocumentPassword | `str | None` | None |
Deteksi Format Dokumen
Pengelolaan FileFormat properti mengidentifikasi varian format OneNote yang digunakan file:
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 nilai | Deskripsi |
|---|---|
OneNote2010 | Standar .one file yang ditulis oleh OneNote 2010 dan versi terbaru |
OneNoteOnline | .one file yang ditulis oleh OneNote Online / Microsoft 365 |
OneNote2007 | Pusaka .one format dari OneNote 2007 |
Unknown | Format tidak dapat diidentifikasi |
Halaman yang Berulang-ulang
Halaman adalah anak langsung dari Document.Gunakan sebuah for loop untuk iterasi sederhana:
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}]")Penggunaan GetChildNodes(Page) untuk mendapatkan daftar semua halaman yang diketik sekaligus:
from aspose.note import Document, Page
doc = Document("MyNotes.one")
pages = doc.GetChildNodes(Page)
print(f"Total pages: {len(pages)}")Metadata halaman
| Perumahan | Jenis | Deskripsi |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
IsConflictPage | bool | True jika halaman adalah salinan konflik sinkronisasi |
Menjelajahi Pohon Dokumen
Document mewarisi dari CompositeNode, memberikan metode penjelajahan pohon penuh:
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))Hierarki 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
└── AttachedFileMetode penjelajahan utama yang diwarisi dari CompositeNode:
| Metode | Deskripsi |
|---|---|
GetChildNodes(NodeType) | Kembalikan daftar yang diketik dari semua keturunan yang cocok dengan tipe yang diberikan |
AppendChildLast(node) | Tambahkan node anak di akhir daftar anak-anak |
AppendChildFirst(node) | Tambahkan node anak di awal |
InsertChild(index, node) | Masukkan anak pada indeks tertentu |
RemoveChild(node) | Hapus node anak |
GetEnumerator() | Anak-anak langsung yang berulang |
Sejarah halaman
Saat dimuat dengan LoadHistory=True, Document.GetPageHistory mengembalikan semua revisi yang disimpan dari satu halaman, diurutkan dari tertua sampai terbaru:
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}")Catatan::
GetPageHistorymengembalikan kosongPageHistoryobjek ketikaLoadHistoryadalah:False(default) Selalu diaturopts.LoadHistory = Truesebelum loading jika Anda perlu data revisi.
Menyimpan dan Mengekspor
Penggunaan Document.Save untuk mengekspor ke PDF. PDF adalah satu-satunya format ekspor yang didukung.
Simpan ke file
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)Simpan ke in-memory stream
import io
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
buf = io.BytesIO()
doc.Save(buf, SaveFormat.Pdf)
pdf_bytes = buf.getvalue()Simpan dengan opsi
Penggunaan PdfSaveOptions (dari aspose.note.saving) untuk mengontrol pemilihan halaman:
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()Penting.: Ekspor PDF membutuhkan ketergantungan ReportLab opsional. Instal dengan:
pip install "aspose-note[pdf]".
Mengidentifikasi Perubahan Tata Letak
Panggil. DetectLayoutChanges Setelah memodifikasi dokumen untuk menghitung kembali metrik tata letak sebelum disimpan:
from aspose.note import Document, Page
doc = Document()
page = Page()
doc.AppendChildLast(page)
# ... add content to page ...
doc.DetectLayoutChanges()
doc.Save("output.pdf")Tips dan Praktik Terbaik
- Load sekali, query berkali-kali:
Documentmemuat seluruh.onefile ke memori pada - Tunggu satu.Documentcontoh dan panggilanGetChildNodesberulang kali daripada Mengisi ulang file untuk setiap permintaan. - Periksa
IsConflictPage: OneNote sync dapat menghasilkan halaman yang berkonflik. Filter dengan[p for p in doc if not p.IsConflictPage]sebelum memproses konten. - Penggunaan
LoadHistory=False(default) untuk kecepatan: Sejarah halaman menambahkan memori yang signifikan dan Parse overhead. hanya setLoadHistory=Trueketika Anda secara eksplisit membutuhkan data revisi. - Streaming untuk file besar: Melewatkan objek file terbuka bukan string path saat membaca besar
.onefile untuk menghindari menjaga file terbuka setelah parse selesai. - Panggil.
DetectLayoutChangessebelumSave: Saat membangun dokumen secara programatis dan node yang melekat, panggilanDetectLayoutChanges()untuk memastikan koordinat tata letak adalah konsisten sebelum diekspor ke PDF.
Masalah Umum
| Isu | Penyebabnya | Perbaiki |
|---|---|---|
IncorrectPasswordException pada beban | File terenkripsi; dokumen yang terencrit tidak didukung | Dapatkan salinan file yang tidak terenkripsi |
FileCorruptedException pada beban | File dipotong atau memiliki format internal yang tidak didukung | Memeriksa file adalah valid .one bagian (bukan sebuah .onetoc2 tabel isi) |
UnsupportedSaveFormatException pada save | Mencoba menyimpan ke format lain selain PDF | Hanya SaveFormat.Pdf didukung untuk ekspor |
kosong GetPageHistory hasil | LoadOptions.LoadHistory tidak diatur untuk True sebelum pengisian | Mengisi ulang dokumen dengan opts.LoadHistory = True |
ModuleNotFoundError: reportlab | Ekspor PDF dicoba tanpa tambahan PDF | Berlarilah ! pip install "aspose-note[pdf]" |
FAQ
Format OneNote apa yang bisa Aspose.Nota dibaca?
Semua tiga format bagian OneNote: OneNote2007, OneNote2010, dan OneNoteOnline. Penggunaan doc.FileFormat untuk mengidentifikasi varian yang dimuat.
Bisakah aku menulis kembali ke … .one file setelah membacanya?
Tidak. aku menulis kembali ke .one tidak diimplementasikan. Ekspor ke PDF dengan Document.Save adalah hanya mendukung operasi output.
Bagaimana saya membaca halaman tertentu dengan judul?
Mengulang halaman dan membandingkan page.Title.TitleText.Text ke string target Anda:
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,
)Bagaimana saya menghitung sub-halaman terpisah dari halaman tingkat atas?
Penggunaan page.Level: level 1 adalah top-level, level 2 adalah subpage, dan seterusnya.
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)}")Apakah Bertujuan.Catatan dukungan .onetoc2 file tabel isi?
Tidak, hanya… .one file bagian didukung. .onetoc2 notebook akan meningkatkan FileCorruptedException.
Ringkasan Referensi API
| Kelas / Metode | Deskripsi |
|---|---|
Document(path_or_stream, options?) | Pemuatan a .one file atau membuat dokumen kosong |
Document.FileFormat | Varian format terdeteksi (FileFormat enum) adalah: |
Document.GetChildNodes(NodeType) | Dapatkan semua node keturunan dari tipe tertentu |
Document.GetPageHistory(page) | Dapatkan riwayat revisi untuk halaman (perlu) LoadHistory=True) |
Document.Save(target, format_or_options) | Ekspor ke PDF dengan jalur file atau aliran |
Document.DetectLayoutChanges() | Menghitung kembali metrik tata letak setelah pengeditan programatis |
Document.Accept(visitor) | Pergi DOM menggunakan a DocumentVisitor subkelas |
LoadOptions.LoadHistory | Diset ke True untuk memasukkan revisi halaman ke dalam DOM |
LoadOptions.DocumentPassword | Reserved; file terenkripsi mengangkat IncorrectPasswordException |
FileFormat | Enum: OneNote2010, OneNoteOnline, OneNote2007, Unknown |
SaveFormat.Pdf | Format ekspor yang hanya didukung |
PageHistory.Count | Jumlah revisi halaman yang tersedia |
Page.Level | Kecepatan pengisian data (Kode: C) |
Page.IsConflictPage | True untuk salinan konflik sinkronisasi |
Lihat Juga
- Ekstraksi teks: mengekstrak teks kosong dan format run
- Ekspor PDF: opsi ekspor, pemilihan halaman, dan output stream
- Gambar dan Lampiran: ekstraksi gambar tertanam dan file lampiran
- Tabel-tabel: struktur tabel dan isi sel yang di-parsing
- Referensi API: Dokumen