For simple notebooks, you might do this yourself.
.notebook
files are simply .ZIP files with a manifest (used like a spine in ebooks) that allow you to navigate through the page files inside the notebook.
And page files are SVG format files, so you can convert them easily on Linux, but there are tools for Windows too (and even online tools - I don't know about using them for thousands of file though, the ToS probably forbid that).
To test, on Linux (it should work on Windows too, but it requires installing Cygwin with Perl), I tried:
$ unzip -l Untitled.notebook
Archive: Untitled.notebook
Length Date Time Name
--------- ---------- ----- ----
11715 2013-08-21 14:28 page1377095283484.svg
1251 2013-08-21 14:28 imsmanifest.xml
7137 2013-08-21 14:28 page0.svg
--------- -------
20103 3 files
In the manifest file, I find:
<resource adlcp:scormType="asset" href="page0.svg" identifier="pages" type="webcontent">
<file href="page0.svg"/>
<file href="page1377095283484.svg"/>
</resource>
By running svg2pdf, I can get both pages to convert to PDF correctly.
At this point, a simple run of pdftk allowed me to get a single PDF with the two pages.
Wrapping this all into a converter requires a bit of tweaking to ease out the SVG pages from the manifest (in CPAN, I had to force install App::Xml_grep2
due to a test failure which looked spurious).
# Temporary files named from 1 to N. It is unlikely that
# any legitimate files exist with such names, but this has
# better be done in a temporary directory, just in case.
unzip $1
if [ ! -r imsmanifest.xml ]; then
echo Sorry, this notebook seems to have no manifest.
exit 2
fi
# Get page numbers
XPATH="//*[@identifier='pages']/*[local-name()='file']/@href"
PAGES=`xml_grep2 -t "$XPATH" imsmanifest.xml`
# Remove manifest, we need it no more.
rm imsmanifest.xml
N=0
for page in $PAGES; do
# Create
N=$[ $N + 1 ]
svg2pdf $page $N
# Remove SVG page, we need it no more.
rm $page
done
pdftk $( seq 1 $N ) output $1.pdf
# Now remove temporary files
rm $( seq 1 $N )
I have tried it with a few notebooks created with SmartTech Express, and it works. I can give no other warranty.
Once saved as a script, the above can convert recursively a large directory full of .notebook files:
find . -name "*.notebook" -exec /path/to/converter \{\}\;
...at the end, at the side of every .notebook file there will (well, there should...) be a .notebook.pdf
file with the same name and converted content (the script can be modified to get rid of the .notebook part of the name, i.e., convert Sample.notebook
to Sample.pdf
, using the basename
utility).