PRINT OPTION:Color optionの廃止について
2 posters
PRINT OPTION:Color optionの廃止について
v17のドキュメントを見ていると64bitバージョンで廃止となっていました。
セコイ話かもしれませんが、カラー印刷だとほとんど白黒でもインクを大量に消費するのでインク節約のためモノクロ印刷をしているところがあるのですが、なにか代替案はあるのでしょうか?
セコイ話かもしれませんが、カラー印刷だとほとんど白黒でもインクを大量に消費するのでインク節約のためモノクロ印刷をしているところがあるのですが、なにか代替案はあるのでしょうか?
hosaka- 投稿数 : 241
登録日 : 2016/07/04
所在地 : 大阪
Re: PRINT OPTION:Color optionの廃止について
BLOB TO PRINT OPTIONで制御できるかもしれません
(4D Japan内では,v2004のときから,4D Packの同等コマンドで白黒とカラーを切り替えていました)

(4D Japan内では,v2004のときから,4D Packの同等コマンドで白黒とカラーを切り替えていました)
miyako- 投稿数 : 469
登録日 : 2016/07/05
Re: PRINT OPTION:Color optionの廃止について
早い
いろいろ調べていたのですが、このBLOBの内容ってwindowsの場合、DEVMODE構造体ということで良いのでしょうか?
構造体的にはカラー設定はある様なのですが、なぜPRINT OPTIONからは廃止となったのでしょうか?

