3.4.3 レンディションのプロパティ

マルチレンディションの各レンディションは,プロパティを設定して管理できます。

レンディションに設定されているプロパティは,次の4種類です。

なお,レンディションのプロパティとしてユーザ定義プロパティは設定できません。

ここでは,次の図に示すようなレンディションのプロパティの管理例を使用して,それぞれのプロパティについて説明します。

図3-21 レンディションのプロパティの管理例

[図データ]

<この項の構成>
(1) レンディションタイプを表すプロパティ(dbrProp_RenditionTypeプロパティ)
(2) ファイル名を表すプロパティ(dbrProp_RetrievalNameプロパティ)
(3) レンディションの更新状態を表すプロパティ(dbrProp_RenditionStatusプロパティ)
(4) dbrProp_RenditionStatusプロパティとメソッドの関係
(5) レンディションのコンテント種別を表すプロパティ(dbrProp_ContentTypeプロパティ)

(1) レンディションタイプを表すプロパティ(dbrProp_RenditionTypeプロパティ)

図3-21の例では,「図A」というバージョンなし文書のマスタレンディションとサブレンディションに,同じGIF形式でも異なる解像度(マスタレンディションは600dpi,サブレンディションは300dpi)で保存した文書ファイルを登録しています。マルチレンディション管理では,同じレンディションタイプを重複して登録できません。しかし,例えば,MIME名でレンディションタイプを統一している場合,"MIME::タイプ/サブタイプ ( コメント )"の形式でレンディションタイプを指定できるため,同じ拡張子のファイルでもレンディションタイプを重複させないで登録できます。この例の場合,"MIME::image/gif ( 600 )"および"MIME::image/gif ( 300 )"のように,コメントまで指定したレンディションタイプを設定して二つのGIF形式のレンディションを登録しています。

レンディションタイプは,文書の新規作成時や文書ファイルの更新時またはレンディションの追加時に指定します。このとき,レンディションタイプの指定を省略すると,レンディションタイプは設定されません。ファイルの拡張子から判断されて設定されることはありません。したがって,文書の新規作成時または更新時には,適切なレンディションタイプを設定してください。この例のように拡張子が同じでもファイルの保存状態などによって別々のレンディションに登録したい場合は,ファイルの拡張子だけでなく,コメントまで指定したレンディションタイプを明示的に指定してください。

マスタレンディションのレンディションタイプの値は,文書(バージョンなし文書またはバージョン付き文書)の新規作成時または文書ファイルの更新時に,文書のdbrProp_RenditionTypeプロパティの値として設定されます。したがって,文書のdbrProp_RenditionTypeプロパティをGetPropertyValuesメソッドまたはGetPropertyValuesAndLockメソッドで取得すると,マスタレンディションのレンディションタイプの値が取得されます。

また,UpdateContentAndRenditionTypeメソッドで,引数に変更前のレンディションタイプを指定しない形式を使用した場合は,マスタレンディションのレンディションタイプの値が更新されます。引数に変更前のレンディションタイプを指定する形式を使用した場合,指定したレンディションタイプを持つマスタレンディションまたはサブレンディションのレンディションタイプの値が更新されます。

サブレンディションのレンディションタイプは,GetRenditionListAndLockメソッドまたはGetRenditionListメソッドでレンディション一覧を取得する時にだけ取得できます。GetPropertyValuesAndLockメソッドまたはGetPropertyValuesメソッドや検索結果一覧の情報としては取得できません。

次に,レンディションタイプの指定方法について説明します。

レンディションタイプの指定方法
レンディションタイプは,レンディションのコンテントの形式を表すプロパティです。このプロパティの値によって,それぞれのレンディションを識別します。このため,マルチレンディション文書の各レンディションのレンディションタイプは,一意である必要があります。
レンディションタイプには任意の文字列を指定できます。レンディションタイプは,パラメタやコメントおよびその間に含まれる区切り記号や空白,大文字・小文字の違いなども含めて区別されます。レンディションタイプには,MIME名を使用することをお勧めします。
なお,CreateObjectメソッドやUpdateContentメソッドなどで全文検索インデクスを作成する場合には,レンディションタイプは「MIME:text/」で始まる値にしてください。
ここでは,MIME名の推奨形式について説明します。
 

