高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technote 1113

Customizing Desktop Printer Utility


目次

デスクトッププリンタユーティリティのカスタマイズ

・ 'CsDs'リソースについて

・ ヒントリソースについて

カスタムDTPのサンプル

要約
のLaserWriter 8のプリンタモデルでは、AppleTalkネットワーク上(LocalTalk又はAppleTalk)のデバイスの中で、NBP種別が「LaserWriter」のものがセレクタに現われます。ユーザがLaserWriterプリンタを選ぶと、LaserWriter 8はFinderにApple eventを送り、デスクトッププリンタを生成します。多くのユーザに取って、現在のプリンタモデルの仕様は十分なものと言えます。しかし、もっと柔軟なデスクトッププリンティングモデルを要求する声もあったため、アップルコンピュータは新しい機能を備えたLaserWriter 8.5.1をリリースすることになりました。これに関連して、デスクトッププリンタの様々な機能を使いこなすためのアプリケーション(デスクトッププリンタユーティリティ)もリリースされました。今までのAppleTalkのPAPプロトコルに加えて、Unixのlprプロトコルに対応したプリンタも使えるようになりました。また、ローカルプリントキューを実現するHold型や実存しないVirtual型のデスクトッププリンタも作成できるようになりました。


上記の新機能に加えて、デスクトッププリンタユーティリティはカスタマイズが可能です。LaserWriter 8.5.1とデスクトッププリンタユーティリティは共にカスタムDTP(デスクトッププリンタ)をサポートしています。カスタムDTPに印刷をすると、LaserWriter 8.5.1ドライバはPostScriptファイルを出力して、後処理のため、生成したPostScriptファイルを特定のアプリケーションに渡します。起動されたアプリケーションはどんなアクションを取っても構いません。PostScriptファイルを他の形式に変換したり、モデムやネットワークで転送したり、画面上に表示することも可能です。このテックノートではデスクトッププリンタユーティリティのカスタマイズについて解説をします。

デスクトッププリンタユーティリティのカスタマイズ

カスタムDTPをデスクトッププリンタユーティリティに認識させるには、ユーティリティのリソースフォークに特定のリソースを加えなければなりません。デスクトッププリンタユーティリティはこの作業を簡単にするために様々なテンプレートを含んでいます。

'CsDs'(CustomDTPResource)リソース

デスクトッププリンタユーティリティをカスタマイズするには、'CsDs'(CustomDTPResource)リソースを追加します。LaserWriterはこの情報を参照して、起動するアプリケーションを特定します。

リソースの定義は以下に示す'CustomAppDesc'構造体です。
#define kVariableLen 1

struct CustomAppDesc {
        OSType appSignature;
        Str255 docType;
        Str255 helpText;
        Str255 usage;
        Str255 appFileName;
        short numOfHintsFollow;
        HintRsrcSpec hintRsrc[kVariableLen];
}

typedef struct CustomAppDesc CustomAppDesc;


appSignature: 起動するアプリケーションのクリエータタイプ。アプリケーションを特定する際に、LaserWriterドライバはすべてのマウントされているボリュームを検索します。

docType: カスタムDTPの種別を示す文字列。この文字列は新規作成時にリストに表示されます。図1ではこの文字列が選択されています。

helpText: カスタムDTPの説明文。この文字列は新規作成ダイアログの下に表示されます。図1では「Custom DTP Example Help Text」となっています。

usage: カスタムDTPを利用した時に表示される文字列。図2では「Custom DTP Example Usage string」となっています。

appFileName: 起動するアプリケーションの名称。アプリケーションを特定する際にLaserWriterドライバはこの情報を利用します。また、この文字列はエラーメッセージを表示する際にも使われます。(例:SurfWriter could not be launched due to insufficient memory。)

numOfHintsFollow: 続くhintRsrcに含まれているヒント数。詳しくはヒントリソースの説明をご覧下さい。

hintRsrc: ドライバが生成するPostScriptのヒントの配列。詳しくはヒントリソースの説明をご覧下さい。

図1


図2



ヒントリソース(オプション)について

出力するPostScriptについて、CustomDTPResourceで様々なヒントが指定できます。CustomDTPResourcenumOfHintsFollowフィールドではヒントの総数を指定します。各ヒントに関する情報は以下の構造体からなっており、配列としてCustomDTPResourceに入ります。
struct HintRsrcSpec {
        OSType rsrcType;
        short rsrcID;
};

typedef struct HintRsrcSpec HintRsrcSpec;


各ヒントは特定のリソースを参照します。以下に現在サポートされているヒントを紹介します。

PostScriptレベル

