มีโจทย์คือ ให้สร้างบัตรแบบเรียงเลขที่ ตั้งแต่ ๑ จนถึง ๕๐๐
ตัดสินใจใช้
bash + inkscape
เพราะง่ายดี
โดยสมมุติว่าเราได้สร้างเอกสารเป็นไฟล์ inkscape ไว้แล้ว โดยให้ตัวเลขที่จะเรียงให้มีค่าเป็น
XXXX
เพื่อให้สะดวกในการใช้คำสั่ง
grep
โค๊ดที่สร้างขึ้น ทำแบบง่าย ๆ คือรันตัวเลขตั้งแต่ 1-500 แต่รุ่นนี้เป็นรุ่นทดสอบ ทำแค่ 1-10 พอ ขั้นตอนคือ
- แปลงตัวเลขเป็นเลขไทย ด้วยคำสั่ง
awk
- นำไปแทนที่ในไฟล์ inkscape แล้วทำออกมาเป็นไฟล์ใหม่ ด้วยคำสั่ง
sed
- แล้วสั่งส่งออกมาเป็นไฟล์นามสกุล
png
ด้วยคำสั่งแบบบรรทัดคำสั่งของ inkscape
เอง ด้วยพารามิเตอร์ -e
โค๊ดมีดังนี้
$ vi runcard
#!/bin/bash
FILE='card.svg'
QUAN=10
MARKER='XXXX'
for i in $(seq 1 $QUAN); do
TNUM=`echo $i | awk '{ gsub ("0","๐"); gsub ("1","๑"); gsub ("2","๒"); gsub ("3","๓"); gsub ("4","๔"); gsub ("5","๕"); gsub ("6","๖"); gsub ("7","๗"); gsub ("8","๘"); gsub ("9","๙"); print }'`
sed -e "s/$MARKER/$TNUM/g" $FILE > tmp.svg
inkscape -d 300 -e tmp$i.png tmp.svg
done
$ chmod 755 runcard
เวลาใช้งานก็สั่งรันชื่อไฟล์
runcard
เฉย ๆ จะได้ไฟล์ tmp1.png จนถึง tmp10.png ก็สามารถนำไฟล์เหล่านี้ไปพิมพ์งานได้ตามต้องการ