MIME::タイプ/サブタイプ△〔;△パラメタ△〔;△パラメタ△〕…〕〔△(コメント群)〔△(コメント群)〕…〕
 
パラメタ ::= 属性 "=" 値
コメント群 ::= コメント | (コメント群)

タイプ,サブタイプおよび属性に指定できる文字
タイプ,サブタイプおよびパラメタの属性を指定するときは,ASCII-7Bitの文字のうち,次の文字を除いた文字を使用して指定してください。
( ) < > @ , ; : ¥ " / [ ] / = および0x1F以下の値
属性の値に指定できる文字
パラメタの属性の値を指定するときは,属性と同じ形式の文字列を指定するかまたはASCII-7Bitの文字のうち,次の文字を除いた文字を使用して指定してください。
( ) < > @ , ; : " / [ ] / = および0x1F以下の値
CRのあとには必ずLFを指定してください。
コメント
コメントを指定するときは,ASCII-7Bit文字列で指定してください。ただし,"(" ")" を指定する場合は,"¥"を直前に指定してエスケープしてください。値として"¥"を指定したい場合は"¥¥"と指定します("¥"は次に指定した文字が構文上の区切りでないことを示すために使用します。すなわち,"¥"の次に指定した文字は,そのままのデータとして扱われます)。CRのあとには必ずLFを指定してください。
△は空白(0x20)0個以上です。

(2) ファイル名を表すプロパティ(dbrProp_RetrievalNameプロパティ)

各レンディションには,ファイル名を表すdbrProp_RetrievalNameプロパティを設定できます。dbrProp_RetrievalNameプロパティは,文書の新規作成時や文書ファイルの更新時またはレンディションの追加時に,指定した文書ファイルのファイル名が設定されます。図3-21の例ではマスタレンディションにはzuA600.gif,サブレンディションにはzuA300.gifという値が設定されています。また,dbrProp_RetrievalNameプロパティの値は,登録済みの各レンディションのレンディションタイプを指定してPutRenditionPropertyValuesメソッドで設定・更新できます。マスタレンディションのdbrProp_RetrievalNameプロパティは,PutPropertyValuesメソッドでも設定できます。GetPropertyValuesメソッドや検索結果として取得するプロパティとしてdbrProp_RetrievalNameプロパティを指定すると,マスタレンディションのdbrProp_RetrievalNameプロパティの値が取得されます。ただし,dbrProp_RetrievalNameプロパティは,属性検索の条件としては指定できません(例えば,「マスタレンディションの文書ファイルのファイル名が"zuA600.gif"である文書を検索する」のように指定できません)。サブレンディションのdbrProp_RetrievalNameプロパティの値は,GetRenditionListAndLockメソッドまたはGetRenditionListメソッドでレンディション一覧を取得する時にだけ取得できます。

(3) レンディションの更新状態を表すプロパティ(dbrProp_RenditionStatusプロパティ)

マルチレンディション管理機能は,同じ内容を持つ複数のファイル形式を一つの文書として管理する機能です。このため,マスタレンディションとサブレンディションは,常に同じ内容にしておく必要があります。マスタレンディションのコンテントを更新した場合には,サブレンディションのコンテントも更新する必要があります。

マスタレンディションに対するサブレンディションの更新状態は,CdbrDocumentクラスのプロパティであるdbrProp_RenditionStatusプロパティによって表されます。このプロパティは,Integer32型の4バイトの値として表されます。上位2バイトと下位2バイトで,それぞれ意味を持ちます。

サブレンディションの更新状態は,dbrProp_RenditionStatusプロパティの下位2バイトで確認できます。下位2バイトによって表される内容を状態フラグといいます。この値は,マスタレンディションまたはサブレンディションのコンテントを更新した時に,DocumentBrokerによって設定されます。