PostScriptファイルの後処理を行うアプリケーションは特定のPostScriptレベルを必要とする場合があります。'pslv'ヒントでは出力に使われるPostScriptレベルを指定することができます。

リソースタイプ:'PSlv'
typedef struct {
    OSType hintType;        // 'pslv'ヒント
    long hintId;            // 1を指定します
    long psLevel;
} PSlvResource;

#define kHintLanguageLevelTag 'pslv'
#define kHintLanguageLevelId 1


現在psLevelで指定できる値は以下の通りです。
-3    レベル2とレベル3
-2    レベル1とレベル2
-1    レベル不明
 0    その他のレベル    // この値は使用しないで下さい
 1    レベル1
 2    レベル2
 3    レベル3

注:
-3はPostScriptレベル2及びレベル3を出力しますので、レベル1の出力装置では使用できないことがあります。-2はレベル1、レベル2、レベル3のすべてのPostScript装置で使用できる出力を行います。



バイナリデータ

このヒントを使うと、出力にバイナリデータが含まれることを許可又は拒否できます。

リソースタイプ:'BNok'
typedef struct {
    OSType hintType;        // 'bnok'ヒント
    long hintId;            // 1を指定します
    TriState binaryOK;
} BNokResource;

#define kHintADOIsBinaryOKTag 'bnok'
#define kHintADOIsBinaryOKId 1


binaryOKフィールドではバイナリデータを許可するかどうかを以下の値を使って指定します。
0    許可しない
1    許可する
2    不明    // この値は使用しないで下さい

注:
不明の値は将来のために定義してあります。DTPでは指定しないで下さい。


ジョブ種別

このヒントは出力するPostScriptの形式を指定します。

リソースタイプ:'JObt'
typedef struct {
    OSType hintType;        // 'jobt'ヒント
    long hintId;            // 1を指定します
    char jobType;
} BNokResource;

#define kHintJobTypeTag 'jobt'
#define kHintJobTypeId 1


jobTypeで指定できるPostScriptの出力形式は2つあります。
0    psJobPostScript
1    psJobEPSNoPreview



フォントの処理

このヒントでは出力ファイルにフォント情報を含む際のドライバの動作が指定できます。このヒントは4バイトのフラグに続いて、終端にNULLを加えた文字列の配列からなっています。

リソースタイプ:'FOnt'
typedef struct {
    OSType hintType;        // 'font'ヒント
    long hintId;            // 1を指定します
    long tag;
    unsigned char name [1];
} FOntResource;

#define kHintIncludeFontsTag 'font'
#define kHintIncludeFontsId 1


tagで指定できる値は以下の通りです。
0    kIncludeNoFontsOtherThan
1    kIncludeAllFontsBut


kIncludeNoFontsOtherThanの場合、ヒントで指定されているフォントの情報のみが出力ファイルに含まれます。フォントが一つも指定されていない場合、フォント情報は一切出力ファイルに含まれません。kIncludeAllFontsButの場合、ヒントで指定されていないフォントの情報のみが出力ファイルに含まれます。すべてのフォントの情報を出力ファイルに含むには、kIncludeAllFontsButを指定して、フォントを一つも指定しません。


カスタムDTPのサンプル

以下のカスタムDTPは'CsDs''FOnt'リソースを利用して、出力ファイルからCourierとHelveticaのフォント情報を除きます。このサンプルはDTPユーティリティがどれほど簡単にカスタマイズできるかを示すものです。

まず、ヒントリソースを作成します。このサンプルではフォント情報の扱いを指定するための'FOnt'リソースを追加しました。


次は'CsDs'リソースを編集して、先ほど作成したヒントと特定のDTPを結び付けます。


以上でカスタムDTPが完成しました。このカスタムDTPはCourierとHelvetica以外のフォント情報を含むPostScriptファイルを作成します。


デスクトッププリンタユーティリティの制限

Mac OS 8.0及びLaserWriter 8.5.1の開発が平行して行われたため、LaserWriter 8.5.1に含まれているDTPユーティリティ1.0はMac OS 8.0で利用できません。次期リリースMac OS 8.1では問題なく使用できます。


デスクトッププリンタユーティリティのライセンシング

アプリケーションと一緒にカスタムDTPユーティリティを出荷する場合は、DTPユーティリティをライセンスする必要があります。詳細についてはアップルコンピュータのソフトウェアライセンシンググループ(sw.license@apple.com又は512-919-2645)に問い合わせて下さい。


要約

このテックノートではデスクトッププリンタユーティリティのカスタマイズ方法を詳しく紹介しました。ぜひ一度お試しになって下さい。


参考文献
「Technote 1112 LaserWriterドライバ8.5.1の紹介」

更新日: 1997 年 11 月 14 日