トレース用画像をCascadeurから取った場合の方法。
Cascadeurのカメラが平行投影に対応していないのが分かったため、次回はモデルをBlenderに戻して画像を取る方法を試します。
InkscapeからPDF, プレーンSVGを出力するスクリプト
# makePDF.py
# Inkscapeで作成したSVGからPDFとプレーンSVGを作成する
# SVGはページ番号付きで32ページ予め作成済み。PDFも32Pになる。
# コマンドライン引数:python3 makePDF.py 引数1 引数2
# 引数1はPDFからプレーンSVGを作成する時の開始ページ、引数2は終わりページ
# 一つしか指定していなければ該当ページだけ抜き出す
# 二つ指定してあり End - Start > 0 であれば複数ページを抜き出す
# pdftkが実行できるようにしておくこと
import sys, subprocess
Args = sys.argv
Title = "Inkscape トレースとファイル出力" # エピソードのタイトル
DIR = "/media/keiko/WORKING/" # 作業フォルダのパス(USBメモリ)
# pdftkはUSBメモリにあるファイルが読めない?
# しょうがないからデスクトップに出力
# PDF, プレーンSVGの出力先
OutputDIR = "/home/keiko/デスクトップ/漫画ブックレット/"
SVG = "'" + DIR + Title + ".svg" + "'" # Inkscapeファイル名
PDF = OutputDIR + Title.replace(" ", "_") + ".pdf" # PDFファイル名
# SVGから印刷入稿用のPDFを作る
cmd = "inkscape --export-filename=" + PDF + " --export-text-to-path " + SVG
subprocess.run(cmd, shell=True)
# PDFからWeb表示用のプレーンSVGを作る
## 抜き出すページの指定
pgRange = range(1, 32)
if len(Args) == 1:
print("ページ番号を指定して下さい")
exit()
try:
if int(Args[1]) in pgRange:
Start = int(Args[1])
else:
print("開始ページは1〜32の範囲です")
exit()
except ValueError:
print("開始ページ番号を正しく指定して下さい")
exit()
if len(Args) >= 3: # 引数2のチェック
try:
if int(Args[2]) in pgRange or int(Args[2]) == 32:
End = int(Args[2])
else:
print("終わりページは1〜32の範囲です", int(Args[2]))
exit()
except ValueError:
print("終わりページ番号を正しく指定して下さい")
exit()
if (len(Args) >=3 and End - Start <= 0) or len(Args) == 2:
pgList = [Start]
else:
pgList = []
while Start <= End:
pgList.append(Start)
Start += 1
print("この範囲でページを抜き出します", pgList)
## 指定されたページ番号のプレーンSVGを作る
for i in pgList:
FileName = str(i).zfill(2)
cmd = "pdftk " + PDF + " cat " + str(i) + " output " + OutputDIR + "outTemp.pdf"
subprocess.run(cmd, shell=True)
cmd = "inkscape --export-filename=" + OutputDIR + FileName + \
".svg --export-plain-svg " + OutputDIR + "outTemp.pdf"
subprocess.run(cmd, shell=True)