C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.11977 の関連記事表示

<< 0 >>
■11977  VBからIndesign(テキストフレーム)
□投稿者/ ようすけ -(2007/12/26(Wed) 14:13:14)

    分類:[VB6 以前] 

    vb6.0
    Indesign CS3
    を使っています。
    どなたかわかる方いらっしゃいましたら、ご教授ください。
    今までIndesignが2.0だったのですが、今回CS3になりました。
    VBからIndesignのテキストフレームにデータを乗せてPDFを出力するという処理をしています。

    Private Sub SetText(Doc As InDesign.Document, Tag As String, Text As String, Optional Mode As String = "")
    ' Dim wStyles As CharStyles
    '◆◆ cs3にはCharStylesはないらしい ◆◆
    Dim wStyles As CharacterStyles

    Dim wTextFrame As TextFrame

    If Text = "" Then Exit Sub

    'debug用にコメント On Error GoTo TagErr

    ' Set wStyles = Doc.CharStyles
    '◆◆ cs3にはCharStylesはないらしい ◆◆
    Set wStyles = Doc.CharacterStyles

    '◆◆ココです◆◆cs3にはAssociatedObjectがないらしい
    Set wTextFrame = Doc.XMLElements.Item(Tag).AssociatedObject.TextFrames.Item(1)

    If Len(Text) <= 2 And Left(Text, 1) = "!" Then
    wTextFrame.TextContents = "?" & Mid(Text, 2)
    wTextFrame.Paragraphs(1).characters.Item(1).applystyle wStyles("Rev")

    Else
    wTextFrame.TextContents = Text
    End If

    '-----------------------外字処理
    Dim n As Integer
    For n = 1 To Len(Text)
    Select Case AscW(Mid(Text, n, 1))
    Case -8192 To -8192 + 1880 'UnicodeでE000から1880文字を外字とみなす
    wTextFrame.Paragraphs(1).characters.Item(n).applystyle wStyles("gaiji")
    End Select
    Next
    '-----------------------外字処理

    Call Choutai(wTextFrame, Tag)

    TagErr:
    Call WriteLog("Tag Error - " & Doc.Name & "/" & Tag & "/" & Text)
    End Sub

    今までは上記のプログラムで動いていたのですが、CS3に変更したことにより
    あちこちでエラーが出てしまい(デバッグ、EXE作成時)、少しずつ直しています。

    今、困っているのはテキストフレームへのセットに時間がかかるということです。
    Set wTextFrame = Doc.XMLElements.Item(Tag).AssociatedObject.TextFrames.Item(1)
    この1行を、

    For Each allobj In Doc.AllPageItems
    If TypeName(allobj) = "TextFrame" Then
    If Not allobj.AssociatedXMLElement Is Nothing Then
    If allobj.AssociatedXMLElement.MarkupTag.Name = Tag Then
    Set wTextFrame = allobj
    Exit For
    End If
    End If
    End If
    Next

    と書くことによって2.0と同じことはできたのですが、
    かなり時間がかかってしまいます。
    全部のオブジェクトを対象に探しに行っているからだと思うのですが、
    他の書き方などありましたら教えてください。

    よろしくお願いいたします。

親記事 /過去ログ26より / 関連記事表示
削除チェック/

■12331  Re[1]: VBからIndesign(テキストフレーム)
□投稿者/ 通りスガリ -(2008/01/08(Tue) 09:27:19)
    No11977 (ようすけ さん) に返信

    私もVBでIndesignScriptを作成しております。
    しかしCS3もXML機能も使っていないため残念ながらお力にはなれません。
    こちらの掲示板で聞くより、Adobe ユーザーフォーラムのインデザイン SDK フォーラムでトピックを建ててみてはいかがかと思いますがいかがでしょう。
記事No.11977 のレス /過去ログ26より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -