今回は、前回の改良版とも言えるスクリプトです。今回は行単位で色を変えるだけでなく、タブで区切られた文字ごとに四角形を描いて、そこに文字を配置します。単純に言えば、エクセルで作ったデータを表組にしますよ、ということです。やり方は、エクセルで表をコピーしテキストファイルとして保存します。あとは配置したいドキュメントを作成するか、開いてからスクリプトを実行します。
色の変更方法は前回と同様です。セルの横幅は
stepX = 100; // 100pt、横の間隔
の100の数値を変えてください。単位はポイントになっています。文字数に応じて自動的に調整することも一応可能です。縦幅は
stepY = 15; // 15pt;
の15の数値を変えます。若干文字の横位置を調整したい場合には
newText(aWord[i], tx+i*stepX+3, ty);
の+3の値を変えます。縦の位置を調整する場合にはtyをty+2のように変えてください。
【スクリプト】
TAB = String.fromCharCode(9);
colorList = [
defColor(100,0,0,0),
defColor(100,20,0,0),
defColor(50,0,50,0),
defColor(10,0,100,0)
];
filename = File.openDialog("読み込むテキストファイルを指定してください");
if (filename)
{
tx = 10; // 表示開始X座標
ty = 800; // 表示開始Y座標
stepX = 100; // 100pt、横の間隔
stepY = 15; // 15pt;
fileObj = new File(filename);
flag = fileObj.open("r");
if (flag == true)
{
count = 0;
while(!fileObj.eof)
{
text = fileObj.readln();
n = count % colorList.length;
aWord = text.split(TAB);
for (i=0; i< aWord.length; i++)
{
drawRect(tx+i*stepX, ty, stepX, 15, colorList[n]);
newText(aWord[i], tx+i*stepX+3, ty);
}
count++;
ty -= stepY;
}
fileObj.close();
}else{
alert("ファイルが開けませんでした");
}
}
function newText(txt, x, y)
{
var textObj = activeDocument.textFrames.add();
textObj.contents = txt;
if (txt) textObj.paragraphs[0].size = 9; // 9pt
textObj.translate(x,y);
}
function drawRect(x,y,w,h, col)
{
var pObj = activeDocument.pathItems.rectangle(y+h-3,x,w,h);
pObj.filled = false; // 塗りなし
pObj.stroked = true; // 線あり
pObj.strokeWidth = 0.25; // 線幅0.25ポイント
pObj.fillColor = col; // 塗りの色をスォッチに指定
}
function defColor(c,m,y,k)
{
var colObj = new CMYKColor();
colObj.cyan = c;
colObj.magenta = m;
colObj.yellow = y;
colObj.black = k;
return colObj;
}
【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/
>
横方向も色を交互に変えたりすることもできますが、これは次回。
ハイビジョン映像素材追加しすぎて、ちょっとサーバーが重くなってしまいました。GoogleのVideo Footageというキーワードでの検索ランクが104→12になったせいかもしれません。年内には5,000素材まで増やしたいところです。
< http://www.openspc2.org/HDTV/
>
それから、JavaScriptでHTML、CSS、JavaScriptファイル(コード)を分離したサンプルを多数用意したページを作りました。よろしければ参考にしてください。
< http://www.openspc2.org/reibun/JavaScript_technique/
>
stepX = 100; // 100pt、横の間隔
の100の数値を変えてください。単位はポイントになっています。文字数に応じて自動的に調整することも一応可能です。縦幅は
stepY = 15; // 15pt;
の15の数値を変えます。若干文字の横位置を調整したい場合には
newText(aWord[i], tx+i*stepX+3, ty);
の+3の値を変えます。縦の位置を調整する場合にはtyをty+2のように変えてください。
【スクリプト】
TAB = String.fromCharCode(9);
colorList = [
defColor(100,0,0,0),
defColor(100,20,0,0),
defColor(50,0,50,0),
defColor(10,0,100,0)
];
filename = File.openDialog("読み込むテキストファイルを指定してください");
if (filename)
{
tx = 10; // 表示開始X座標
ty = 800; // 表示開始Y座標
stepX = 100; // 100pt、横の間隔
stepY = 15; // 15pt;
fileObj = new File(filename);
flag = fileObj.open("r");
if (flag == true)
{
count = 0;
while(!fileObj.eof)
{
text = fileObj.readln();
n = count % colorList.length;
aWord = text.split(TAB);
for (i=0; i< aWord.length; i++)
{
drawRect(tx+i*stepX, ty, stepX, 15, colorList[n]);
newText(aWord[i], tx+i*stepX+3, ty);
}
count++;
ty -= stepY;
}
fileObj.close();
}else{
alert("ファイルが開けませんでした");
}
}
function newText(txt, x, y)
{
var textObj = activeDocument.textFrames.add();
textObj.contents = txt;
if (txt) textObj.paragraphs[0].size = 9; // 9pt
textObj.translate(x,y);
}
function drawRect(x,y,w,h, col)
{
var pObj = activeDocument.pathItems.rectangle(y+h-3,x,w,h);
pObj.filled = false; // 塗りなし
pObj.stroked = true; // 線あり
pObj.strokeWidth = 0.25; // 線幅0.25ポイント
pObj.fillColor = col; // 塗りの色をスォッチに指定
}
function defColor(c,m,y,k)
{
var colObj = new CMYKColor();
colObj.cyan = c;
colObj.magenta = m;
colObj.yellow = y;
colObj.black = k;
return colObj;
}
【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/
>
横方向も色を交互に変えたりすることもできますが、これは次回。
ハイビジョン映像素材追加しすぎて、ちょっとサーバーが重くなってしまいました。GoogleのVideo Footageというキーワードでの検索ランクが104→12になったせいかもしれません。年内には5,000素材まで増やしたいところです。
< http://www.openspc2.org/HDTV/
>
それから、JavaScriptでHTML、CSS、JavaScriptファイル(コード)を分離したサンプルを多数用意したページを作りました。よろしければ参考にしてください。
< http://www.openspc2.org/reibun/JavaScript_technique/
>
- 改訂第4版 JavaScript ポケットリファレンス
- 古籏 一浩
- 技術評論社 2006-10-18
- おすすめ平均
- JavaScript仮免者以上の方へ
- バランスの良いバイブル
- 中級者向けです。
by G-Tools , 2007/03/05