サブレンディションのコンテントをDocumentBroker Rendering Optionのレンディション変換機能を使用して作成,登録するかどうかの設定は,dbrProp_RenditionStatusプロパティの上位2バイトで表されます。また,レンディション変換でエラーが発生したことを示す値も,上位2バイトの値として設定されます。上位2バイトによって表される内容を変換フラグといいます。なお,変換フラグは,DocumentBroker Rendering Optionを使用しない場合は使用しません。

マスタレンディションの場合,dbrProp_RenditionStatusプロパティの値は常に「DBR_RENDSTATUS_MASTERREND」(00000000:4バイトの16進数)です。

次に,サブレンディションの状態フラグと変換フラグについて説明します。

(a) 状態フラグ

状態フラグは,dbrProp_RenditionStatusプロパティの下位2バイトの値として設定されます。この値はDocumentBrokerによって設定されます。

サブレンディションのdbrProp_RenditionStatusプロパティの下位2バイトに設定される値を次の表に示します。プロパティのデータ型は,Integer32型です。

表3-2 dbrProp_RenditionStatusプロパティの下位2バイトの値

定数対応する値
(16進数値)
説明
DBR_RENDSTATUS_NO_SUBREND0001指定したサブレンディションに対応するマスタレンディションのコンテントは登録済みですが,サブレンディションのコンテントが登録されていません。
DBR_RENDSTATUS_SUBREND_EXIST0002指定したサブレンディションに対応するマスタレンディションおよびサブレンディションのコンテントが登録されています。
DBR_RENDSTATUS_MASTERREND_UPDATE0004指定したサブレンディションに対応するマスタレンディションが更新されていますが,サブレンディションが更新されていないため,マスタレンディションとサブレンディションの内容が一致しません。
(b) 変換フラグ

変換フラグは,dbrProp_RenditionStatusプロパティの上位2バイトの値として表されます。この値はPutRenditionPropertyValuesメソッドによって変更できます。また,DocumentBroker Rendering Optionによるレンディション変換実行時にエラーが発生した場合には,変換エラーを示す値が設定されます。

サブレンディションのdbrProp_RenditionStatusプロパティの上位2バイトの値を次の表に示します。プロパティのデータ型は,Integer32型です。

表3-3 dbrProp_RenditionStatusプロパティの上位2バイトの値

定数対応する値
(16進数値)
説明
DBR_RENDSTATUS_CONVERT_NOTREQUIRED0000DocumentBroker Rendering Optionによるレンディション変換の対象になりません。
DBR_RENDSTATUS_CONVERT_REQUIRED0001DocumentBroker Rendering Optionによるレンディション変換の対象になります。
DBR_RENDSTATUS_CONVERT_ERROR0002DocumentBroker Rendering Optionで変換エラーが発生しました。
注意
変換エラーが発生した場合,プロパティを更新するメソッド(PutRenditionPropertyValuesメソッド)によって変換フラグをDBR_RENDSTATUS_CONVERT_NOTREQUIREDまたはDBR_RENDSTATUS_CONVERT_REQUIREDに変更することはできません。この場合は,サブレンディションまたはマスタレンディションのコンテントを,UpdateContentメソッドまたはUpdateContentAndRenditionTypeメソッドによって更新してください。これによって,変換フラグが遷移します。

なお,状態フラグによって,変換フラグが取る値が異なります。

状態フラグと変換フラグの組み合わせについて,次の表に示します。

表3-4 状態フラグと変換フラグの組み合わせ

状態フラグ変換フラグ
DBR_RENDSTATUS_SUBREND_EXIST
  • DBR_RENDSTATUS_CONVERT_NOTREQUIRED
  • DBR_RENDSTATUS_CONVERT_REQUIRED
DBR_RENDSTATUS_NO_SUBREND
  • DBR_RENDSTATUS_CONVERT_REQUIRED
  • DBR_RENDSTATUS_CONVERT_ERROR
DBR_RENDSTATUS_MASTERREND_UPDATE
  • DBR_RENDSTATUS_CONVERT_NOTREQUIRED
  • DBR_RENDSTATUS_CONVERT_REQUIRED
  • DBR_RENDSTATUS_CONVERT_ERROR

