JessyInk でトランジション効果を使う
環境は Windows 7 Home Premium + Inkscape 0.48.2。
スライド名に日本語を使うと、トランジションの設定で文字コード関係のエラーが起きる。
エラーメッセージ:
Traceback (most recent call last): File "jessyInk_transitions.py", line 74, in <module> effect.affect() File "C:\Program Files (x86)\Inkscape\share\extensions\inkex.py", line 215, in affect self.effect() File "jessyInk_transitions.py", line 53, in effect nodes = self.document.xpath(unicode("//*[@inkscape:groupmode='layer' and @inkscape:label='" + self.options.layerName + "']", 'utf-8'), namespaces=inkex.NSS) UnicodeDecodeError: 'utf8' codec can't decode byte 0x81 in position 53: unexpected code byte
self.options.layerName が Shift_JIS で入っているようで、これを utf-8 に変えないといけない。そのため Shift_JIS → unicode → utf-8 という変換をする。unicode というのは Python の変数の型。
具体的には、Inkscape\share\extensions\jessyInk_transitions.py の 53 行目
self.options.layerName
を
self.options.layerName.decode('Shift_JIS').encode('utf-8')
と変える。.decode('Shift_JIS') で unicode に変わり、.encode('utf-8') で utf-8 に変わる。これをこの後 unicode 型に変換しているんだから……もっとシンプルなコードにできそうだけど、まあいいや。