Arbeiten mit OneNote -Dokument

OneNote -Inhalt mit Dokumentvisor extrahieren

Aspose.Note kann verwendet werden, um Microsoft Office OneNote -Dokumente zu analysieren, um separate Dokumentelemente wie Seiten, Bilder, reichhaltige Text, Umriss, Titel, Tabelle, angehängte Dateien und andere zu extrahieren. Eine andere mögliche Aufgabe ist es, den gesamten Text zu finden und eine Gesamtzahl von Knoten usw. zu erhalten.

Verwenden Sie die Klasse documentvisitor, um dieses Nutzungsszenario zu implementieren. Diese Klasse entspricht dem bekannten Besucherdesignmuster. Mit Dokumentvisor können Sie benutzerdefinierte Vorgänge definieren und ausführen, die eine Aufzählung über den Dokumentbaum erfordern.

DocumentVisitor bietet eine Reihe von Visitxxx -Methoden, die aufgerufen werden, wenn ein bestimmtes Dokumentelement (Knoten) auftritt. Beispielsweise wird documentvisitor.visitrichtextStart aufgerufen, wenn der Textelement startet und Dokumentvisor.visItimageend aufgerufen wird, wenn der Besucher alle Kinderknoten besucht hat. Jede Dokumentvisor.VISITXXX -Methode akzeptiert das entsprechende Objekt, auf das er begegnet ist, damit Sie es bei Bedarf verwenden können.

Dies sind die Schritte, die Sie ausführen sollten, um verschiedene Teile eines Dokuments programmgesteuert zu bestimmen und zu extrahieren:

  1. Erstellen Sie eine von Dokumentvisor abgeleitete Klasse.
  2. Überschreiben und Bereitstellung von Implementierungen für einige oder alle der Dokumentvisor.vissitxxx -Methoden zur Durchführung kundenspezifischer Vorgänge.
  3. Rufen Sie Knoten.Accept auf dem Knoten, von dem Sie die Aufzählung beginnen möchten. Wenn Sie beispielsweise das gesamte Dokument aufzählen möchten, verwenden Sie document.accept.

DocumentVisitor stellt Standardimplementierungen für alle Dokumentvisor.vissitxxx -Methoden bereit. Dies erleichtert das Erstellen neuer Dokumentbesucher, da nur die für den jeweiligen Besucher erforderlichen Methoden überschrieben werden müssen. Es ist nicht erforderlich, alle Besuchermethoden zu überschreiben.

