回答:
以下のために、簡単なノートブック、あなたはこの自分を行う可能性があります。
.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を簡単に実行することで、2つのページを持つ1つの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
言及したソフトウェアはありませんが、コマンドライン引数を受け入れる場合、またはコンバーター/エクスポーターが別のプログラムである場合、バッチファイルを使用して変換を行うことができます。
たとえば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
Powershellスクリプト。inkscapeおよびpdftk実行可能ファイルのパスの更新、およびXMLStarletのインストールにはchocolatey(windowsパッケージマネージャー)のインストールが必要です。
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)
}
私よりも賢い人なら、おそらくXMLStarletを使用する代わりに、PowershellからXML属性をネイティブに取得する方法を理解できるでしょう。
前のコメントは、スクリプトとコマンドライン引数について何かを述べました。SmartBoardサイトを調べてみると、この.pdfが見つかりました。コマンドラインオプションがドキュメントに隠れている可能性がありますが、そのソフトウェアまたは製品がないため、私は助けられません。ここでの私の推奨事項は、徹底的に検索することです。
スクリーンショットをいくつか見てきましたが、.notebookは.pdfに直接変換されないようです。これにより、それらを変換するために必要な(または望ましい)前処理があります。スクリプトまたはオートクリッカースクリプトにより、多くの使用できない.pdfファイルが作成される場合があります。
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 {} \;