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ülkiyetTypeDefaultDescription
LoadHistoryboolFalseWhen True, sayfa geçmişi incelemeleri DOM’da yer alır ve erişilebilir Document.GetPageHistory
DocumentPassword`strNone`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ğerleriDescription
OneNote2010Standard .one OneNote 2010 ve sonraki dosyaları
OneNoteOnline.one OneNote Online / Microsoft 365 tarafından yazılan dosya
OneNote2007Legacy .one OneNote 2007’den alınan özellikler
UnknownFormat 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ı

PropertyTypeDescription
Title`TitleNone`
Author`strNone`
CreationTime`datetimeNone`
LastModifiedTime`datetimeNone`
Level`intNone`
IsConflictPageboolTrue 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
                    └── AttachedFile

Anahtar yolculuğu yöntemleri, CompositeNode:

MethodDescription
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: GetPageHistory Boş bir şey geri getiriyor PageHistory nesne ne zaman LoadHistory Onu False (Devamı için tıklayınız) Her zaman ayarlayın opts.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: 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

IssueCauseFix
IncorrectPasswordException yük üzerindeDosya şifrelenir; şifrelenen belgeler desteklenmezDosyanın şifrelenmemiş bir kopyasını alın
FileCorruptedException yük üzerindeDosya çü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çinPDF’den başka bir biçimde kaydetmeye çalıştıkSadece PDF formatı ihracat için desteklenir.
Empty GetPageHistory SonuçlarLoadOptions.LoadHistory Amacına ayarlanmadı True Yükleme ÖncesiBelgeyi yeniden yüklemek için opts.LoadHistory = True
ModuleNotFoundError: reportlabPDF ekleyince denedim PDF eksporkoş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öntemDescription
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.LoadHistoryayarlayın True DOM’da sayfa incelemeleri içerir
LoadOptions.DocumentPasswordKayıtlı; Şifreli dosyaları yükseltmek IncorrectPasswordException
FileFormatEnum için : OneNote2010, OneNoteOnline, OneNote2007, Unknown
SaveFormat.PdfTek destekli ihracat biçimi; artışlar ValueError Diğer formatlar için
PageHistory.CountSayfaların sayısı mevcuttur
Page.LevelAlt sayfa derinliği (1 = üst düzey)
Page.IsConflictPageTrue Sink Konflik Kopyaları için

See Also

 Türkçe