Das folgende Codebeispiel zeigt, wie das Besuchermuster zum Hinzufügen neuer Operationen zum Aspose. ANTE -Objektmodell hinzugefügt wird. In diesem Fall erstellen wir einen einfachen Dokumentkonverter in ein Textformat.

  1public static void Run()
  2{            
  3    // The path to the documents directory.
  4    string dataDir = RunExamples.GetDataDir_LoadingAndSaving();
  5
  6    // Open the document we want to convert.
  7    Document doc = new Document(dataDir + "Aspose.one");
  8
  9    // Create an object that inherits from the DocumentVisitor class.
 10    MyOneNoteToTxtWriter myConverter = new MyOneNoteToTxtWriter();
 11
 12    // This is the well known Visitor pattern. Get the model to accept a visitor.
 13    // The model will iterate through itself by calling the corresponding methods
 14    // on the visitor object (this is called visiting).
 15    //
 16    // Note that every node in the object model has the Accept method so the visiting
 17    // can be executed not only for the whole document, but for any node in the document.
 18    doc.Accept(myConverter);
 19
 20    // Once the visiting is complete, we can retrieve the result of the operation,
 21    // that in this example, has accumulated in the visitor.
 22    Console.WriteLine(myConverter.GetText());
 23    Console.WriteLine(myConverter.NodeCount);            
 24}
 25
 26/// <summary>
 27/// Simple implementation of saving a document in the plain text format. Implemented as a Visitor.
 28/// </summary>
 29public class MyOneNoteToTxtWriter : DocumentVisitor
 30{
 31    public MyOneNoteToTxtWriter()
 32    {
 33        nodecount = 0;
 34        mIsSkipText = false;
 35        mBuilder = new StringBuilder();
 36    }
 37
 38    /// <summary>
 39    /// Gets the plain text of the document that was accumulated by the visitor.
 40    /// </summary>
 41    public string GetText()
 42    {
 43        return mBuilder.ToString();
 44    }
 45
 46    /// <summary>
 47    /// Adds text to the current output. Honors the enabled/disabled output flag.
 48    /// </summary>
 49    private void AppendText(string text)
 50    {
 51        if (!mIsSkipText)
 52            mBuilder.Append(text);
 53    }
 54
 55    /// <summary>
 56    /// Called when a RichText node is encountered in the document.
 57    /// </summary>
 58    public override void VisitRichTextStart(RichText run)
 59    {
 60        ++nodecount;
 61        AppendText(run.Text);
 62    }
 63
 64    /// <summary>
 65    /// Called when a Document node is encountered in the document.
 66    /// </summary>
 67    public override void VisitDocumentStart(Document document)
 68    {
 69        ++nodecount;
 70    }
 71
 72    /// <summary>
 73    /// Called when a Page node is encountered in the document.
 74    /// </summary>
 75    public override void VisitPageStart(Page page)
 76    {
 77        ++nodecount;
 78    }
 79
 80    /// <summary>
 81    /// Called when a Title node is encountered in the document.
 82    /// </summary>
 83    public override void VisitTitleStart(Title title)
 84    {
 85        ++nodecount;
 86    }
 87
 88    /// <summary>
 89    /// Called when a Image node is encountered in the document.
 90    /// </summary>
 91    public override void VisitImageStart(Image image)
 92    {
 93        ++nodecount;
 94    }
 95
 96    /// <summary>
 97    /// Called when a OutlineGroup node is encountered in the document.
 98    /// </summary>
 99    public override void VisitOutlineGroupStart(OutlineGroup outlineGroup)
100    {
101        ++nodecount;
102    }
103
104    /// <summary>
105    /// Called when a Outline node is encountered in the document.
106    /// </summary>
107    public override void VisitOutlineStart(Outline outline)
108    {
109        ++nodecount;
110    }
111
112    /// <summary>
113    /// Called when a OutlineElement node is encountered in the document.
114    /// </summary>
115    public override void VisitOutlineElementStart(OutlineElement outlineElement)
116    {
117        ++nodecount;
118    }
119
120    /// <summary>
121    /// Gets the total count of nodes by the Visitor
122    /// </summary>
123    public Int32 NodeCount
124    {
125        get { return this.nodecount; }
126    }
127
128    private readonly StringBuilder mBuilder;
129    private bool mIsSkipText;
130    private Int32 nodecount;
131}

Aspose.Note Dokumentobjektmodell

Knotenklassen

Wenn Aspose.Note ein OneNote -Dokument in den Speicher liest, werden Objekte verschiedener Typen erstellt, um verschiedene Dokumentelemente darzustellen. Jeder Richtext von Text, Titel, Tabelle und sogar der OneNote selbst ist ein Knoten. ASSONE.Note definiert eine Klasse für jede Art von Dokumentknoten.

Die folgende Abbildung ist ein UML -Klassendiagramm, das die Vererbung zwischen Knotenklassen des Aspose.Honby -Dokumentobjektmodells (DOM) zeigt. Die Namen abstrakter Klassen sind Knoten und Compositode. Bitte beachten Sie, dass die Aspose.Note-Dom auch Nicht-Notenklassen wie ParagraphStyle, Margen, NumberList , usw. enthält, die nicht an der Vererbung teilnehmen und in diesem Diagramm nicht angezeigt werden.

In der folgenden Tabelle sind Aspose. ANTE -Knotenklassen mit kurzen Beschreibungen aufgelistet.

Aspose.Note ClassCategoryDescription
DocumentDocumentA document object that, as the root of the document tree, provides access to the entire OneNote document.
TitleTitleA page title of OneNote document.
PagePageA page of OneNote document.
AttachedFileFileRepresents an attached file within the OneNote document.
ImageImageRepresents an image file within the OneNote document.
OutlineGroupOutlineRepresents a group of outlines.
OutlineElementOutlineRepresents an outline element.
OutlineOutlineRepresents an outline.
TableTablesA table in a OneNote document.
TableCellTablesA cell of a table row.
TableRowTablesA row of a table.
RichTextTextA RichText of text with consistent formatting.
The following table lists Aspose.Note base node classes that help to form the class hierarchy.
ClassDescription
NodeAbstract base class for all nodes of a OneNote document. Provides basic functionality of a child node.
CompositeNodeBase class for nodes that can contain other nodes. Provides operations to access, insert, remove, and select child nodes.

