Not belgesiyle çalışmak
Bu kılavuz, Microsoft OneNote’u nasıl yüklediğinizi, geçip ihraç ettiğinuzu açıklıyor. .one Python dosyalarını kullanarak Document Sınıflar tarafından Aspose.Note FOSS. The Document sınıf, belge nesne modelinin (DOM) köküdür ve her okuma, geçiş veya ihracat işlemi bir Document Bir tek bir örnek oluşturan .one Bölüm Dosyası.
Bir belgeyi yüklemek
Dosya yolundan yükle
Yolunu A’ya geçin .one Dosya doğrudan T Document Yapımcı :
from aspose.note import Document
doc = Document("MyNotes.one")İkili akıştan yükle
Bir dosya benzer bir nesneyi kullanın, veri ağ yanıtından, bulut depolama blokundan veya hafıza bufferinden geldiğinde:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Boş bir belge oluşturun
Yapım A Document Yeni bir OneNote belgesini programlı olarak oluşturmak için hiçbir argüman yok:
from aspose.note import Document, Page
doc = Document()
doc.AppendChildLast(Page())Seçeneklerle yükleme
Kullanım LoadOptions Yapı zamanında yükleme geçmişi gibi seçmeli parametreleri ayarlamak için:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True # include page revision history in the DOM
doc = Document("MyNotes.one", opts)LoadOptions Mülkiyet | Type | Default | Description |
|---|---|---|---|
LoadHistory | bool | False | When True, sayfa geçmişi incelemeleri DOM’da yer alır ve erişilebilir Document.GetPageHistory |
DocumentPassword | `str | None` | None |
Dosya Deteksiyon Formatı
O zamanlar FileFormat Özellik, dosyanın hangi OneNote biçiminde kullanıldığına işaret eder:
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 değerleri | Description |
|---|---|
OneNote2010 | Standard .one OneNote 2010 ve sonraki dosyaları |
OneNoteOnline | .one OneNote Online / Microsoft 365 tarafından yazılan dosya |
OneNote2007 | Legacy .one OneNote 2007’den alınan özellikler |
Unknown | Format tanımlanamaz |
Sayfaları Yineleme
Çocuğun sayfasında doğrudan çocuklar vardır. Document.A kullanın for Basit iterasyon için:
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}]")
Kullanım `GetChildNodes(Page)` Tüm sayfaların bir arada yazılı listesini almak için:
doc = Document("MyNotes.one")
pages = doc.GetChildNodes(Page)
print(f"Total pages: {len(pages)}")Metadata sayfası
| Property | Type | Description |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
IsConflictPage | bool | True Eğer sayfa bir senkronizasyon kopyası ise |
Doküman ağacının üzerinden geçmek
Document Mirasçılardan CompositeNode,Tam ağaç geçiş yöntemleri ile yapılır:
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 hierarşisi için:
Document
└── Page (0..n)
├── Title
│ ├── TitleText (RichText)
│ ├── TitleDate (RichText)
│ └── TitleTime (RichText)
└── Outline (0..n)
└── OutlineElement (0..n)
├── RichText
├── Image
├── Table
│ └── TableRow → TableCell → RichText / Image
└── AttachedFileAnahtar yolculuğu yöntemleri, CompositeNode:
| Method | Description |
|---|---|
GetChildNodes(NodeType) | Tüm soyundan gelen bir tip listesi, verilen türü eşleştirecektir. |
AppendChildLast(node) | Çocuk listesinin sonunda bir çocuk düğmesi ekleyin |
AppendChildFirst(node) | Başlangıçta bir çocuk düğmesi ekleyin |
InsertChild(index, node) | Bir çocuğu belirli bir endeksle yerleştirin. |
RemoveChild(node) | Bir çocuk düğmesi kaldırın |
GetEnumerator() | Doğrudan çocuklar için |
Sayfa Tarihi
yüklendiğinde, LoadHistory=True, Document.GetPageHistory Tüm kaydedilen incelemeleri geri getirir En eski sayfadan en son sayfaya kadar sipariş verilmiştir:
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}")Note:
GetPageHistoryBoş bir şey geri getiriyorPageHistorynesne ne zamanLoadHistoryOnuFalse(Devamı için tıklayınız) Her zaman ayarlayınopts.LoadHistory = Trueİhtiyacınız olursa yükleme öncesi Değerlendirme verileri .
Tasarruf ve ihracat
Kullanım Document.Save PDF’ye ihraç etmek için. PDF, tek desteklenen ihracat biçimidir.
Bir dosyaya kaydedin
Call Document.Save() Bir dosya yolu ve SaveFormat.Pdf Disk’e doğrudan ihracat yazmak için:
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)In-memory akışına kaydolun
Yazılı bir geçiş io.BytesIO Buffer yerine hafızada PDF byteyi yakalamak için bir yol:
import io
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
buf = io.BytesIO()
doc.Save(buf, SaveFormat.Pdf)
pdf_bytes = buf.getvalue()Seçeneklerle tasarruf edin
Kullanım PdfSaveOptions -den aspose.note.saving Hangi sayfaların PDF çıkışına dahil edildiğini kontrol etmek için:
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()Important: PDF ihracatı seçmeli ReportLab bağımlılığı gerektirir. yükleme ile birlikte
pip install "aspose-note[pdf]".
Layout Değişiklikleri Keşfedin
Call DetectLayoutChanges • Tasarım metriklerini yeniden hesaplamak için belgeyi değiştirdikten sonra Tasarruf Edilecek:
doc = Document() page = Page() doc.AppendChildLast(page)
… add content to page …
doc.DetectLayoutChanges() doc.Save(“output.pdf”)
---
## İpuçları ve En İyi Uygulamalar
- **Bir kez yükleme, birçok kez soru**: `Document` Tüm yükü yüklüyor `.one` Dosya Memory On Yapım - 1 tutun `Document` İstek ve Çağrı `GetChildNodes` tekrar tekrar yerine Her soru için dosyayı yeniden yükleme.
- **Check `IsConflictPage`**: OneNote senkronizasyonu çatışma sayfaları üretebilir. filtre ile `[p for p in doc if not p.IsConflictPage]` İçeriği işlemeye başlamadan önce.
- **Kullanım `LoadHistory=False` (Düzeltme) Hız için**: Sayfa geçmişi önemli hafıza eklemektedir ve Yüzü yumuşak. sadece ayarlayın `LoadHistory=True` Değiştirme verilerine açıkça ihtiyaç duyduğunuzda.
- **Büyük dosyalar için akış**: Okurken bir yol çubuğu yerine açık dosya nesnesini geçin Büyük `.one` Dosyayı tamamladıktan sonra dosyaya açılmasını önlemek için dosyalar.
- **Call `DetectLayoutChanges` Önceki `Save`**:• Bir belgeyi programlı bir şekilde oluştururken ve düğümleri açmak, çağrı `DetectLayoutChanges()` Bu nedenle, koordinasyonların düzenlenmesi için PDF'ye ihraç etmeden önce tutarlı.
---
## ortak sorunlar
| Issue | Cause | Fix |
| ---------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| `IncorrectPasswordException` yük üzerinde | Dosya şifrelenir; şifrelenen belgeler desteklenmez | Dosyanın şifrelenmemiş bir kopyasını alın |
| `FileCorruptedException` yük üzerinde | Dosya çürümüş veya desteklenmemiş bir iç biçim vardır. | Dosya geçerli olduğundan emin olun. `.one` Bölüm (A değil) `.onetoc2` Tablo içeriği) |
| `UnsupportedSaveFormatException` kurtarma için | PDF'den başka bir biçimde kaydetmeye çalıştık | Sadece PDF formatı ihracat için desteklenir. |
| Empty `GetPageHistory` Sonuçlar | `LoadOptions.LoadHistory` Amacına ayarlanmadı `True` Yükleme Öncesi | Belgeyi yeniden yüklemek için `opts.LoadHistory = True` |
| `ModuleNotFoundError: reportlab` | PDF ekleyince denedim PDF ekspor | koşmak `pip install "aspose-note[pdf]"` |
---
## FAQ
#### Hangi OneNote biçimleri Aspose.Notes okuyabilir?
OneNote bölümünün üç biçimi: `OneNote2007`, `OneNote2010`,ve `OneNoteOnline`. Kullanım `doc.FileFormat` Hangi variantın yüklendiğini belirlemek için.
#### Bir yazıya geri dönebilirim `.one` Okuduktan sonra dosyayı mı?
Aspose.Note for Python is a read-and-export library. Use `Document.Save` OneNote biner biçimi sadece bu FOSS sürümünde okunur.
#### Başlık olarak belirli bir sayfa nasıl okunur?
Bir generatör ifadesi ile sayfaları yatar ve başlık metin özelliklerini hedef çubuğunuzla karşılaştırın:
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,
)Ana Sayfa Sayfalar Nasıl Toplayıcı Sayfalardan Ayrı Sayfa Hesaplanır?
Kullanım page.Level:1. seviye üst düzey, 2. seviyesi alt sayfadır ve böylece.
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 destekleyici `.onetoc2` Tablo içeriği dosyaları?
Hayır sadece `.one` Bölüm dosyaları desteklenmektedir. `.onetoc2` Not defterleri yükselecek `FileCorruptedException`.
---
## API Referans Özetleri
| Sınıf / Yöntem | Description |
| ------------------------------------------ | ------------------------------------------------------------------------ |
| `Document(path_or_stream, options?)` | Yükleme A `.one` Dosya veya boş bir belge oluşturmak |
| `Document.FileFormat` | (Daha fazla format seçeneği)`FileFormat` Enum ) |
| `Document.GetChildNodes(NodeType)` | Tüm bir türün alt düğümlerini geri getirin. |
| `Document.GetPageHistory(page)` | Bir sayfa için revizyon geçmişi alın (gereklilikler) `LoadHistory=True`) |
| `Document.Save(target, format_or_options)` | PDF'ye dosya yolu veya akışı ile ihraç etmek |
| `Document.DetectLayoutChanges()` | Programlama düzenlemelerinden sonra yeniden hesaplayın |
| `Document.Accept(visitor)` | DOM kullanarak yürüyüş yapın a `DocumentVisitor` Sub Sınıfı |
| `LoadOptions.LoadHistory` | ayarlayın `True` DOM'da sayfa incelemeleri içerir |
| `LoadOptions.DocumentPassword` | Kayıtlı; Şifreli dosyaları yükseltmek `IncorrectPasswordException` |
| `FileFormat` | Enum için : `OneNote2010`, `OneNoteOnline`, `OneNote2007`, `Unknown` |
| `SaveFormat.Pdf` | Tek destekli ihracat biçimi; artışlar `ValueError` Diğer formatlar için |
| `PageHistory.Count` | Sayfaların sayısı mevcuttur |
| `Page.Level` | Alt sayfa derinliği (1 = üst düzey) |
| `Page.IsConflictPage` | `True` Sink Konflik Kopyaları için |
---
## See Also
- [Yazı Ekstraksiyonu](text-extraction/): düz metin ve formatlanmış koşu çıkarma
- [PDF İhracat](pdf-export/): ihracat seçenekleri, sayfa seçimi ve akış çıkışı
- [Resimler ve aksesuarlar](images-and-attachments/): içerideki resimleri ve eklenen dosyaları çıkarmak
- [Tables](tables/): parsing tablo yapısı ve hücre içeriği
- [API Referans: Belge](https://reference.aspose.org/note/python/document/)
- [Aspose.Note — Enterprise Documentation](https://docs.aspose.com/note/)