😀
ReceiptLineをCLIでSVG変換
レシート記述言語ReceiptLineはnpmで提供されている。
マクドナルドのレシートを再現した際に、「ビジュアルエディタでなくコマンドラインから簡単に実行したいな」と思ったのでコマンドrltosvg
を書いた。(GitHubはこちら)
実装
rltosvg
#!/usr/bin/node
// $ npm -g install receiptline
// $ ./rltosvg <cpl int> <encoding> <import filepath> <export filepath>
const usage = './rltosvg <cpl int> <encoding> <import filepath> <export filepath>';
// print args
// console.log(process.argv);
const args = process.argv;
if (args.length !== 6) throw `Err: ${usage}`;
// read lib
const receiptline = require('receiptline');
const fs = require('fs');
// configrate
const option = {
cpl: parseInt(args[2]),
encoding: args[3],
upsideDown: false,
gamma: 1.8,
command: 'svg'
};
// import
const input = fs.readFileSync(args[4], 'utf8').toString();
// compile
const data = receiptline.transform(input, option);
// export
fs.writeFile(args[5], data, {flag: 'w'}, (err) => {
if (err) throw err + "\nErr: export";
console.log('Success.');
});
実行例
ハマりどころは、エンコードを日本語を含んだときはcp932
、英語のみならcp437
にするところ
./rltosvg 48 cp932 code.rl out.svg
問題点
この方式だと、現時点でbase64画像が表示できない
解決方法募集中です
v1.0.2
で修正済み
Discussion