例えば,レンディションを追加する時にファイルパスを指定しなかった場合,変換フラグにDocumentBroker Rendering Optionによるレンディション変換を要求しないDBR_RENDSTATUS_CONVERT_NOTREQUIREDを指定することはできません。

また,ファイルパスを指定して更新したいサブレンディションに対しては,マスタレンディションとサブレンディションが不一致であることを表すDBR_RENDSTATUS_MASTERREND_UPDATEの状態でも,レンディション変換を要求しないDBR_RENDSTATUS_CONVERT_NOTREQUIREDを指定することができます。

(4) dbrProp_RenditionStatusプロパティとメソッドの関係

dbrProp_RenditionStatusプロパティとメソッドの関係について説明します。

次のメソッドについて説明します。

(a) dbrProp_RenditionStatusプロパティの値を取得するメソッド

dbrProp_RenditionStatusプロパティの値は,次のメソッドで取得できます。

(b) dbrProp_RenditionStatusプロパティの値を遷移させるメソッド

dbrProp_RenditionStatusプロパティの値は,次のメソッドをコールした時に,DocumentBrokerによって変更されます。

メソッドによるプロパティの値の遷移を,次の図に示します。図中の(1)から(8)の番号は,表3-5から表3-7の説明中の番号と対応しています。

図3-22 メソッドによるdbrProp_RenditionStatusプロパティの値の遷移

[図データ]

図3-22の遷移の詳細を,メソッドごとに説明します。

(c) dbrProp_RenditionStatusプロパティの変換フラグを設定するメソッド

dbrProp_RenditionStatusプロパティの変換フラグは,PutRenditionPropertyValuesメソッドで設定できます。

例えば,ファイルパスを指定して追加したサブレンディションのコンテントを,レンディション変換によって更新されるようにする場合や,一度DocumentBroker Rendering Optionによるレンディション変換でエラーが発生したサブレンディションを,マスタレンディションのコンテントを更新したあとでレンディション変換の対象から外す場合などに,明示的に変換フラグを変更してください。

設定できる値は次のどちらかです。

ただし,次の設定はできません。

PutRenditionPropertyValuesメソッドで変換フラグを設定できない場合
  • 状態フラグがDBR_RENDSTATUS_NO_SUBRENDの時,変換フラグにDBR_RENDSTATUS_CONVERT_NOTREQUIREDは設定できません。
    この場合は,UpdateContentメソッドまたはUpdateContentAndRenditionTypeメソッドをコールするか,DocumentBroker Rendering Optionによるレンディション変換を実行して,サブレンディションのコンテントを登録してください。これによって変換フラグがDBR_RENDSTATUS_CONVERT_NOTREQUIREDに遷移します。
  • 変換フラグがDBR_RENDSTATUS_CONVERT_ERRORの時,変換フラグにDBR_RENDSTATUS_CONVERT_NOTREQUIREDまたはDBR_RENDSTATUS_CONVERT_REQUIREDは設定できません。
    この場合は,マスタレンディションまたはサブレンディションに対して,UpdateContentメソッドまたはUpdateContentAndRenditionTypeメソッドをコールしてコンテントを更新してください。これによって,変換フラグが,DBR_RENDSTATUS_CONVERT_REQUIRED(マスタレンディションに対してメソッドをコールした場合)またはDBR_RENDSTATUS_CONVERT_NOTREQUIRED(サブレンディションに対してメソッドをコールした場合)に遷移します。
(d) dbrProp_RenditionStatusプロパティの値によって制限されるメソッド

状態フラグによっては,ChangeMasterRenditionメソッドの実行が制限されます。

ChangeMasterRenditionメソッドの実行が制限される場合
  • 状態フラグがDBR_RENDSTATUS_NO_SUBRENDの場合,メソッドは実行できません。
    この場合は,サブレンディションに対してUpdateContentメソッドまたはUpdateContentAndRenditionTypeメソッドをコールしてコンテントを登録するか,DocumentBroker Rendering Optionを使用してレンディション変換を実行してから,ChangeMasterRenditionメソッドをコールしてください。
  • 状態フラグがDBR_RENDSTATUS_MASTERREND_UPDATEの場合は,変換フラグがDBR_RENDSTATUS_CONVERT_NOTREQUIREDのときだけ,メソッドが実行できます。変換フラグがDBR_RENDSTATUS_CONVERT_REQUIREDまたはDBR_RENDSTATUS_CONVERT_ERRORのとき,メソッドは実行できません。
    この場合は,変換フラグをDBR_RENDSTATUS_CONVERT_NOTREQUIREDに変更するか,またはマスタレンディションとサブレンディションの状態を一致させてから,ChangeMasterRenditionメソッドをコールしてください。
