Adding a file to a OneNote page via extensibility


I got an email today in which a developer was interested in adding a file to a OneNote page. I pointed him at the OneNote Developer Center on MSDN and wanted to outline (no pun intened) one way of doing this.

First, I started ONOMSpy and looked at the xml of a page that had an attached text file. Here’s the XML I saw:

<one:OE creationTime="2012-05-15T01:24:48.000Z" lastModifiedTime="2012-05-15T01:24:48.000Z" objectID="{D83A35A1-EDC1-4D62-BDAE-33D063929871}{60}{B0}" alignment="left" selected="partial">

<one:InsertedFile selected="all" pathCache="C:\Users\John\AppData\Local\Microsoft\OneNote\14.0\OneNoteOfflineCache_Files\ffc255f8-4a1a-41a0-afca-d3b831b0b949.txt" pathSource="C:\Users\John\Desktop\a.txt" preferredName="a.txt" />

</one:OE>

Next, I will remove all the unneeded data and look at what I will add to the page when I add a new file:

<one:OE >

<one:InsertedFile pathSource="C:\Users\John\Desktop\My New File.txt" preferredName="MY NEW FILE.txt" />

</one:OE>

The lastModifiedTime and creationTime will be added once I update the page with new content. The pathCache attribute is a bit more interesting – it will be created by OneNote when I update the page content. It points to the cached copy of the file that will be stored at the location to which the attribute points. In this example, I am using the default OneNote location, but users can override the cache path in File | Options if they want. Also notice that the file name gets changed to a GUID by OneNote. Since OneNote will generate this GUID, there is not much more to say about it.

pathSource may be a little interesting if I’m using a network path. Obviously, if the path can’t be located, the file will not be added. Since this is local, I should be OK. It’s an optional parameter (they all are, actually), but I need to specify it in this case so the local file will get picked up and added to OneNote.

After I add this OE below the original OE that pointed at a.txt, I can update the page content. When I look at the page, I see this:

clip_image001

And obviously the preferredName is what shows as the file name. I put it all in capital letters so it would be easier to see.

Let me know if this helps.

Questions, comments, concerns and criticisms always welcome,

John


Comments (0)

Skip to main content