Conversão em lote de arquivos de notebooks do smartboard

2

Existe alguma maneira, como converter o SMART *.notebook (formato de arquivo para criar apresentações para o Smartboard) para PDF em um lote?

Tenho cerca de mil desses arquivos para converter em pdf e o software distribuído com o Smartboard permite exportar para o pdf um a um.

    
por mipe34 10.08.2013 / 23:11

4 respostas

2

Para cadernos simples , você pode fazer isso sozinho.

.notebook arquivos são simplesmente arquivos .ZIP com um manifesto (usado como uma lombada em ebooks) que permitem navegar pelos arquivos de páginas dentro do bloco de anotações.

E os arquivos de paginação são arquivos no formato SVG, assim você pode converta-os facilmente no Linux, mas também existem ferramentas para o Windows (e até mesmo ferramentas online - eu não sei usá-las para milhares de arquivos, o ToS provavelmente proíbem isso).

Para testar, no Linux ( deve funcionar no Windows também, mas requer a instalação do Cygwin com Perl ), eu tentei:

$ 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

No arquivo de manifesto, eu acho:

<resource adlcp:scormType="asset" href="page0.svg" identifier="pages" type="webcontent">
  <file href="page0.svg"/>
  <file href="page1377095283484.svg"/>
</resource>

Ao executar o svg2pdf , posso faça com que as duas páginas sejam convertidas em PDF corretamente.

Nesse ponto, uma simples execução do pdftk me permitiu obter um único PDF com as duas páginas.

Resolver tudo isso em um conversor requer alguns ajustes para facilitar as páginas SVG do manifesto (no CPAN, eu tive que force install App::Xml_grep2 devido a uma falha de teste que parecia espúria).

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

Eu tentei com alguns notebooks criados com o SmartTech Express , e funciona. Eu não posso dar outra garantia.

Uma vez salvo como um script, o acima pode converter recursivamente um grande diretório cheio de arquivos .notebook:

find . -name "*.notebook" -exec /path/to/converter \{\}\;

... no final, ao lado de todos os arquivos .notebook, haverá (bem, deve ...) ser um arquivo .notebook.pdf com o mesmo nome e conteúdo convertido ( o script pode ser modificado para se livrar da parte .notebook do nome, ou seja, converter Sample.notebook para Sample.pdf , usando o utilitário basename .

    
por 21.08.2013 / 17:48
2

Eu não tenho o software que você mencionou, mas se ele aceita argumentos de linha de comando ou se o conversor / exportador é um programa separado, você pode fazer a conversão usando um arquivo de lote.

Por exemplo, se o conversor / exportador puder ser ativado digitando converter.exe <input file> <output file> na linha de comando, o seguinte arquivo em lote converterá todos os arquivos *.notebook na mesma pasta que ele:

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

Na linha 1, você precisaria alterar <insert path here> para o caminho completo para o conversor, por exemplo, C:\Program Files\something\converter.exe

Se a exportação puder ser executada somente usando a interface gráfica do software, você poderá escrever um script para fazer o clique para você, usando um programa como o AutoHotKey. Copie todos os arquivos que você deseja converter para uma nova pasta primeiro. O script teria que ser algo assim (as teclas de atalho são, por exemplo, apenas, elas provavelmente são diferentes no software que você está usando):

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
    
por 17.08.2013 / 05:36
0

O comentário anterior disse algo sobre scripts e argumentos de linha de comando. Eu investiguei o site do SmartBoard e encontrei o this .pdf . É possível que uma opção de linha de comando esteja oculta na documentação, mas eu não tenho esse software ou produto, então não posso ajudar. Minha recomendação aqui é pesquisar completamente.

Eu vi algumas capturas de tela e parece que o .notebook não é convertido diretamente em .pdf; com isto quero dizer que há algum pré-processamento necessário (ou desejável) para convertê-los. Um script ou um script de autoclicker pode acabar resultando em muitos arquivos .pdf inutilizáveis.

    
por 21.08.2013 / 09:19
0

Eu tive muitos problemas com a solução fornecida por lserni. Por exemplo, não consegui encontrar xml_grep2 ou svg2pdf em nenhum lugar. Talvez apenas precisasse de uma atualização. Aqui está a minha solução:

#!/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

Para executá-lo para vários arquivos, usei:

find . -name "*.notebook" -exec convert.sh {} \;
    
por 25.07.2015 / 18:35