4 返信 最新の回答 日時: Feb 22, 2007 12:43 PM ユーザー:(einstein2nd)

    ドキュメントオープン時のShowWindowオプションの違いについて

      環境:Win-xp,InDesign-CS2,VS2005,VB
      目的: WebアプリケーションからInDesignをコントロールしPDFを作成しています。
         そのInDesignを使用して台紙やライブラリの選択をビジュアルにしたいと思っています。
      手段:ライブラリファイルをダイナミックにJPEGファイルに変換して使用する。

      問題発生:
      前回、教えていただいた方法でJPEG変換は大変うまくいったのですが、PDF作成のアプリケーションと同時に動かすとPDF作成側のアプリケーションがエラーになってしまいます。

      エラーメッセージ:
      「フォームの作成中にエラーが発生しました。詳細については、Exception.InnerException を参照してください。エラー: エラー HRESULT E_FAIL が COM コンポーネントの呼び出しから返されました。」

      対応:InDesignのドキュメントオープンの「ShowWindow」をTrueからFalseに変更した。

      ソース抜粋:
      'InDesign起動
      myInDesign = CreateObject("InDesign.Application")
      myDocument = myInDesign.Open(dummyTemplate, False) ←ここをTrueからFalseに変更した。
      myLibrary = myInDesign.Open(libraryFileName)
      myAssets = myLibrary.Assets
      myAsset = MyAssets.Item(1)
      Dim sl As InDesign.Objects
      'アセットを配置し文書の選択にする。
      sl = MyAsset.PlaceAsset(myDocument)
      myDocument.Select(sl, InDesign.idSelectionOptions.idReplaceWith) ←ここでエラー発生!!。
      エラーメッセージ:
      「開かれているドキュメントがありません。」

      【ここで質問です】
      myInDesign.Open(dummyTemplate, False)のようにShowWindowをFalseにするとmyDocument.Selectは使用できないってことですか?
      部分選択のExportはShowWindowをTrueにしないとできないってことですか?

      よろしくお願い致します。
        • 1. Re: ドキュメントオープン時のShowWindowオプションの違いについて
          Level 1
          参考になるか分かりませんが、
          myInDesign.Open(dummyTemplate, False)のようにShowWindowをFalseにした後で、表示させる方法が私は見つけられなかったのですが、
          この表示を変えることが出来れば、エラートラップで、回避できないでしょうか?
          • 2. Re: ドキュメントオープン時のShowWindowオプションの違いについて
            Level 1
            アドバイスありがとうございます。

            私も後で表示しようとVisible属性をTrueにしようとしましたが、この属性はRead Onlyだったのでダメでした。
            • 3. Re: ドキュメントオープン時のShowWindowオプションの違いについて
              Level 1
              以下、推測なのですが。
              (実際にやってみて違ってたらごめんなさい)

              恐らくSelectメソッド(選択状態にする)はウィンドウが開かれていないとできないのではないかと思います。(以下の例でも「開かれているドキュメントがありません。」と出ました)
              Set app = CreateObject("InDesign.Application.CS")
              Set doc = app.Documents.Add(False)
              Set txf = doc.TextFrames.Add
              txf.Select
              ウィンドウが最小化されている時はどうなのかは試していません。

              ウィンドウのないドキュメントを表示させるには新たにウィンドウを作成すればできるのではないかと思います。
              myDocument.Windows.AddまたはmyDocument.LayoutWindows.Add

              WindowオブジェクトにはClose、Minimize、Maximize、Restoreメソッドがあるのでそこら辺でなにかなるのかなと思います。
              • 4. Re: ドキュメントオープン時のShowWindowオプションの違いについて
                Level 1
                お〜まちさん
                ありがとうございます。

                ちょっと問題を整理してみます。
                InDesignのテンプレートを呼び出し、対応するライブラリを読み出して配置していく。(ShowingWindow=False)
                InDesignのダミーの文書を呼び出し、ライブラリを読み出し、JPEGに変換する。(ShowingWindow=True)
                いずれも単体で正しく動作する。
                問題はを同時に動作させるとでExceptionエラーが起こる。
                もしかして、に問題があるのではないかと調査しました。

                「InDesignで1つでもShowingWindow=Trueの文書があると、でExceptionが起こります。」

                結論
                「はShowingWindow=Trueの文書があると破綻してしまう。」...ひぇー!

                そこでは部分選択でExportするために「ShowingWindow=True」が必要らしそうなので、に焦点を合わせた方が良さそうです。

                早速のコード抜粋:
                Dim sl As InDesign.Objects
                For i = 1 To library.Assets.Count
                If library.Assets.Item(i).Name = AssetName Then
                sl = library.Assets.Item(i).PlaceAsset(doc) ←slにはオブジェクトがセットされる
                Exit For
                End If
                Next i
                If sl Is Nothing Then
                GoTo exitGate ←ここにはこない
                End If

                Dim origin() As Double = {0.0, 0.0}
                Dim x1, y1, x2, y2 As Double
                If sl.Count > 0 Then
                y1 = sl.Item(1).GeometricBounds(0) ←ここでエラーになる。

                ShowingWindow=Trueの文書があると、PlaceAssetで開いた文書を設定しているのにもかかわらず、
                ShowingWindow=Trueのほうの文書に貼り付いてしまうようです。

                slにはオブジェクトがあるようですが、sl.Item(1)で参照できません。

                この辺よろしくお願い致します。