DocumentVisitor — Aspose.Note FOSS for Python API Reference
क्लास: DocumentVisitor
Package: aspose.note Import: from aspose.note import DocumentVisitor
DocumentVisitor OneNote दस्तावेज़ ट्री के विज़िटर‑पैटर्न ट्रैवर्सल के लिए यह एब्स्ट्रैक्ट बेस क्लास है। इसे सबक्लास करें और केवल उन विज़िट मेथड्स को ओवरराइड करें जिनकी आपको आवश्यकता है। कॉल node.Accept(visitor) किसी भी नोड से ट्रैवर्सल शुरू करने के लिए; कॉल doc.Accept(visitor) पूरे दस्तावेज़ को ट्रैवर्स करने के लिए।.
बेस क्लास की सभी मेथड्स नो-ऑप्स हैं (रिटर्न None). केवल उन मेथड्स को ओवरराइड करें जो आपके उपयोग केस के लिए प्रासंगिक हैं।.
विज़िट मेथड्स
| Method | जब कॉल किया जाता है | पैरामीटर प्रकार |
|---|---|---|
VisitDocumentStart(document) | एक में प्रवेश कर रहे हैं Document node | Document |
VisitDocumentEnd(document) | एक को छोड़ रहे हैं Document node | Document |
VisitPageStart(page) | एक में प्रवेश कर रहे हैं Page node | Page |
VisitPageEnd(page) | एक को छोड़ रहे हैं Page node | Page |
VisitTitleStart(title) | एक में प्रवेश कर रहे हैं Title node | Title |
VisitTitleEnd(title) | छोड़ते हुए एक Title node | Title |
VisitOutlineStart(outline) | एक में प्रवेश करना Outline node | Outline |
VisitOutlineEnd(outline) | एक छोड़ते हुए Outline node | Outline |
VisitOutlineElementStart(outline_element) | एक में प्रवेश कर रहा है OutlineElement node | OutlineElement |
VisitOutlineElementEnd(outline_element) | एक को छोड़ रहा है OutlineElement node | OutlineElement |
VisitRichTextStart(rich_text) | एक में प्रवेश करना RichText node | RichText |
VisitRichTextEnd(rich_text) | एक छोड़ते हुए RichText node | RichText |
VisitImageStart(image) | एक में प्रवेश करना Image नोड | Image |
VisitImageEnd(image) | एक को छोड़ते हुए Image नोड | Image |
सभी मेथड्स की सिग्नेचर इस प्रकार है:
def VisitXxxStart(self, node: NodeType) -> None: ...
def VisitXxxEnd(self, node: NodeType) -> None: ...ट्रैवर्सल क्रम
Accept गहराई-प्रथम, प्री-ऑर्डर ट्रैवर्सल में डिस्पैच करता है:
VisitDocumentStartदस्तावेज़ में प्रवेश करने पर बुलाया जाता है।.- प्रत्येक बच्चा
Pageपुनरावर्ती रूप से देखा जाता है (PageStart → children → PageEnd). - के भीतर एक
Page:TitleStart/End, फिर प्रत्येकOutline(OutlineStart → OutlineElements → OutlineEnd). - एक के भीतर
OutlineElement:OutlineElementStart, फिर बच्चे (RichText,Image, नेस्टेड तत्व), फिरOutlineElementEnd. VisitDocumentEndसभी पृष्ठों का दौरा करने के बाद कॉल किया जाता है।.
उपयोग उदाहरण
सभी पेज शीर्षक एकत्र करें
from aspose.note import Document, DocumentVisitor, Page, Title
class TitleCollector(DocumentVisitor):
def __init__(self):
self.titles = []
def VisitTitleStart(self, title: Title) -> None:
if title.TitleText:
self.titles.append(title.TitleText.Text)
doc = Document("MyNotes.one")
visitor = TitleCollector()
doc.Accept(visitor)
print(visitor.titles)प्रकार के अनुसार नोड्स की गिनती करें
from aspose.note import Document, DocumentVisitor, Page, RichText, Image
class NodeCounter(DocumentVisitor):
def __init__(self):
self.pages = 0
self.rich_texts = 0
self.images = 0
def VisitPageStart(self, page: Page) -> None:
self.pages += 1
def VisitRichTextStart(self, rich_text: RichText) -> None:
self.rich_texts += 1
def VisitImageStart(self, image: Image) -> None:
self.images += 1
doc = Document("MyNotes.one")
counter = NodeCounter()
doc.Accept(counter)
print(f"Pages: {counter.pages}, RichText: {counter.rich_texts}, Images: {counter.images}")विज़िटर के माध्यम से सभी छवियों को निकालें
from aspose.note import Document, DocumentVisitor, Image
class ImageExtractor(DocumentVisitor):
def __init__(self):
self.images = []
def VisitImageStart(self, image: Image) -> None:
if image.Bytes:
self.images.append(image)
doc = Document("MyNotes.one")
extractor = ImageExtractor()
doc.Accept(extractor)
for i, img in enumerate(extractor.images):
filename = img.FileName or f"image_{i}.bin"
with open(filename, "wb") as f:
f.write(img.Bytes)
print(f"Saved: {filename} ({len(img.Bytes)} bytes)")एक दस्तावेज़ रूपरेखा रिपोर्ट बनाएं
from aspose.note import (
Document, DocumentVisitor,
Page, Outline, OutlineElement, RichText
)
class OutlineReporter(DocumentVisitor):
def __init__(self):
self._indent = 0
self.lines = []
def VisitPageStart(self, page: Page) -> None:
title = page.Title.TitleText.Text if page.Title and page.Title.TitleText else "(untitled)"
self.lines.append(f"PAGE: {title}")
self._indent = 1
def VisitOutlineElementStart(self, elem: OutlineElement) -> None:
self._indent = 2 + elem.IndentLevel
def VisitRichTextStart(self, rt: RichText) -> None:
if rt.Text.strip():
self.lines.append(" " * self._indent + rt.Text.strip())
doc = Document("MyNotes.one")
reporter = OutlineReporter()
doc.Accept(reporter)
print("\n".join(reporter.lines))एक उप-नोड से विज़िट करें
Accept किसी भी नोड पर कॉल किया जा सकता है, केवल रूट दस्तावेज़ पर नहीं:
from aspose.note import Document, Page, DocumentVisitor, RichText
class TextPrinter(DocumentVisitor):
def VisitRichTextStart(self, rt: RichText) -> None:
print(rt.Text)
doc = Document("MyNotes.one")
pages = doc.GetChildNodes(Page)
if pages:
# Visit only the first page
pages[0].Accept(TextPrinter())समर्थित नोड प्रकार
विज़िटर वर्तमान में इन नोड प्रकारों के लिए डिस्पैच करता है: Document, Page, Title, Outline, OutlineElement, RichText, Image. इनके लिए कोई विज़िट मेथड्स नहीं हैं Table, TableRow, TableCell, AttachedFile, या NumberList — उन नोड्स को द्वारा पहुँचा जाता है GetChildNodes ट्रैवर्सल के माध्यम से।.
संबंधित देखें
- डॉक्यूमेंट: रूट नोड; कॉल करें
doc.Accept(visitor)पूर्ण ट्रैवर्सल शुरू करने के लिए - पेज:
VisitPageStart/VisitPageEnd - आउटलाइन:
VisitOutlineStart/VisitOutlineEnd - RichText:
VisitRichTextStart/VisitRichTextEnd - छवि:
VisitImageStart/VisitImageEnd