DocumentVisitor

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 nodeDocument
VisitDocumentEnd(document)एक को छोड़ रहे हैं Document nodeDocument
VisitPageStart(page)एक में प्रवेश कर रहे हैं Page nodePage
VisitPageEnd(page)एक को छोड़ रहे हैं Page nodePage
VisitTitleStart(title)एक में प्रवेश कर रहे हैं Title nodeTitle
VisitTitleEnd(title)छोड़ते हुए एक Title nodeTitle
VisitOutlineStart(outline)एक में प्रवेश करना Outline nodeOutline
VisitOutlineEnd(outline)एक छोड़ते हुए Outline nodeOutline
VisitOutlineElementStart(outline_element)एक में प्रवेश कर रहा है OutlineElement nodeOutlineElement
VisitOutlineElementEnd(outline_element)एक को छोड़ रहा है OutlineElement nodeOutlineElement
VisitRichTextStart(rich_text)एक में प्रवेश करना RichText nodeRichText
VisitRichTextEnd(rich_text)एक छोड़ते हुए RichText nodeRichText
VisitImageStart(image)एक में प्रवेश करना Image नोडImage
VisitImageEnd(image)एक को छोड़ते हुए Image नोडImage

सभी मेथड्स की सिग्नेचर इस प्रकार है:

def VisitXxxStart(self, node: NodeType) -> None: ...
def VisitXxxEnd(self, node: NodeType) -> None: ...

ट्रैवर्सल क्रम

Accept गहराई-प्रथम, प्री-ऑर्डर ट्रैवर्सल में डिस्पैच करता है:

  1. VisitDocumentStart दस्तावेज़ में प्रवेश करने पर बुलाया जाता है।.
  2. प्रत्येक बच्चा Page पुनरावर्ती रूप से देखा जाता है (PageStart → children → PageEnd).
  3. के भीतर एक Page: TitleStart/End, फिर प्रत्येक Outline (OutlineStart → OutlineElements → OutlineEnd).
  4. एक के भीतर OutlineElement: OutlineElementStart, फिर बच्चे (RichText, Image, नेस्टेड तत्व), फिर OutlineElementEnd.
  5. 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 ट्रैवर्सल के माध्यम से।.


संबंधित देखें

 हिन्दी