Stapelkonvertierung von Smartboard-Notebook-Dateien

2

Gibt es eine Möglichkeit, wie Sie SMART *.notebook(Dateiformat zum Erstellen von Präsentationen für Smartboard) in PDF in einem Stapel konvertieren ?

Ich muss ungefähr tausend solcher Dateien in PDF konvertieren, und die mit Smartboard gelieferte Software ermöglicht nur den Export in PDF nacheinander.

mipe34
quelle

Antworten:

2

Bei einfachen Notizbüchern können Sie dies selbst tun.

.notebook Dateien sind einfach .ZIP-Dateien mit einem Manifest (wie ein Buchrücken in E-Books verwendet), mit dem Sie durch die Auslagerungsdateien im Notizbuch navigieren können.

Und Auslagerungsdateien sind Dateien im SVG-Format, so dass Sie sie problemlos unter Linux konvertieren können. Es gibt jedoch auch Tools für Windows (und sogar Online-Tools - ich weiß nicht, wie man sie für Tausende von Dateien verwendet, das verbietet der ToS wahrscheinlich). .

Zum Testen unter Linux ( es sollte auch unter Windows funktionieren, erfordert jedoch die Installation von Cygwin mit Perl ) habe ich Folgendes versucht:

$ 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 der Manifestdatei finde ich:

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

Durch Ausführen von svg2pdf können beide Seiten korrekt in PDF konvertiert werden.

Zu diesem Zeitpunkt konnte ich mit einer einfachen Ausführung von pdftk ein einziges PDF mit den beiden Seiten erstellen.

Das alles in einen Konverter zu packen , erfordert einige Anpassungen , um die SVG-Seiten aus dem Manifest zu entfernen (in CPAN musste ich force install App::Xml_grep2wegen eines Testfehlers, der unecht aussah, vorgehen).

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

Ich habe es mit einigen Notebooks versucht, die mit SmartTech Express erstellt wurden , und es funktioniert. Ich kann keine andere Garantie geben.

Nach dem Speichern als Skript kann das oben beschriebene Verfahren ein großes Verzeichnis mit .notebook-Dateien rekursiv konvertieren:

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

... am Ende neben jeder .notebook-Datei wird (na ja, es sollte ...) eine .notebook.pdfDatei mit demselben Namen und konvertiertem Inhalt stehen (das Skript kann geändert werden, um den .notebook- Teil zu entfernen) des Namens, dh konvertieren Sample.notebookin Sample.pdf, mit dem basenameDienstprogramm).

LSerni
quelle
Ich habe auch eine Idee, mit diesen * .svg-Dateien zu spielen. Aber wenn ich sie öffne, geht jede Formatierung verloren und es wird nur der leere Bildschirm mit schwarzem, unformatiertem Text angezeigt.
Mipe34
Das hängt davon ab, welchen Viewer Sie verwenden. Während svg2pdf funktioniert, ist mir aufgefallen, dass svgtools, svgtopam und der interne SVG-Viewer von Firefox dies nicht tun. Wenn Sie eines der Notebooks zur Verfügung stellen können, kann ich versuchen, es zu überprüfen.
LSerni
Ich habe diese Antwort markiert, weil dies die naheliegendste Antwort ist, die ich wollte. Wie Sie sagten, kann es jedoch nur für "einfache" Notebooks verwendet werden. Ich habe keinen solchen Konverter gefunden und es gibt wahrscheinlich keinen, der auch den im Notebook versteckten Flash laden könnte (sogar die GUI lädt den Flash nach dem Öffnen der Seite) und konvertiert ihn in PDF - was auch eine meiner Anforderungen ist ...
Mipe34
Gibt es Flash in einem Notebook? In diesem Fall können Sie es jedoch nicht in PDF konvertieren. PDF unterstützt es nicht, das weiß ich. Wenn irgendwo "komplizierte" Notebooks verfügbar sind, würde ich gerne meine Lösung damit testen.
LSerni
PDF unterstützt kein Flash, es muss jedoch nicht interaktiv sein - der Screenshot reicht aus, um zu sehen, dass sich etwas auf der Seite befindet (nicht nur der leere Bildschirm). Ich kann kein Beispiel online finden - ich muss einige vorbereiten.
Mipe34
2

Ich habe die von Ihnen erwähnte Software nicht, aber wenn sie Befehlszeilenargumente akzeptiert oder wenn der Konverter / Exporter ein separates Programm ist, können Sie die Konvertierung mithilfe einer Batchdatei durchführen.

Wenn der Konverter / Exporter beispielsweise durch Eingabe converter.exe <input file> <output file>in die Befehlszeile aktiviert werden kann, konvertiert die folgende Batchdatei alle *.notebookDateien im selben Ordner wie sich selbst:

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

In Zeile 1 müssten Sie <insert path here>auf den vollständigen Pfad zum Konverter wechseln , zC:\Program Files\something\converter.exe