いろいろ調べていたのですが、このBLOBの内容ってwindowsの場合、DEVMODE構造体ということで良いのでしょうか?
構造体的にはカラー設定はある様なのですが、なぜPRINT OPTIONからは廃止となったのでしょうか?
hosaka- 投稿数 : 241
登録日 : 2016/07/04
所在地 : 大阪
Re: PRINT OPTION:Color optionの廃止について
印刷設定BLOBについて
まず,ドキュメントに明記されているように,標準コマンドのPrint settings to BLOBと4D PackのAP Print settings to BLOB(32ビット版)は,BLOBのフォーマットが違います。標準コマンドのBLOB to print settingsは,両方の形式が読めますが,4D PackのAP BLOB to print settingsは4D Packの形式しか読めません。
BLOBから印刷設定を復元する場合,そのBLOBを作成したときと同じプリンターがカレントプリンターであれば,1が返されます。
カレントプリンターが存在しない場合,0が返されます。
BLOBの構造が不正であれば,-1が返されます。
2が返されるのは,BLOBのプリンター名がカレントプリンターと一致しない場合で,もし,同じプリンターがリネームされたか,互換機種であれば,実質的に1と同じ成功とみなすことができます。さらに,4D PackのBLOBから設定を復元した場合も2が返されます。プラグイン版のコマンドはプリンター名を保存しないためです。それ以外の場合,つまり,機種が明らかに違うときは『すべての設定が復元できているという保証はない(100%できているかもしれない)』という状態になります。その場合,改めてカレントプリンターの設定画面を再表示して,機種に対応したBLOBを再取得することが勧められています。
それで,プラグインと標準コマンドを比較した場合,プリンター名を保存するかしないかがひとつのポイントになっています。
プラットフォームや機種に依存しない,基本的な設定は必ずBLOBに保存されているので,機種違い・プラットフォーム違いでもエラーにはなりませんが(2が返される),できるだけ多くの項目を再現するためには,少なくともWin/MacそれぞれでBLOBを作る必要があります。
肝心のBLOB構造ですが(非公開情報)
signature 4 bytes PS4D または D4SP
バイトオーダーですね
version 4 bytes 0x00010000 (4D Pack) 0x00020000 標準コマンド
BLOBフォーマット情報
json_size 4 bytes JSONの印刷設定のサイズ
native_size 4 bytes バイナリの印刷設定のサイズ
json json_size bytes
文字例の印刷設定(UTF-8)
native sign 4 bytes WIN_ または MAC_
プラットフォーム情報
native_length 4 bytes
バイナリの印刷設定の実サイズ
data native_length bytes
Windowsのバイナリ
version 4 bytes version :1
devmode_size 4 bytes DEVMODEのサイズ
devnames_size 4 bytes DEVNAMESのサイズ
DEVMODE devmode_size bytes DEVMODEデータ
DEVNAMES devnames_size bytes DEVNAMESデータ
Macのバイナリ
version 4 bytes version :1
printsettings_size 4 bytes PMPrintSettingsのサイズ
pageformat_size size 4 bytes PMPageFormatのサイズ
PMPrintSettings printsettings_size bytes PMPrintSettings
PMPageFormat pageformat_size bytes PMPageFormat
JSON設定の例
{
"version": 1,
"platform": "WIN",
"print_name": "\\\\SRV-2K3R2\\HP P3005 Support",
"print_drivername": "winspool",
"print_displayname": "\\\\SRV-2K3R2\\HP P3005 Support",
"paper_name": "A4",
"paper_unit": 6,
"paper_width": 210000,
"paper_height": 297000,
"page_orientation": 2,
"page_scale": 100,
"job_firstpage": 1,
"job_lastpage": -1,
"job_nbcopy": 1,
"job_collate": false,
"job_duplex": 0,
"preview": false,
"job_output": 0
}
参考
paper_Unitの値
Points=1,
Inches=2,
ThousandthsInches=3,
TenthsMillimeters=4,
HundredthsMillimiters=5,
ThousandthsMillimeters=6
page_orientationの値
Portrait = 1,
Landscape = 2,
ReversedPortrait = 3,
ReversedLandscape = 4
job_duplexの値
DuplexNone = 0,
Duplex_Horizontal = 1, // short edge binding;
Duplex_Vertical = 2 // long edge binding;
まず,ドキュメントに明記されているように,標準コマンドのPrint settings to BLOBと4D PackのAP Print settings to BLOB(32ビット版)は,BLOBのフォーマットが違います。標準コマンドのBLOB to print settingsは,両方の形式が読めますが,4D PackのAP BLOB to print settingsは4D Packの形式しか読めません。
BLOBから印刷設定を復元する場合,そのBLOBを作成したときと同じプリンターがカレントプリンターであれば,1が返されます。
カレントプリンターが存在しない場合,0が返されます。
BLOBの構造が不正であれば,-1が返されます。
2が返されるのは,BLOBのプリンター名がカレントプリンターと一致しない場合で,もし,同じプリンターがリネームされたか,互換機種であれば,実質的に1と同じ成功とみなすことができます。さらに,4D PackのBLOBから設定を復元した場合も2が返されます。プラグイン版のコマンドはプリンター名を保存しないためです。それ以外の場合,つまり,機種が明らかに違うときは『すべての設定が復元できているという保証はない(100%できているかもしれない)』という状態になります。その場合,改めてカレントプリンターの設定画面を再表示して,機種に対応したBLOBを再取得することが勧められています。
それで,プラグインと標準コマンドを比較した場合,プリンター名を保存するかしないかがひとつのポイントになっています。
プラットフォームや機種に依存しない,基本的な設定は必ずBLOBに保存されているので,機種違い・プラットフォーム違いでもエラーにはなりませんが(2が返される),できるだけ多くの項目を再現するためには,少なくともWin/MacそれぞれでBLOBを作る必要があります。
肝心のBLOB構造ですが(非公開情報)
signature 4 bytes PS4D または D4SP
バイトオーダーですね
version 4 bytes 0x00010000 (4D Pack) 0x00020000 標準コマンド
BLOBフォーマット情報
json_size 4 bytes JSONの印刷設定のサイズ
native_size 4 bytes バイナリの印刷設定のサイズ
json json_size bytes
文字例の印刷設定(UTF-8)
native sign 4 bytes WIN_ または MAC_
プラットフォーム情報
native_length 4 bytes
バイナリの印刷設定の実サイズ
data native_length bytes
Windowsのバイナリ
version 4 bytes version :1
devmode_size 4 bytes DEVMODEのサイズ
devnames_size 4 bytes DEVNAMESのサイズ
DEVMODE devmode_size bytes DEVMODEデータ
DEVNAMES devnames_size bytes DEVNAMESデータ
Macのバイナリ
version 4 bytes version :1
printsettings_size 4 bytes PMPrintSettingsのサイズ
pageformat_size size 4 bytes PMPageFormatのサイズ
PMPrintSettings printsettings_size bytes PMPrintSettings
PMPageFormat pageformat_size bytes PMPageFormat
JSON設定の例
{
"version": 1,
"platform": "WIN",
"print_name": "\\\\SRV-2K3R2\\HP P3005 Support",
"print_drivername": "winspool",
"print_displayname": "\\\\SRV-2K3R2\\HP P3005 Support",
"paper_name": "A4",
"paper_unit": 6,
"paper_width": 210000,
"paper_height": 297000,
"page_orientation": 2,
"page_scale": 100,
"job_firstpage": 1,
"job_lastpage": -1,
"job_nbcopy": 1,
"job_collate": false,
"job_duplex": 0,
"preview": false,
"job_output": 0
}
参考
paper_Unitの値
Points=1,
Inches=2,
ThousandthsInches=3,
TenthsMillimeters=4,
HundredthsMillimiters=5,
ThousandthsMillimeters=6
page_orientationの値
Portrait = 1,
Landscape = 2,
ReversedPortrait = 3,
ReversedLandscape = 4
job_duplexの値
DuplexNone = 0,
Duplex_Horizontal = 1, // short edge binding;
Duplex_Vertical = 2 // long edge binding;
miyako- 投稿数 : 469
登録日 : 2016/07/05
Re: PRINT OPTION:Color optionの廃止について
詳細な情報ありがとうございます。
DEVMODE構造体以外に、DEVNAMES構造体も保持しているんですね。
JSONを内包しているあたりで今後、新しいコマンドが出てきそうですが回避策は下記の様な感じでしょうか。
1.一旦モノクロ設定を保存する。
//モノクロ設定を保存
PRINT SETTINGS
If (OK=1)
C_BLOB($setting_x)
If (Print settings to BLOB($setting_x)=1)
BLOB TO DOCUMENT(Get 4D folder(Current resources folder)+"print_setting.bin";$setting_x)
End if
End if
2.モノクロ設定を利用する。
C_BLOB($setting_x)
DOCUMENT TO BLOB(Get 4D folder(Current resources folder)+"print_setting.bin";$setting_x)
//モノクロ設定を読み込み
if(BLOB to print settings($setting_x)=1)
//その他オプション設定
SET PRINT OPTION(...)
//印刷開始
PRINT SELECTION(....)
end if
とこんな感じでしょうか?
いろいろ検証しなければならない事がありそうなのですが、データは取得できそうなのでcolor設定の復活をのぞみます。
DEVMODE構造体以外に、DEVNAMES構造体も保持しているんですね。
JSONを内包しているあたりで今後、新しいコマンドが出てきそうですが回避策は下記の様な感じでしょうか。
1.一旦モノクロ設定を保存する。
//モノクロ設定を保存
PRINT SETTINGS
If (OK=1)
C_BLOB($setting_x)
If (Print settings to BLOB($setting_x)=1)
BLOB TO DOCUMENT(Get 4D folder(Current resources folder)+"print_setting.bin";$setting_x)
End if
End if
2.モノクロ設定を利用する。
C_BLOB($setting_x)
DOCUMENT TO BLOB(Get 4D folder(Current resources folder)+"print_setting.bin";$setting_x)
//モノクロ設定を読み込み
if(BLOB to print settings($setting_x)=1)
//その他オプション設定
SET PRINT OPTION(...)
//印刷開始
PRINT SELECTION(....)
end if
とこんな感じでしょうか?
いろいろ検証しなければならない事がありそうなのですが、データは取得できそうなのでcolor設定の復活をのぞみます。

hosaka- 投稿数 : 241
登録日 : 2016/07/04
所在地 : 大阪
Permissions in this forum:
返信投稿: 不可
|
|