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)}")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}]")from aspose.note import Document, Page
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”)
---
```python
from aspose.note import Document, Page
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:
DocumentTüm yükü yüklüyor.oneDosya Memory On Yapım - 1 tutunDocumentİstek ve ÇağrıGetChildNodestekrar 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ınLoadHistory=TrueDeğ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
.oneDosyayı tamamladıktan sonra dosyaya açılmasını önlemek için dosyalar. - Call
DetectLayoutChangesÖncekiSave:• 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.
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,
)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)}")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: düz metin ve formatlanmış koşu çıkarma
- PDF İhracat: ihracat seçenekleri, sayfa seçimi ve akış çıkışı
- Resimler ve aksesuarlar: içerideki resimleri ve eklenen dosyaları çıkarmak
- Tables: parsing tablo yapısı ve hücre içeriği
- API Referans: Belge
- Aspose.Note — Enterprise Documentation