Unterscheiden Sie Knoten von Nodetype

Obwohl die Klasse des Knotens ausreicht, um verschiedene Knoten voneinander zu unterscheiden, liefert Aspose.Se. Starten liefert die Nodetype -Aufzählung, um einige API -Aufgaben zu vereinfachen, z. B. die Auswahl der Knoten eines bestimmten Typs. Der Typ jedes Knotens kann unter Verwendung der Aufzählung von Nodetyp erhalten werden. Dies gibt einen Nodetype Aufzählungswert zurück. Beispielsweise gibt ein Richtext -Knoten (dargestellt durch den RichText Klasse) nodetype.richtext zurück, ein Tabellenknoten (dargestellt durch die {**} -Tabelle {*} Klasse) gibt nodetype.table und so auf.

Das folgende Codebeispiel zeigt, wie die Nodetype -Aufzählung verwendet wird.

1// The path to the documents directory.
2Document doc = new Document();
3
4// Returns NodeType.Document
5NodeType type = doc.NodeType;

Erstellen Sie ein leeres OneNote -Dokument mit einem Seitentitel

Aspose.Note für .NET unterstützt die Generierung von OneNote -Dokumenten von Grund auf neu.

Verwenden Sie den unten angegebenen Code -Snippet, um ein neues Dokument mit einem Titel zu erstellen.

Dieses Beispiel funktioniert wie folgt:

  1. Erstellen Sie ein Objekt der Dokument Klasse.
  2. Initialisieren Sie das Objekt der Seitenklasse, indem Sie das Dokumentklassenobjekt übergeben.
  3. Setzen Sie Seite. Title -Objekteigenschaften.
  4. Die AppendChild -Methode von Dokumentklasse und das Übergeben von Seitenklassenobjekt.
  5. Speichern Sie es schließlich, indem Sie die Speichermethode der Dokumentklasse aufrufen.

Der folgende Code -Snippet zeigt, wie ein leeres OneNote -Dokument mit einem Seitentitel erstellt wird

 1// The path to the documents directory.
 2string dataDir = RunExamples.GetDataDir_LoadingAndSaving();
 3
 4// Create an object of the Document class
 5Document doc = new Aspose.Note.Document();
 6// Initialize Page class object
 7Aspose.Note.Page page = new Aspose.Note.Page(doc);
 8
 9// Default style for all text in the document.
10ParagraphStyle textStyle = new ParagraphStyle { FontColor = Color.Black, FontName = "Arial", FontSize = 10 };
11// Set page title properties
12page.Title = new Title(doc)
13{
14    TitleText = new RichText(doc) { Text = "Title text.", ParagraphStyle = textStyle },
15    TitleDate = new RichText(doc) { Text = new DateTime(2011, 11, 11).ToString("D", CultureInfo.InvariantCulture), ParagraphStyle = textStyle },
16    TitleTime = new RichText(doc) { Text = "12:34", ParagraphStyle = textStyle }
17};
18// Append Page node in the document
19doc.AppendChildLast(page);
20
21dataDir = dataDir + "CreateDocWithPageTitle_out.one";
22// Save OneNote document
23doc.Save(dataDir);

Dateiformatinformationen abrufen

Aspose.NoteAPI unterstützt Microsoft OneNote sowie OneNote -Online -Dateiformate. Die Lateral hat einige Einschränkungen, wie z. B. keine Unterstützung für Anhänge und Bilder im Dokument sind nicht verfügbar. Um die Benutzer zu diesen beiden verschiedenen Arten von Dokumenten zu führen, bietet die API die Methode zur Bestimmung des Dateiformates des OneNote -Dokuments, um die Einschränkungen zu kennen, bis diese vollständig unterstützt werden.

Das folgende Codebeispiel zeigt, wie die Dateiformatinformationen des OneNote -Dokuments mithilfe der Dateiformat -Eigenschaft der Dokumentklasse abgerufen werden.

 1// The path to the documents directory.
 2string dataDir = RunExamples.GetDataDir_LoadingAndSaving();
 3
 4var document = new Aspose.Note.Document(dataDir + "Aspose.one");
 5switch (document.FileFormat)
 6{
 7    case FileFormat.OneNote2010:
 8        // Process OneNote 2010
 9        break;
10    case FileFormat.OneNoteOnline:
11        // Process OneNote Online
12        break;
13}
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.