タグ別アーカイブ: CSV

イラストレーターでCSVを読みこんで面付けする。

イラストレーターで同じデザインのものに

複数のデータを載せないといけないことがあります。

名刺とか、郵便用の宛名ラベルとか、名札とか…

 

まあそういう場合専用のソフトをつかえばよいのでしょうが

使い慣れたイラレでやりたいという人もいると思います。

 

それでも、10件~20件くらいのデータなら

手で直接コピペすればよいのでしょうが、

100件、200件となるとこれはもう確実に地獄のフタが開きます。

そこで、javascriptを使ってイラレにCSVのデータを読み込ませ

レイアウトさせてみたいと思います。

 

まずjavascriptはこんなカンジに書きます。

var embedder = (function () {

var klass = function (file, mapping) {
this.file = file;
this.inputNewLine = String.fromCharCode(10);
this.lines = [];
this.mapping = mapping;
this.groups = activeDocument.groupItems;
};

klass.prototype.readCSVFile = function () {
var file = new File(this.file);
if (!file.open('r', '', '')) return;

var text = file.read();
var lines = text.split(this.inputNewLine).reverse();
for (var i = 0; i < lines.length; i++) {
if (!lines[i]) continue; // 空行は除く
this.lines.push(lines[i].split(','));
}
file.close();
};
klass.prototype.embedText = function () {
this.readCSVFile();

for (var i = 0; i < this.groups.length; i++) {
var textFrames = this.groups[i].textFrames;

for (var j = 0; j < textFrames.length; j++) {
var field = this.mapping[textFrames[j].contents];
textFrames[j].contents = this.lines[i][field];
}
}
}

return klass;
})();

(function () {
var file = File.openDialog("CSVファイルを選択してください");
if (!file) return;

var e = new embedder(file, {
'名前': 0,
'役職': 1,
'会社名': 2
});
e.embedText();
})();

これを拡張子「.jsx」で保存します。

ここでは「版組み.jsx」とします。

hangumi1

イラレを立ち上げ、新規ドキュメントで上のように

ファイルを作ります。

サイズはA4で、アートボードは3枚作ります。

hangumi2

名刺サイズの91mm、55mmで

長方形を描きます。

hangumi3

その長方形の枠内に

会社名、役職、名前というテキストを打ちます。

この名前がjavascriptファイルと対応してるわけです。

hangumi4

3枚のアートボードに↑こんなカンジで面付けします。

 

次に、エクセルで↓のようなファイルを作ります。

hangumi9

形式はCSVで保存します。

hangumi5

イラレに戻って、ファイル→新規→スクリプト→その他のスクリプト

を選びます。

hangumi6

さきほどの版組み.jsxを開きます。

hangumi7

するとこんな画面が開きますので

エクセルで作ったCSVを選択します。

hangumi10

そうすると名前、役職、会社名としていたところが

CSVのデータに入れ替わります。

※文字数が多くてはみでているところは直さないといけませんが。

 

なお、javascriptの青字の部分を書き換えれば

もっとデータ数を増やすことができます。