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)}")

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”)


---

## İ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/)
 Türkçe