Wenn der Export nur über die grafische Oberfläche der Software ausgeführt werden kann, können Sie mit einem Programm wie AutoHotKey ein Skript schreiben, das das Klicken für Sie übernimmt. Kopieren Sie zuerst alle Dateien, die Sie in einen neuen Ordner konvertieren möchten. Das Skript müsste ungefähr so ​​aussehen (die Tastenkombinationen dienen nur als Beispiel und unterscheiden sich wahrscheinlich in der von Ihnen verwendeten Software):

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
Duke Nukem
quelle
Ja, so möchte ich es machen. Trotzdem kenne ich keinen solchen Konsolenwandler.
Mipe34
In diesem Fall müssen Sie ein Skript in einem Programm wie AutoHotKey schreiben, um das Klicken und Drücken von Tasten automatisch für Sie zu erledigen. Siehe meine Bearbeitung oben.
Herzog Nukem
Es wäre sehr schwer , solche Art von Skript zu schreiben - ich kann mir nicht vorstellen , wie würden Sie Skript tausend verschiedene Dateien zu öffnen (für nächste Datei müssen Sie unter etwa 10px klicken, später die Liste rollen ...
mipe34
Die erste Datei wird am Ende des Skripts gelöscht, sodass die nächste Datei bei der nächsten Iteration zur ersten Datei wird. Sie schleifen dieses Skript einfach für jede Datei, bis keine nicht konvertierten Dateien mehr vorhanden sind. Ich habe schon viele solche Skripte geschrieben - sie sind etwas gewöhnungsbedürftig, aber in vielen Situationen sehr hilfreich.
Herzog Nukem
0

Der vorherige Kommentar hat etwas über Skripte und Befehlszeilenargumente gesagt. Ich habe mich auf der SmartBoard-Website umgesehen und diese PDF- Datei gefunden . Es ist möglich, dass eine Befehlszeilenoption in der Dokumentation verborgen ist, aber ich habe keine Software oder kein Produkt, daher kann ich nicht helfen. Meine Empfehlung hier ist, gründlich zu suchen.

Ich habe einige Screenshots gesehen und es scheint, dass .notebook nicht direkt in .pdf konvertiert wird. Damit meine ich, dass eine Vorverarbeitung erforderlich (oder wünschenswert) ist, um sie zu konvertieren. Ein Skript oder ein Autoclicker-Skript kann dazu führen, dass viele .pdf-Dateien nicht mehr verwendet werden können.

Doktoro Reichard
quelle
Ich habe dieses Dokument gelesen, aber es gibt nichts über die Konvertierung von cmd-Zeilen in PDF. Es gibt wahrscheinlich keinen solchen Konverter. Smart Board-Software ermöglicht nur die manuelle Konvertierung in PDF über die GUI.
Mipe34
0

Ich hatte viele Probleme mit der von lserni bereitgestellten Lösung. Zum Beispiel konnte ich xml_grep2 oder svg2pdf nirgendwo finden. Vielleicht brauchte es nur ein Update. Hier ist meine Lösung:

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

So führen Sie es für mehrere Dateien aus, die ich verwendet habe:

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

Powershell-Skript. Erfordert Pfadaktualisierungen für die ausführbaren Dateien inkscape und pdftk sowie die Installation von chocolatey (Windows Package Manager) für die Installation von XMLStarlet.

function SmartNotebook2PDF
{
    Param($notebookfile)
    $notebasename = (Get-Item $notebookfile).basename
    $zipfile = $notebasename + ".zip"
    Write-Host "Working on $notebookfile"
    Copy-Item $notebookfile -Destination $zipfile
    Expand-Archive $zipfile -Force
        if (!(Test-Path $notebasename\imsmanifest.xml)) {
        Write-Host "sorry, this notebook seems to have no manifest."
        Break
        }
    $pages = xml sel -t -v "//*/_:resource[@identifier='pages']/_:file/@href" $notebasename\imsmanifest.xml
    $n = 0
    ForEach ($page in $pages) {
        $n++
        Write-Host "Found $page, converting"
        inkscape $notebasename\$page --export-area-page --export-pdf=$n
        Remove-Item -path $notebasename\$page
    }
    Write-Host "Exported $n pages to PDF with Inkscape"
    pdftk $(1..$n) output "$notebookfile.pdf"
    Write-Host "PDF created with pdftk at $notebookfile.pdf. Cleaning up."
    del $(1..$n)
    Remove-Item -path $notebasename -recurse
    Remove-Item -path $zipfile
    Write-Host "Done."
}


$files = dir -recurse -ea 0 *.notebook | % FullName

ForEach ($file in $files) {
    SmartNotebook2PDF ($file)
    }

Jemand, der schlauer als ich ist, kann wahrscheinlich herausfinden, wie man die XML-Attribute nativ aus Powershell herausholt, anstatt XMLStarlet zu verwenden.

Podfish
quelle