(11)最近の投稿オブジェクトレイヤーオプションを制御。自慢話されまくって思ったこと。【InDesignCS3+javascript】link_auto_update.jsxタグ付きテキスト使ったのでメモ。スクリプトデーの勉強部屋行きます。最近のコメント索引作ろうとして目次機能の良さに気づいた。索引作ろうとして目次機能の良さに気づいた。結合セルのせいじゃなかった。http://twitter.comオブジェクトレイヤーオプションを制御。2010InDesignCS3で、aiデータのレイヤー表示非表示を試したのでメモします。お仕事で頼まれていたのですが、実際に使う事はなく試しただけだったので、今後の為に。通常は「オブジェクト」メニューから「オブジェクトレイヤーオプション」を選択して設定をするか、再リンクする際に「読み込みオプション」を表示させて設定することができます。UpdateLinkOptions.keepOverrides;こんな感じ。同じようなオブジェクトをなるべくひとつのイラレファイルだけでを扱いたい時等に使えるかも。レイヤー名も取得できるからレイヤー順がバラバラでも名前で判別できるかもしれないですねー。自慢話されまくって思ったこと。2010しばらくぶりの更新です。いっても、DTPは全く関係ないのですが...。面白い話をしようとしても、興味を惹かせようとしても、相手に対してボケ倒す行為が良いというわけがない。本当に面白くて吹き出してしまうものならともかく、流れ的に笑わなければならない物を連続して言われ続けると突っ込む側としては疲れる。ツッコミによってきちんとしたボケへと昇華させないといけない場合(「あなたは今面白い事を言いましたね」と相手に伝える、いわばヨイショしなければならないタイプのボケ)は本当に疲弊する。基本的にボケって、相手に「今俺おもしろいこと言ってるよ!」っていうことでしかなく、それをツッコミが立てているわけで、それはボケている人が気持ちいいだけであり、もうそれが作業的に形骸化しちゃうと、ある種自慢話をして悦に浸ることと何ら変わりがない。心地よいのは、ボケ合ってツッコミ合う形であろうと思う。ボケとツッコミで考える必要は全然なくて、要はお互いに言葉をやりとりするだけでいいんだけど。そこにはお互いに対するリスペクトが存在し、その話を面白い方向へと向かわせようとする意思が大変心地よい。ないにしても、話す方も聞く方も、相手が何を話したいのか、何を聞きたいのか、そういうのを少し考えて話をするだけで全然印象が違うと思うんだけどね。一方的に話すにしても、それまでにそういったやりとりがあれば、こちらも素直に聞き役に回れるし、それこそいつも聞いてくれる人ならば「いつも聞いてもらってるし、今日はしっかり話を聞こう」って思えるし。普段のやりとりがあるからできる、ツッコミなんだろうな、と思う。「対話」をしてくれる人であるのならば、流れ的に笑わなければならないものであっても、ツッコミによって昇華されるものであっても、全力で聞くよ!ノるよ!拾うよ!笑うよ!ツッコむよ!なんだかんだ言って会話って普通に楽しいしね!裏を返すと、自分もしょうもない出来事つらつら述べ倒すだけの時もあるので(しかも笑ってくれみたいなニュアンスで)ある意味自戒の意味を込めた文章なのでした。(まあ要はさ、俺だって話したいことがあるんだよ...スルーすんなよ...ってことだよ。それを素直に言えない自分にも責任はあるんだろうね。あとは、もしかしたら俺が相手の話に興味ないのかもな。興味ありゃ聞くもんなきっと。2009お久しぶりです。仕事用にスクリプトを書いたりしているのですが、あまりにニッチすぎたり、なんだか忍びなかったりして、アップしていませんでした。いうことしているとどんどん自分の中でブログ更新のハードルが上がって行くし、こういう事に対するモチベーションも下がる一方で全然良い事ないってことに気がついたので、今日は一つアップしてみます。何事もアウトプットですよね。複数のInDesignドキュメントに対して、同一のIllustratorやPhotoshopのファイルがリンクしてあるとします。そのリンクファイルに変更を加えた場合、複数のInDesignドキュメント側でリンクの更新を行わなければなりませんが、あまりに数が多い場合「開く」→「リンク更新」→「上書き保存」というのもそれなりにめんどくさい作業です。そこでリンクの更新作業を一気に行うスクリプトを作成しました。※ただし一つのフォルダに複数のInDesignドキュメントが格納してある場合に限ります/*複数のInDesignドキュメント上のリンクを更新して上書き保存するスクリプトスクリプトを実行し、InDesignドキュメントが保存されているフォルダを選択すると、フォルダ内のInDesignドキュメントのリンク更新をして上書き保存を行います。0){alert(”ドキュメントを閉じてください。(SaveOptions.yes);}}実務中に必要になって作ったものですが、このスクリプトの作成にあたってAdobeForumsの以下のディスカッションを参考にしました。リンクの自動修復ですので実質、質問者マコト01様と回答者市川せうぞー様のスクリプトを拝借させていただき、私はフォルダ指定を付け加えただけです。このように参考になるスクリプトをwebで見つけたということが、今回の久々のブログ更新のきっかけでもあります。いや、いつだってwebのスクリプトを参考にしてるんですが、改めてありがたいことだなと思ったのです。いろんな方のスクリプトを参考にしたり利用さしたりしているので、自分もニッチとか言ってないでこれからなるべくアップしていこうと思います。»タグ付きテキスト使ったのでメモ。2009InDesignにてカレンダーを作る関係で、タグ付きテキストを使ってみたので、作業に関するメモをしておきます。テンプレにタグ付きテキストを流し込むとてもスムーズに12ヵ月分のカレンダーが作れました。使ったけど、XMLよりもシンプルで分かりやすいなぁという印象。PHPは自分が変換する用なのでインターフェースも全然考えなくていいから超らくちん。そのPHPをかませる関係で「Unicode」で書出しをした。するとタグ付きテキストは「UTF-16LEのLF改行」で書き出される。miでUTF-8に変換してからPHPで照合させたんだけど、改めて「UTF-16LEのLF改行」に変換し直してからInDesignに読み込ませないと、きちんと流し込まれないので注意、と。タグ付きテキストと文字コードを参考にしました。»スクリプトデーの勉強部屋行きます。20097月25日は第14回DTPの勉強部屋が開催されますよー。DTPの勉強部屋まあいろんなDTP関係の方のブログにてお知らせされているので、今更うちで言う必要もないとは思うのですがw今回はスクリプトデーだそうで、僕はもう申し込みをすませてきました。一応懇親会の方も参加にしているので、いろんな方と情報共有できたら良いなあと思っています。そのためにも、今まで作業してて上手く行かなかったこととかリストアップしといたほうがいいのかな。なくても皆さんがいろいろと技術的な話をしているのを聞くのは楽しいので、当日参加される方はぜひぜひよろしくお願いします。(2009.06.29追記)都合により懇親会には参加できなくなりました><また次の機会を楽しみに、セミナーの方に集中しまくります。言って、当日は普通に会社の名刺を出しますので、ごく一部の方以外「ぶるげ」かどうかなんて分からないとは思いますが...。...他のブログにコメントしたりとか、掲示板で発言したりとかしてないので、それはそれでいいかな。ホントは僕だけじゃなくて、うちのチームの他の人にも参加してほしいんだけど、ミーティングで告知してみたら皆スクリプトって聞いただけで「ああそれはぶるげ君の専門分野だよね」的な空気に。別に書けるようにならなくていいから、どういう時に使えるかとか、そういうのを感覚として知って欲しいのに...。普段からもっとちゃんとそういうことをチームの皆に伝えきれてないのがいけないのかな、とも思う次第です。今回勉強部屋で聞いたことは報告書にただ書き連ねるだけじゃなくて、ちゃんと発表の場を設けて部署内にしっかりと伝えた方が良いのかもしれない。画像の存在しないXML属性を削除するスクリプト。2009前の投稿からずいぶんと時間が経ってしまいましたw今回、画像が配置されていないフレームにマップされているXML属性(href=”〜”)の部分を全て削除するスクリプトを作成したので公開してみます。ひとつ前の投稿は、InDesignでXML扱うのはデリケートですよねって話だったと思います。その作業中にちょっと躓いてしまいまして。以下のように画像をリンクしたファイルがあるじゃないですか。↑XMLの属性にもしっかりと画像のアドレス(href=”~”)が表示されている。「画像は消すけど、フレームと構造は残しておきたい」って時があるんです。XML的にはXML内の要素がからっぽってことで「ここには画像が入らなかった」という意味合いを持たせたいんですね。いう訳で、フレームから画像のみを削除するんですが...。属性の画像のアドレスは消えないんです。上は、1番3番はフレームから画像を消したものになっています。2番は画像が残ってます。構造パネルではどう表示されているかというと...1番はドキュメント上から画像は消えているのに「属性」の画像アドレスは残ったまま。2番は、構造パネルから「属性」の画像アドレスだけを消しててみたですが、ひとつ前のキャプチャを見ての通りアドレスがなくても画像は生きている。3番はこうなって欲しいっていう理想形。フレームから画像を削除、構造パネル上からも「属性」も削除、という風に2工程を踏んだものです。ドキュメント上から画像を消しても属性が残ったままだと何が怖いかって、XML書き出したものに消したはずの画像アドレスが残ってて、レイアウトで画像を入れていますよって判断されてしまうってことなんです。後からこのXMLを整形してCSVにし、テキスト納品する立場としては、使われていないはずの画像情報が存在しちゃうのは困ってしまう。画像を消すときは構造パネルから属性も削除するという作業を追加するのかと言えば、確実にひと手間増えるし、オペレータ的にはあまり構造パネルを直接いじるのはデリケートなものなので控えたい、と。組版作業ではフレームから画像を消すという作業だけを行ってもらい、構造パネル内の属性の削除は組版後に一気に自動でやってしまおう、ということでスクリプトを作成したわけです。/*画像が配置されていないフレームにマップされているXML属性(href=”〜”)の部分を全て削除するスクリプト※グループのオブジェクトは、1階層目のグループまでしか見ません。グループ内グループへの適用は不可。一浩さんの「組版時間を半減する!InDesign自動処理実例集」を参考にしました。グループ内のフレームを見に行くスクリプトはhttp://gyoniso.blogspot.com/2008/05/indesign_26.htmlを参考にしました。0){//ドキュメントが開かれているかの判定alert(”ドキュメントが開かれていません。(’画像の配置されていないXML属性(href=”〜”)の部分を全て削除します。grpObj[k].rectangles;XML2path(gObj);}}}pbarPanel.close();alert(”完了しました。”);}else{alert(”中止しました。pBar;}以下のような、画像は消したのにXML属性にアドレスが残っているファイル。これでXMLを書き出しても、存在しない画像アドレスは書き出されない、と。2009ここのところ、XMLを利用した組版作業をしています。お客様から支給される商品データCSVを、PHPを利用してXML形式変換し、あらかじめ内容はからっぽのダミーのXMLタグと連動させたレイアウトパターンを作っておいて、そこに変換したXMLを流し込むという作業です。この作業をする理由は、校了後に、レイアウト上の文字データを項目ごとに書き出して改めてCSVに戻す作業が発生するためです。組版中にバンバン内容の修正が入るので...。んというか、XMLと連動しているレイアウトデータは本当にデリケートですよね。造側のXMLがどんどん崩壊していったり、レイアウト画面からは消えてるのに、構造にはしっかり残っていたり、最終的にうまくCSVに戻せなくなる。分かってはいるけど、自分も含めて今まで絵だけを見て組版していたオペレータの人たちには余計に神経使わせているなぁとちょっと心苦しいです。商品データとかであるなら、先にデータベースを完璧にしといて、そこから出力したCSVを流し込みさえしちゃえば、後から戻すなんてことしなくてすむのにね。その事に関するこっちとお客様の双方のメリット的なものをもっと明示できないと、きっとこれからもこのままなんだろうなぁ。流し込みだけで見れば、あくまで現場での作業効率が上がるっていうメリットくらいのもんで、とりあえず印刷物が出来上がればいいと思ってるお客様からしてみれば、それに合わせて自分たちの作業フローを変えるなんてことはしないですよねきっと。(しかしまあ、最後にレイアウトデータから商品テキストを抽出してまとめるって作業を、サービスみたいに扱う営業ってなんなんだろう...。同じ内容のものをもう一個作るのと同じくらいの労力あるっていうのに。)でも、XMLが流し込めるのは便利と言えば便利ではある。形さえしっかり決めちゃえば、上から上から流し込めるのですごい楽。商品データが後追いで来ても、あらかじめ入ってくるのが分かっていればタグつきフレーム作ってとりあえずダミー入れとけば、あとからXML流し込むだけでデータが更新できちゃうもんね。問題はXMLにはページの概念がないので、流し込んだ順に生成されちゃうってことだけど、まあこれはキーになる管理NOみたいなものを、XMLにも商品CSVにもたせておくことで解決するでしょう。【InDesignCS3+javascript】日本特有の処理に関して。2009とっても今更なのかもしれないけど、自分用メモだからいいよね。InDesignをJavaScriptで制御(3)禁則処理とか文字組アキ量設定とか、日本版特有の機能をjavascriptで制御しようにもリファレンスに載ってなかったりして、なかなかうまく行きません。調べていると、同じように調べておられる方がみえたのでメモさせて頂きました。kinsokuSetとかmojikumiとかなんかそのまんまと言えばそのまんまだけど...こういうのってオブジェクトモデル見て頑張って見つけるしかないんだよね?がんばろん。2009以前うpしてみた、InDesignにリンクしてあるEPSを同じ名前のPSDとAIに再リンクするスクリプト。CS4ではフォルダに再リンクすることができるようになって、このスクリプトもあまり寿命は長くないのかもしれないですが、今まで使う中で少しエラーとかも出ていたので、修正したものを改めて晒してみたいと思います。修正点は・ページアイテムがEPSではないImage画像を読み取るとエラーで止まるので回避。・拡張子のないEPSも再リンクできるようにした。(つまりファイル名が一緒であればEPSでなくても問答無用)の2点です。相変わらず日本語ファイル名は処理できません。/*EPSデータを同じ名前のPSD,AIに再リンクするスクリプト使い方:再リンクするデータをひとつのフォルダに集めておき、InDesignドキュメントを開いてからスクリプトを実行してください。再リンクするデータのあるフォルダを指定すると、そこからEPSと同じ名前のPSDとAIを探し出してリンクをし直します。再リンクできなかったファイルがある場合はアラートが出ます。注意:Mac専用、日本語のファイル名ではうまく動作しない場合があります。このスクリプトで何か異常が起こっても責任は負いかねます。0){//ドキュメントが開かれているかの判定alert(”ドキュメントが開かれていません。aName[0];}if(aNameObj==nameObj){try{pageObj[i].allGraphics[j].place(aiList[l]);}catch(e){alert(an+”:”+e);}}}}}}}}alert(”完了しました。linksこっちの方が便利ですよw(上の晒し台無しw)市川せうぞーさんがブログで紹介されていたもので、日本語のファイル名もきちんと再リンクしてくれます。指定したフォルダの下層フォルダにも同じ名前のファイル(旧EPSとか)を退避させたりしていると、そっちに再リンクしたりするので、旧ファイルは全く別の場所に退避させたほうがいいかもしれません。このスクリプト、僕の環境では日本語ファイル名は再リンクするのに英文ファイル名を再リンクしないことが多々有りまして。自分で書いたスクリプトも併用、みたいな感じになってます。今回拡張子無しも再リンクするようにしたので、二つを使うことで、うまく作業を完結できてるのかな。2009久しぶりにスクリプトあげてみます。ブツ切れテキストを結合するスクリプト。IllustoratorCS3用です。CADデータや、エクセル等から作ったPDFや、昔の環境で作成したPDFをIllustoratorで開いて作業しないといけない場合がありますよね?無かったらここでこの話はおしまいwそういった際に、図面は問題なく編集できても、テキストがブツ切れ状態でとってもめんどくさいことがあります。」というテキストがあった場合「も」「やし」「ま」「つり」「。」という具合に切れる。)これはオブジェクトの順番さえきちんと整っていれば、そのバラけたテキストを選択してコピーし、改めてテキストツールでペーストしてやると結合されます。↓ちなみに、そのコピペでの結合方法@DTP駆け込み寺過去ログ様http://bbs.ddc.co.jp/mt/dtpbbs/archives/_20040205021443.htmlただ、細々したテキストが沢山あった場合にコピペし続けるのもめんどくさいです。そこで今回は結合したいブツ切れテキストを結合してくれるスクリプトを作成してみました。ここまで書いて、なんかそういえばこういうのあったぞ?と不安になってぐぐってみたらひゃー!イラレで便利の倉田タカシさんが作ってたー!!http://d-p.2-d.jp/ai-js/pages/01_scripts/text/index.html#12_text_joint_char「テキスト連結(たてバラ・よこバラ)」CS2用のスクリプトを、うちのCS3&MaxOSX環境で試してみたところ、問題なく動きました。これ使えば解決ですwただ、一応勉強がてら書いてみたのでのっけてみまーす。おかしいところとかあれば指摘いただけると嬉しいですし...。「テキスト連結(たてバラ・よこバラ)」と違うのはグループ化しい点です。グループ化するメリットがあるはずなので、スクリプト読まなきゃ。改行とかは全然考えてないので、横一行のみ有効です。縦も一応試してみたんだけど、いずれもデータ上の書き込み順に並ぶ感じです。文頭の書体に統一されます。途中で違う書体が使われていたとしても文頭の書体に置き換わってしまうので気をつけてください。詰めもめちゃめちゃになるかも。IllustratorCS3このスクリプトで何か異常が起こっても責任は負いかねます。“TextFrame”){alert(”テキストオブジェクトを二つ以上選択してください。「”+selList[i].typename+”」が含まれています。selList[sel.length-1].contents+selList[j].contents;selList[j].remove();}}}else{alert(”テキストオブジェクトを二つ以上選択してください。”);}}else{alert(”ドキュメントが開かれていません。