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 dem 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. 1.. Überschreiben und Bereitstellung von Implementierungen für einige oder alle der Dokumentvisor.vissitxxx -Methoden zur Durchführung kundenspezifischer Vorgänge.
  2. Rufen Sie [node.accept] https://reference.aspsis.com/note/java/com.asispsis.note/node#accept-com.aspsis.note.documentvisitor) auf dem Knoten, von dem Sie die Aufzählung beginnen möchten, auf dem Knoten. 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.

In diesem Beispiel wird angezeigt, wie das Besuchermuster zum Hinzufügen neuer Operationen zum Aspose. -ANTE -Objektmodell hinzugefügt wird. In diesem Fall erstellen wir ein einfaches Dokument, das in ein Textformat konvertiert ist.

 1public class ExtractOneNoteContentUsingDocumentvisitor extends DocumentVisitor {
 2
 3	final private StringBuilder mBuilder;
 4	final private boolean mIsSkipText;
 5	private int nodecount;
 6
 7	public ExtractOneNoteContentUsingDocumentvisitor() {
 8		nodecount = 0;
 9		mIsSkipText = false;
10		mBuilder = new StringBuilder();
11	}
12
13	// Gets the plain text of the document that was accumulated by the visitor.
14	public String GetText() {
15		return mBuilder.toString();
16	}
17
18	// Adds text to the current output. Honors the enabled/disabled output flag.
19	private void AppendText(String text) {
20		if (!mIsSkipText)
21			mBuilder.append(text);
22	}
23
24	// Called when a RichText node is encountered in the document.
25	public /* override */ void VisitRichTextStart(RichText run) {
26		++nodecount;
27		AppendText(run.getText());
28	}
29
30	// Called when a Document node is encountered in the document.
31	public /* override */ void VisitDocumentStart(Document document) {
32		++nodecount;
33	}
34
35	// Called when a Page node is encountered in the document.
36	public /* override */ void VisitPageStart(Page page) {
37		++nodecount;
38	}
39
40	// Called when a Title node is encountered in the document.
41	public /* override */ void VisitTitleStart(Title title) {
42		++nodecount;
43	}
44
45	// Called when a Image node is encountered in the document.
46	public /* override */ void VisitImageStart(Image image) {
47		++nodecount;
48	}
49
50	// Called when a OutlineGroup node is encountered in the document.
51	public /* override */ void VisitOutlineGroupStart(OutlineGroup outlineGroup) {
52		++nodecount;
53	}
54
55	// Called when a Outline node is encountered in the document.
56	public void VisitOutlineStart(Outline outline) {
57		++nodecount;
58	}
59
60	// Called when a OutlineElement node is encountered in the document.
61	public void VisitOutlineElementStart(OutlineElement outlineElement) {
62		++nodecount;
63	}
64
65	// Gets the total count of nodes by the Visitor
66	public int NodeCount() {
67		return this.nodecount;
68	}
69
70	public static void main(String[] args) throws IOException {
71		// Open the document we want to convert.
72
73		String dataDir = Utils.getSharedDataDir(ExtractOneNoteContentUsingDocumentvisitor.class) + "load/";
74
75		Document doc = new Document(dataDir + "Sample1.one", new LoadOptions());
76
77		// Create an object that inherits from the DocumentVisitor class.
78		ExtractOneNoteContentUsingDocumentvisitor myConverter = new ExtractOneNoteContentUsingDocumentvisitor();
79
80		// This is the well known Visitor pattern. Get the model to accept a
81		// visitor.
82		// The model will iterate through itself by calling the corresponding
83		// methods
84		// on the visitor object (this is called visiting).
85		//
86		// Note that every node in the object model has the Accept method so the
87		// visiting
88		// can be executed not only for the whole document, but for any node in
89		// the document.
90		doc.accept(myConverter);
91
92		// Once the visiting is complete, we can retrieve the result of the
93		// operation,
94		// that in this example, has accumulated in the visitor.
95		System.out.println(myConverter.GetText());
96		System.out.println(myConverter.NodeCount());
97	}
98}

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 der Aspose. ANDOM auch Nicht-Node-Klassen wie ParagraphStyle, Margen, Numberlist , usw. enthält, die nicht an der Vererbung teilnehmen und in diesem Diagramm nicht angezeigt werden.

todo:image_alt_text

In der folgenden Tabelle sind Aspose. ANTER -Knotenklassen und ihre kurzen Beschreibungen aufgeführt.

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.

In der folgenden Tabelle sind Aspose. ANTER -BASIS -Knotenklassen aufgelistet, die zur Bildung der Klassenhierarchie helfen.

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 die RichText Klasse) nodetype.richtext zurück, ein Tabellenknoten (dargestellt durch die Tabelle Klasse) gibt nodetype.table zurück.

Erstellen Sie ein leeres OneNote -Dokument mit einem Seitentitel

ASSONE.NOTE FÜR JAVA unterstützt die Erzeugung von OneNote -Dokumenten von Grund auf neu.

Verwenden Sie diesen Code -Snippet, um ein neues Dokument mit einem Titel von Grund auf neu zu erstellen.

Dieses Beispiel funktioniert wie folgt:

  1. Erstellen Sie ein Objekt der Dokumentklasse.
  2. Initialisieren Sie das Objekt der Seitenklasse, indem Sie das Dokumentklassenobjekt übergeben.
  3. Setzen Sie den Seitentitel mit Page.settitle () Methode.
  4. Rufen Sie die AppendChildLast -Methode der Dokumentklasse auf und geben Sie das Seitenklassenobjekt über.
  5. Speichern Sie es schließlich, indem Sie die Speichermethode der Dokumentklasse aufrufen.

Das folgende Code -Snippet zeigt, wie Sie ein leeres OneNote -Dokument mit einem Seitentitel erstellen.

 1// The path to the documents directory.
 2String dataDir = Utils.getSharedDataDir(CreateDocWithPageTitle.class);
 3
 4// Create an object of the Document class
 5Document doc = new Document();
 6
 7// Initialize Page class object
 8Page page = new Page(doc);
 9
10// Default style for all text in the document.
11ParagraphStyle textStyle = new ParagraphStyle();
12textStyle.setFontColor(Color.BLACK);
13textStyle.setFontName("Arial");
14textStyle.setFontSize(10);
15
16// Set page title properties
17Title title = new Title(doc);
18
19RichText titleText = new RichText(doc);
20titleText.setText("Title text.");
21titleText.setParagraphStyle(textStyle);
22title.setTitleText(titleText);
23
24RichText titleDate = new RichText(doc);
25Calendar cal = Calendar.getInstance();
26cal.set(2018, 04, 03);
27titleDate.setText(cal.getTime().toString());
28titleDate.setParagraphStyle(textStyle);
29title.setTitleDate(titleDate);
30
31RichText titleTime = new RichText(doc);
32titleTime.setText("12:34");
33titleTime.setParagraphStyle(textStyle);
34title.setTitleText(titleTime);
35
36page.setTitle(title);
37
38// Append Page node in the document
39doc.appendChildLast(page);
40
41dataDir = dataDir + "load//CreateDocWithPageTitle_out.one";
42
43// Save OneNote document
44doc.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 Dokumentenarten zu leiten, stellt die API die Methode zur Bestimmung des Dateiformats des OneNote -Dokuments bereit, um die Einschränkungen zu kennen, bis diese vollständig unterstützt werden.

In diesem Artikel wird angezeigt, wie die Dateiformatinformationen des OneNote -Dokuments mithilfe der Dateiformat -Eigenschaft der Dokumentklasse abgerufen werden.

 1String dataDir = Utils.getSharedDataDir(GetFileFormatInfo.class) + "load/";
 2	
 3Document document = new Document(dataDir + "Aspose.one");
 4switch (document.getFileFormat())
 5{
 6    case FileFormat.OneNote2010:
 7        // Process OneNote 2010
 8        break;
 9    case FileFormat.OneNoteOnline:
10        // Process OneNote Online
11        break;
12}
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.