PowerPoint To OneNote
|PP2One is a simple application that automates the importing of PowerPoint presentations into Microsoft OneNote. It copies the presentation into a new OneNote page (in a user-designated section), so note-takers can associate their own notes with the presentation. It is released free-of-charge (but donations are welcome), and the author takes no responsibility for it (but will be happy to discuss it or potential improvements to it).|
BackgroundI have been using OneNote for a while (see my previous blog entries for a summary of some of my experiences). A very frequent note-taking opportunity is during a presentation, and quite often, the presenter will make the PowerPoint file available. (This has certainly been the case during my MBA experience at UCLA's Anderson school.) I wanted the ability to use OneNote to collect and organize my notes.
It is possible to cut-and-paste slides from a PowerPoint presentation into OneNote. It automatically converts the slide into a picture, to preserve formatting and pictures. I pasted the slides on the left side of a page, and there was plenty of room on the right to take notes associated with the page.
This worked really nicely, but there were two key problems. First, some presentation consist of many slides. It requires an annoying amount of effort to copy and paste slides one-by-one. (The conversion did not work for multiple slides.) Second, all slide text was lost, which meant that the slide content could not be searched.
With the release of OneNote Service Pack 1 Preview, the OneNote development team included a way of importing content into the program. I wrote PP2One to make it faster to import a PowerPoint presentation, and allow the presentation content to be searched.
I seriously considered making this an add-in for PowerPoint. But, because the most common usage scenario (for me) is to dump in a presentation without looking at it, it did not seem to be justified. I did structure the code in such a way that it should be relatively straightforward to convert it into an add-in.
InstallationPP2One requires several things:
- OneNote Service Pack 1
- Microsoft PowerPoint. PP2One was developed and tested with PowerPoint XP, but other versions (97 or greater) will probably work. Your mileage may vary.
- Microsoft .Net run-time. I believe that OneNote installs that by default, but if not, then it is available for free from Microsoft
- PP2One executable package, available here. (Original version: here)
I chose not to make an installer package, because this is just a toy and its requirements are rather small.
Simply extract the zip file into a directory of your choice. To start the program, run PP2One.exe.
UseChoose the OneNote section file that you want to hold the presentation, by entering a filename in the topmost text entry box. PP2One will set this to default to OneNote section that you most recently edited.
Next, choose the PowerPoint file to import. The new OneNote page title will default to the PowerPoint file name, but you can change it if you like.
Check or uncheck the "Add slide text" option. The slide text will be added to the OneNote page, but this may clutter the page.
Press the "Add to OneNote" button. This will do the work, but may take some time (especially for large presentations, and if OneNote needs to be opened).
LimitationsThe formatting of the presentation text is not particularly good, as there isn't a great way of converting it into HTML (that I know). I would have preferred to have the text hidden (as the slide images are sufficient), but I couldn't find a good way of hiding it and still being able to search it.
The program seems to work on the set of PowerPoint presentations that I have on my computer, but there it hasn't been tested on a huge number of things. Nor has it been tested on anything other than PowerPoint 97.
There seems like OneNote file sizes do not decrease when large pages are added and deleted. During the course of testing this application, my "test" note section grew to be over a gigabyte. Be careful.
Comments about the implementationBecause the OneNote CSimpleImporter API is about a week old (to the OneNote savvy public at least), there aren't a lot of examples out there. I implemented this using the Visual Studio .Net 2003 IDE, with C# as a programming language. I haven't done a huge amount of coding with C#, and found it to be adequate in a Java-like way. (I suppose that my style will improve as time goes on.) I will post the source code in case anyone is interested.
In the venerable tradition of Omar of Microsoft, I even created an icon for the program.
The CSimpleImporter API was intentionally terse, in order to make it available in the SP1 Preview. As such, it was a great inclusion in the product, because it allows people like me to write little toys like this. But I hope that this does not signal the direction that an eventual full OneNote API would take. Creating an XML text string and passing it into a short function may be a bit simpler from the API perspective, but it really minimizes some of the great development tools that Microsoft has developed over the years. It makes it difficult to pinpoint the cause of an error, if something breaks within the Import function. (This particular release of the API just throws "unknown" errors when something fails inside the function. It took me about an hour to track down the fact that I had forgotten to close an element in my XML.) And I question if this style of API really ends up requiring less testing and documentation, as the functionality just ends being pushed into XML strings rather than function call arguments. (It probably requires more testing and general knowledge out of the user/developer!)
- 1.0 - Initial release
- 1.1 - Added ability to read in text from the slide notes page. Also added some extra error checking.
- 1.2 - Updated for the program for the release version of SP1. Please note that the older executable will not work with SP1 release. (A copy of the older version is available here if you still have the SP1 preview installed.)
- 2.0 - Now works with OneNote 2007, .Net 2.0 framework, and many other improvements. See updates.