4D-JUG
Would you like to react to this message? Create an account in a few clicks or log in to continue.

PRINT OPTION:Color optionの廃止について

2 posters

Go down

PRINT OPTION:Color optionの廃止について Empty PRINT OPTION:Color optionの廃止について

投稿 by hosaka 2018-09-18, 2:06 pm

v17のドキュメントを見ていると64bitバージョンで廃止となっていました。
セコイ話かもしれませんが、カラー印刷だとほとんど白黒でもインクを大量に消費するのでインク節約のためモノクロ印刷をしているところがあるのですが、なにか代替案はあるのでしょうか?
hosaka
hosaka

投稿数 : 241
登録日 : 2016/07/04
所在地 : 大阪

トップに戻る Go down

PRINT OPTION:Color optionの廃止について Empty Re: PRINT OPTION:Color optionの廃止について

投稿 by miyako 2018-09-18, 2:26 pm

BLOB TO PRINT OPTIONで制御できるかもしれません pig

(4D Japan内では,v2004のときから,4D Packの同等コマンドで白黒とカラーを切り替えていました)

miyako

投稿数 : 480
登録日 : 2016/07/05

トップに戻る Go down

PRINT OPTION:Color optionの廃止について Empty Re: PRINT OPTION:Color optionの廃止について

投稿 by hosaka 2018-09-18, 2:30 pm

早い Shocked

いろいろ調べていたのですが、このBLOBの内容ってwindowsの場合、DEVMODE構造体ということで良いのでしょうか?
構造体的にはカラー設定はある様なのですが、なぜPRINT OPTIONからは廃止となったのでしょうか?
hosaka
hosaka

投稿数 : 241
登録日 : 2016/07/04
所在地 : 大阪

トップに戻る Go down

PRINT OPTION:Color optionの廃止について Empty Re: PRINT OPTION:Color optionの廃止について

投稿 by miyako 2018-09-18, 3:10 pm

印刷設定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;

miyako

投稿数 : 480
登録日 : 2016/07/05

トップに戻る Go down

PRINT OPTION:Color optionの廃止について Empty Re: PRINT OPTION:Color optionの廃止について

投稿 by hosaka 2018-09-18, 3:38 pm

詳細な情報ありがとうございます。
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設定の復活をのぞみます。 Very Happy
hosaka
hosaka

投稿数 : 241
登録日 : 2016/07/04
所在地 : 大阪

トップに戻る Go down

PRINT OPTION:Color optionの廃止について Empty Re: PRINT OPTION:Color optionの廃止について

投稿 by miyako 2021-03-24, 10:01 pm

https://github.com/miyako/4d-component-print-settings/

BLOBコマンドで読み書きできないか,試してみました

miyako

投稿数 : 480
登録日 : 2016/07/05

トップに戻る Go down

PRINT OPTION:Color optionの廃止について Empty Re: PRINT OPTION:Color optionの廃止について

投稿 by Sponsored content


Sponsored content


トップに戻る Go down

トップに戻る


 
Permissions in this forum:
返信投稿: 不可