(e) DocumentBroker Rendering Optionによるサブレンディション更新の例

dbrProp_RenditionStatusプロパティの値の遷移の例として,DocumentBroker Rendering Optionによるサブレンディション更新の場合の例を,次の図に示します。

図3-23 DocumentBroker Rendering Optionによるサブレンディション更新の例

[図データ]

図3-23を説明します。

  1. 図3-23の文書は,マスタレンディションとしてWord形式のファイルA.doc,サブレンディションとしてPDF形式のファイルA.pdfを持つ,バージョンなし文書です。1.の時,マスタレンディションとサブレンディションの内容は一致しています。状態フラグはDBR_RENDSTATUS_SUBREND_EXISTです。
    なお,DVはDocVersionオブジェクト,RはRenditionオブジェクト,CTはContentTransferオブジェクトを表します。R(MR)はマスタレンディションを表します。
  2. UpdateContentメソッドによって,マスタレンディションのコンテントをB.docに更新します。このとき,マスタレンディションとサブレンディションの状態が不一致になるため,サブレンディションの状態フラグがDBR_RENDSTATUS_MASTERREND_UPDATEに遷移します。
  3. PutRenditionPropertyValuesメソッドによって,サブレンディションのdbrProp_RenditionStatusプロパティの変換フラグに,DBR_RENDSTATUS_CONVERT_REQUIREDを設定します。
  4. DocumentBroker Rendering Optionによってレンディション変換を実行します。3.で変換フラグにDBR_RENDSTATUS_CONVERT_REQUIREDを設定したサブレンディションは,レンディション変換の対象になります。レンディション変換は,マスタレンディションのコンテント(B.doc)を基に実行されます。
  5. サブレンディションのコンテントとして,マスタレンディションのB.docを基にレンディション変換したファイルB.pdfが登録されます。このとき,サブレンディションの状態フラグは,DBR_RENDSTATUS_SUBREND_EXISTに遷移します。

(5) レンディションのコンテント種別を表すプロパティ(dbrProp_ContentTypeプロパティ)

レンディションごとのコンテントの種別は,dbrProp_ContentTypeプロパティによって知ることができます。コンテントの種別から,レンディションのコンテントが次のうちのどれかを知ることができます。

このプロパティは,Integer32型の4バイトの値として表されます。

ユーザはdbrProp_ContentTypeプロパティを設定できません。dbrProp_ContentTypeプロパティを参照する場合は,GetRenditionListメソッドおよびGetRenditionListAndLockメソッドを使用します。また,マスタレンディションのdbrProp_ContentTypeプロパティは,GetPropertyValuesメソッド,GetPropertyValuesAndLockメソッド,または一部の一覧取得メソッドでも参照できます。

dbrProp_ContentTypeの値とコンテント種別の関係を次の表に示します。

表3-8 dbrProp_ContentTypeの値とコンテント種別の関係

dbrProp_ContentTypeの値対応する値コンテント種別
DBR_CONTENTTYPE_CONTENT0ContentTransferオブジェクト(シングルファイル文書であるコンテント)です。
DBR_CONTENTTYPE_FILELINK1ContentFileLinkオブジェクト(File Link文書であるコンテント)です。
DBR_CONTENTTYPE_MULTIFILE2ContentTransfersオブジェクト(マルチファイル文書であるコンテント)です。
DBR_CONTENTTYPE_REFERENCE3ContentReferenceオブジェクト(リファレンスファイル文書であるコンテント)です。
DBR_CONTENTTYPE_OTHER-1上記以外のコンテントを持つオブジェクトです。