Для простых ноутбуков вы можете сделать это самостоятельно.
Файлы .notebook
просто.ZIP-файлы с манифестом (используется как позвоночник в электронных книгах), которые позволяют перемещаться по файлам подкачки внутри записной книжки.
А файлы подкачки - это файлы формата SVG, так что вы можете легко конвертировать их в Linux, но есть и инструменты для Windows (и даже онлайн-инструменты - хотя я не знаю, как их использовать для тысяч файлов, ToS, вероятно, запрещают это),
Чтобы проверить, на Linux (он должен работать и на Windows, но требует установки Cygwin с Perl), я попытался:
$ 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
В файле манифеста я нахожу:
<resource adlcp:scormType="asset" href="page0.svg" identifier="pages" type="webcontent">
<file href="page0.svg"/>
<file href="page1377095283484.svg"/>
</resource>
Запустив svg2pdf, я могу заставить обе страницы правильно конвертировать в PDF.
На этом этапе простой прогон pdftk позволил мне получить один PDF с двумя страницами.
Чтобы обернуть все это в конвертер, нужно немного доработать, чтобы освободить страницы SVG из манифеста (в CPAN мне пришлось force install App::Xml_grep2
из-за сбоя теста, который выглядел ложным).
# 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 )
Я попробовал это с несколькими ноутбуками, созданными с помощью SmartTech Express, и это работает. Я не могу дать никакой другой гарантии.
После сохранения в виде сценария приведенное выше может рекурсивно преобразовывать большой каталог, полный файлов .notebook:
find . -name "*.notebook" -exec /path/to/converter \{\}\;
... в конце, на стороне каждого файла .notebook будет (ну, должен быть ...) файл .notebook.pdf
с тем же именем и преобразованным содержимым (сценарий можно изменить, чтобы избавиться от часть имени .notebook , т. е. конвертировать Sample.notebook
в Sample.pdf
, используя утилиту basename
).