fdk
Adobe FrameMaker FDK, 構造化されたドキュメントの要素を順にたどって要素の属性を列挙するAPI Client
DocbookXMLで内容を記述し、それを構造化FrameMakerでフォーマットしている。
フォーマット(スタイル)の指定のほとんどはEDDであらかじめ指定しておけばよいのだが、
仕上げの段階の「詰め」の作業などで、どうしてもスポット的に行間を狭めたり、長体をかけたり、という
例外的なフォーマット指定を行う必要が生じる。
これをタッチアップと称して、FrameMaker上で手作業で行うのだが、
この手作業の結果は、次にDocbookXMLから再度フォーマットし直したときに失われてしまう。
(ラウンドトリップして、FrameMakerからDocbookに再度書き戻せられれば問題ないのだが、そうなっていない。
というか、Docbookにはスタイルを記録できる要素や属性は定義されていなから基本的には無理なわけだが...)
したがって、フォーマットのたびに毎回同じ手作業による修正が発生してしまいます。
前置きが長くなりましたが、このタッチアップを少しでも減らすために、 DocbookXMLをFrameMakerで開いたときに各要素に埋め込まれたスタイル指定情報(※)を読み出して そのスタイル適用するAPI ClientをFDKを使って書いてみようと、そういう話です。
※もちろんDocbookXMLにはスタイル情報を記録できる要素や属性はないので、ちょっとしたトリックを使う必要はあります。
まだ道半ば(もいいところなの)ですが、まずは、構造図に表示される要素ツリーを順にたどって、 各要素の属性を取得するところまで作動するものができたので、ここにメモしておきます。
Adobe FrameMaker FDK, 構造化されたドキュメントの要素を順にたどって要素の属性を列挙するAPI Client(C++版)
C++版
Adobe FrameMaker FDK 8.0 API Client を nmake を使ってコマンドプロンプトでビルドする方法
FDK 8.0(FrameMaker Developer Kit
を使って作成するAPI Client はVisualStudio2005 の使用してビルドする。
通常、VisualStudio2005 は GUI上で開発・ビルドを行うが、
わたしがつくっている程度の小さなC/C++プログラムでは、わざわざGUIを起動するのが面倒。
面倒というより、そもそもコーディングも vim でやっているので、ビルドするためだけに
VisualStudio2005 の重いGUIを起動していることになる。
ビルドするだけなら、コマンドラインでMakeで済ませたい、と思って調べたところ、
標準でインストールされるVisualStudio2005 コマンドプロンプトを使って
namke(というMicrosoftが提供している) make ツールを使えばよいことが判明。
VisualStudio2005をインストールすると一緒にインストールされる VisualStudio2005 コマンドプロンプトは、通常のDOSプロンプトと異なり あらかじめ C++ プログラムをビルドするのに必要な環境がセットアップされている。
ブック中のすべての fm ファイルを開く(Adobe FrameMaker8 FDK Client)
先ほどの tomif.cを流用して作成。 単に、ブック中のfmファイルを全部開くだけのクライアント。
ブックを印刷するとき、全部開いたまま行うと高速に処理できる・・・と
(記憶では)
ヘルプに書いてあったので...
たとえば、そんなときに役立つクライアント。
これで、ちまちまファイルを開く手間を省けます。
ブック内の fm ファイルを mif 形式で保存する(Adobe FrameMaker8 FDK Client)
仕上げ処理で、mif ファイルに対して一括処理をほどこすことがよくあります。
(小口に配置するツメの位置を章ごとに移動させる、など)
構造化FrameMakerでは、仕上げ段階では、XML文書からブックを生成しますが、
こうしてできた個々のファイルの形式は fm です。
この fm ファイルをひとつずつ開いて mif 保存しているのは苦痛なので
自動化しました。
処理内容は、ブックファイル中の fm ファイルを列挙して、 mif 拡張子を持つファイル名文字列を生成してから、 mif 形式で保存しているだけです。
保存形式の指定で FV_SaveFmtInterchange80 を使うのがポイントです。 もし、FV_SaveFmtInterchange を使うと、FrameMaker7 形式の mif になるようです。 FM8のfm形式ファイルを FM7 mif 形式に保存すると、 ユニコード関係で一部文字が化けることがあります。
現在開いているファイルを fm 形式で保存する(Adobe FrameMaker8 FDK Client)
先ほどの続きで、いったん mif 形式で保存して処理をした後、 再度 fm 形式で保存するときに使うことを想定したFDKクライアントです。
ただやっている内容は、現在開いてるファイルを全部取得して、パラメータとして、 FV_ModeSaveAs を指定して fm 拡張子で保存しているだけです。
アクティブブックドキュメント中のfmファイル名を順番に取得する方法(Adobe FrameMaker8 FDK)
前回 は fmファイルを開いているときにそのファイル名(パス)を 得る方法を調べた。
その応用で今度は book形式のファイルを開いているときに、 そのbook内に含まれるすべてのfmファイルのファイル名(パス)を順に取得してみる。
AdobeFrameMaker8 FDK Bookを開いているとのメニューバーと通常のメニューバー
FDKを使うまで意識したことがなかったが、 bookがアクティブになっている場合のメニューと 通常のメニューは別になっていることが判明。
アクティブドキュメントのファイル名を取得する方法(Adobe FrameMaker8 FDK)
FDKを使ってやりたいことは、Book中のすべてのfmファイルを、mifファイルとして保存したい、 しかも拡張子だけ fm から mif に変えてファイル名のベース部分はそのままに。
しかし実際に取り組んでみると、そのためにはまだまだ道程は遠い。 まずは、アクティブドキュメント(fm形式)のファイル名を取得するところまでできたので、 そのメモ。
Adobe FrameMaker8 FDK 最初の一歩
FDKは、 CやVisualStudioの操作に慣れていないと、なかなか敷居が高い。 以下は、FDKのとっかかりのメモ。