終了

illustratorの変数で差込印刷(複数件ある)の方法を教えてください

New Here ,
Nov 18, 2020 Nov 18, 2020

添付の画像のように、

複数面付けをし、CSV等で作成したファイルを

読み込ませて、一気に4人分の情報を差し込むことは

illustratorの機能のみで可能でしょうか。

さらに、次の5人目から8人目、9人目から12人目・・・と

データセットが作られるとありがたいです。

はがきの宛名印字のように、

1名ずつのデータをPDFにして保存することには成功しましたが、

複数人を一気に1枚の紙に印刷し、最後紙を断裁する作業をしたいです

(印刷費用を抑えるため)

お知恵をお貸しください😭

スクリーンショット 2020-11-18 22.50.30.png

キーワード
スクリプティング , パフォーマンス
9.4K
翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
Nov 18, 2020 Nov 18, 2020

illustratorよりもこのような場合は、InDesignの出番ということでしょうか•••

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Nov 18, 2020 Nov 18, 2020

Illustratorでもデータ駆動によるバリアブル処理はできますが、InDesignのデータ結合のほうが簡単だと思います。

 

ただ一定以上のボリュームかつ定期であるなら、業務用バリアブルソフトのほうが簡単なことや高速出力ができる、といったこともあるので、場合によってはそのような観点でも考えたほうがいいかもしれません。

(串刺し面付まである場合、そのほうが確実に楽でもあるためです)

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
Nov 21, 2020 Nov 21, 2020

回答いただき、ありがとうございます🙇‍:オス:

正におっしゃる通りで、

串刺しが簡単にできないため、

発行番号がある仕事は後から印刷機で刷り込んでる状態です。

ただここで質問したおかげで、

貴重な意見を得ることができましたので、上司に相談したいと思います。

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Nov 18, 2020 Nov 18, 2020
まあ、せっかくIllustratorのボードにスクリプトタグ付きで投稿されているのでちょっと見てみましょうか(^-^;
宛名シール的なものなのですが、以下のように18丁つけられている台紙データが用意されています。
スクリーンショット 2020-11-19 8.35.36.png
各ラベルにはテキストフレームが一つ設けられダミーのテキスト(数字の部分)が挿入されている状態です。このドキュメントをデスクトップに置いておきます。そして、この中のテキストフレームをスクリプトでループしながら差し替えていきます。
今回元となるデータはJSONです
[{"address":{"zipcode":"000-0000","address1":"住所","adress2":"建物名称","name":"氏名"}},
{"address":{"zipcode":"000-0000","address1":"住所","adress2":"建物名称","name":"氏名"}},
{"address":{"zipcode":"000-0000","address1":"住所","adress2":"建物名称","name":"氏名"}},
...]
このような構成となっています。
これがファイルとして保存されている状態で
以下のスクリプトを実行します。
 
var jsn = File.openDialog("");
if (jsn.open('r'))
{
var tx = jsn.read();
eval("var  obj = " + tx);
f.close();
makeLabel(obj);
}

function makeLabel(obj)
{
var f = new File("~/Desktop/labelBase.ai");
var fn = "label";
var dc = open(new File(f));
var n = 0;
var i, zp;
var tx = "";
while (obj.length>0)
{
for (i=0;i<18;i++) 
{
obj[0].address.zipcode.match(/(\d{3})-?(\d{4})/);
zp = "〒" +  RegExp.$1 + "-" + RegExp.$2;
dc.textFrames[i].lines[7].characters[5].contents = obj[0].order_id;
dc.textFrames[i].lines[4].characters[0].contents = obj[0].address.name;
dc.textFrames[i].lines[2].characters[0].contents = obj[0].address.address2;
dc.textFrames[i].lines[1].characters[0].contents = obj[0].address.address1; 
dc.textFrames[i].lines[0].characters[0].contents = zp;
obj.shift();
if (obj.length==0) break;
}
dc.saveAs(new File("~/Desktop/" + fn + n + ".ai"));
dc.close();
if(obj.length>0) 
{
n++;
dc = open(new File(f));
}
}
}
 
ここでは1シート1ファイル構成で処理していますが、ループをアートボード毎にしてやると1ファイルで完結するようにも出来ます。
JSONの場合はevalを利用してパースしてしまうのが簡便ですが、CSVなどだと改行及びタブ等でデータを区切る処理が必要になります。
ここに挙げたスクリプトはベーシックな構成ですから簡単に改変出来るかと思います。
また、Webで検索してみると、もっと高機能で利用しやすいスクリプトが配布されていたりします。
翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
Nov 21, 2020 Nov 21, 2020
最新

回答いただき、ありがとうございます🙇‍:オス:

理想の形、そのものな投稿をいただきとても感謝しております。

今回に限っては、少ない件数だったので一件ずつ、バッチ処理でPDFを連結させ作成し出力をしましたが、

回答を参照しつつ、次回に備えたいと思います!(スクリプト自体の勉強のきっかけになりました)

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines