2

Есть ли способ, как конвертировать SMART *.notebook (формат файла для создания презентаций для Smartboard) в PDF в пакетном режиме?

У меня есть около тысячи таких файлов для конвертации в pdf, а программное обеспечение, распространяемое вместе со Smartboard, позволяет экспортировать только в pdf один за другим.

4 ответа4

2

У меня нет упомянутого вами программного обеспечения, но если оно принимает аргументы командной строки или конвертер / экспортер - это отдельная программа, вы можете выполнить преобразование, используя командный файл.

Например, если конвертер / экспортер можно активировать, введя converter.exe <input file> <output file> в командной строке, следующий пакетный файл преобразует все файлы *.notebook в той же папке, что и сам:

set PATH_TO_CONVERTER=<insert path here>
for %%a in ("*.notebook") do "%PATH_TO_CONVERTER%" "%%a" "newfiles\%%~na.pdf"

В строке 1 вам нужно изменить <insert path here> на полный путь к конвертеру, например, C:\Program Files\something\converter.exe

Если экспорт может быть выполнен только с использованием графического интерфейса программного обеспечения, вы можете написать сценарий для выполнения щелчка для вас, используя такую программу, как AutoHotKey. Сначала скопируйте все файлы, которые вы хотите преобразовать в новую папку. Сценарий должен выглядеть примерно так (сочетания клавиш приведены только для примера, они, вероятно, отличаются в используемом программном обеспечении):

Type Ctrl+O      -- Open the file chooser dialog
Wait a few seconds for it to open
Type down arrow  -- Select the first file
Type enter       -- Open the file
Wait a few seconds for it to open
Type Alt+F+X     -- Call the export command
Wait a few seconds for export dialog to open
Type enter       -- Export file
Type Ctrl+W      -- Close the file
Type Ctrl+O      -- Open the file chooser dialog
Wait a few seconds for it to open
Type down arrow  -- Select the first file
Type Del         -- We're done with the first file so delete it
Type Enter       -- Agree to delete
Type Esc         -- Close file chooser
Go back to beginning of script
2

Для простых ноутбуков вы можете сделать это самостоятельно.

Файлы .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 ).

0

У меня было много проблем с решением, предоставленным lserni. Например, я нигде не смог найти xml_grep2 или svg2pdf. Может быть, просто нужно обновление. Вот мое решение:

#!/bin/bash

# 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.

# un-comment for debug messages
# set -x

# always overwrite when unzipping
unzip -o "$1"

if [ ! -r imsmanifest.xml ]; then
  echo Sorry, this notebook seems to have no manifest.
  exit 2
fi

# Get page numbers
XPATH="//*/_:resource[@identifier='pages']/_:file/@href"
PAGES=`xmlstarlet sel -t -v "//*/_:resource[@identifier='pages']/_:file/@href" imsmanifest.xml`

N=0
for page in $PAGES; do
    # Create   
    ((N++))

    inkscape $page --export-area-page --export-pdf=$N
    #inkscape $page --export-area-drawing --export-pdf=$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 )
rm -rf images annotationmetadata
rm metadata.rdf metadata.xml settings.xml preview.png
rm imsmanifest.xml

Чтобы запустить его для нескольких файлов, я использовал:

find . -name "*.notebook" -exec convert.sh {} \;
0

Предыдущий комментарий что-то говорил о скриптах и аргументах командной строки. Я исследовал сайт SmartBoard и нашел этот .pdf. Возможно, что опция командной строки скрыта в документации, но у меня нет этого программного обеспечения или продукта, поэтому я не могу помочь. Я рекомендую здесь тщательно искать.

Я видел несколько скриншотов, и кажется, что .notebook не конвертируется напрямую в .pdf; под этим я подразумеваю некоторую предварительную обработку, необходимую (или желательную) для их преобразования. Сценарий или сценарий автокликера может в конечном итоге привести к большому количеству непригодных для использования файлов .pdf.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .