Translation:Workflow customizations

From IDMLWiki

Jump to: navigation, search

ワークフローのカスタマイズ

IDMLの読み込み/書き出しによるカスタムデータのラウンドトリップ

ソリューション
スクリプティングで強化したスクリプトラベル機能を使う。

IDMLの読み込みと書き出しでデータをラウンドトリップさせたいとき、任意のエレメントと属性を、意図的に追加することはできません。認識されないコンテンツはなくなり、IDML読み込み時に削除されてしまいます。Adobe Creative Suite 4では、2つの方法があります。1つめは、プラグインを作成し、データにスクリプティングシステムを追加する方法です。これはかなりの労力が要るので、次のオプションをお勧めします。スクリプトラベル機能を使う方法です。

スクリプトラベルは、テキストを任意のブロックでスクリプト対象にすることができます。UIではテキストのブロックを1つしか対照にできないので、スクリプトラベルはより強力です。スクリプティングとIDMLで、キーと値の組を追加できます。UIでは、ラベルキーに相当する値しか使用できません。

  1. <Label>
  2. <KeyValuePair Key="FirstLabel" Value="First label."/>
  3. <KeyValuePair Key="SecondLabel" Value="Second label."/>
  4. <KeyValuePair Key="ThirdLabel" Value="Third label."/>
  5. <KeyValuePair Key="Label" Value="This shows up in the UI."/>
  6. </Label>

スクリプトラベルはスクリプティングで使用できます。例えば、次のJavaScriptでFirstLabelキーの値を得ます。

  1. app.documents[0].textFrames[0].extractLabel("FirstLabel");

次のスクリプトは、キーと値の組を挿入します。

  1. app.documents[0].textFrames[0].insertLabel(
  2.   "TestLabel", "Second label. Will this make the round trip?"
  3.   );

IDML書き出し時にストーリー、スプレッドおよびマスタースプレッドのファイル名をコントロールする

ソリューション
スクリプティングとidmlComponentNameプロパティで書き出すファイルをファイル名で指定する。このプロパティの設定で、拡張子.xmlファイルのファイル名の一部をコントロールする。

例えば、次のコードではMyStory.xmlという名前のストーリーファイルを作っています。

  1. myStory.idmlComponentName = "MyStory";
ディスカッション
IDML書き出しでは、最終的にオブジェクトタイプとInDesignデータベースのUID(ユニークID)に基づいた独自の命名規則で、ストーリーとスプレッドのファイル名を作成します。これらのファイル名は、オブジェクトが同じUIDを持ち続けられないため、読み込みと再書き出し時に変更されてしまいます。

C++の場合、このデータへは次のBossクラスのIIDMLComponentNameインターフェースでアクセスできます。

  • kTextStoryBoss
  • kSpreadBoss
  • kMasterPageBoss

データを変更するには、kSetIDMLComponentNameCmdBossを使います。

Note:読み込まれたストーリーファイルが非標準的な名前だと、IDML読み込みはidmlComponentNameプロパティを設定します。

Personal tools