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

わんくま同盟

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

C# と VB.NET の入門サイト

ツリー一括表示

プリンタの特殊設定値を変更したい /まる (17/05/09(Tue) 10:03) #84009
Re[1]: プリンタの特殊設定値を変更したい /魔界の仮面弁士 (17/05/09(Tue) 10:46) #84010
│└ Re[2]: プリンタの特殊設定値を変更したい /まる (17/05/09(Tue) 13:25) #84015
│  └ Re[3]: プリンタの特殊設定値を変更したい /Jitta (17/05/09(Tue) 14:25) #84018
│    └ Re[4]: プリンタの特殊設定値を変更したい /まる (17/05/09(Tue) 15:51) #84020
│      └ Re[5]: プリンタの特殊設定値を変更したい /WebSurfer (17/05/09(Tue) 16:13) #84021
Re[1]: プリンタの特殊設定値を変更したい /Jitta (17/05/09(Tue) 11:25) #84013
│└ Re[2]: プリンタの特殊設定値を変更したい /まる (17/05/09(Tue) 13:31) #84016
Re[1]: プリンタの特殊設定値を変更したい /まる (17/05/11(Thu) 10:39) #84043 解決済み


親記事 / ▼[ 84010 ] ▼[ 84013 ] ▼[ 84043 ]
■84009 / 親階層)  プリンタの特殊設定値を変更したい
□投稿者/ まる (9回)-(2017/05/09(Tue) 10:03:06)

分類:[ASP.NET (VB)] 

プリンタの印刷位置調整値をプログラムから制御しようとしています

レジストリの場所を把握していて直接値を設定したところ
プリンタのプロパティ画面では値が変わっているのですが印刷結果に反映しません
プロパティ画面でOKをクリックすると反映します

Win32APIのSetPrinterDataExを使って値を設定しても同様の結果になりました

値の設定後に何か再読み込みのような操作をしないと反映しないのではと予測しているのですが
何をしたらいいのかわかりません

運用上Print Spoolerサービスを再起動するようなことは出来ませんが
対象のプリンタ単体だけのソフトリセットのようなことなら可能です

何かよい提案等ありましたらお願いします
[ □ Tree ] 返信 編集キー/

▲[ 84009 ] / ▼[ 84015 ]
■84010 / 1階層)  Re[1]: プリンタの特殊設定値を変更したい
□投稿者/ 魔界の仮面弁士 (1270回)-(2017/05/09(Tue) 10:46:48)
No84009 (まる さん) に返信
> 分類:[ASP.NET (VB)]
> プリンタの印刷位置調整値をプログラムから制御しようとしています

ASP.NET というからには、Web アプリケーションなのですよね。

Web サーバー上のプリンター情報を制御しようとしているのでしょうか。
クライアント上のプリンター情報を制御しようとしているのでしょうか。


> プロパティ画面でOKをクリックすると反映します
> Win32APIのSetPrinterDataExを使って値を設定しても同様の結果になりました

Web アプリにおいて、クライアント側で Win32 API を呼び出すのは不自然ですし、
サーバー側で「プロパティ画面の OK」というのもまた不自然ですね。


本当に ASP.NET なのでしょうか。
また、印刷処理はそもそもどのようにして行っているのでしょうか。
[ 親 84009 / □ Tree ] 返信 編集キー/

▲[ 84010 ] / ▼[ 84018 ]
■84015 / 2階層)  Re[2]: プリンタの特殊設定値を変更したい
□投稿者/ まる (10回)-(2017/05/09(Tue) 13:25:54)
No84010 (魔界の仮面弁士 さん) に返信

VB.Netにした方が誤解がなかったようです申し訳ない

> Web サーバー上のプリンター情報を制御しようとしているのでしょうか。

その通りですWebサーバー上にあるプリンターの設定を変更しようとしています
[ 親 84009 / □ Tree ] 返信 編集キー/

▲[ 84015 ] / ▼[ 84020 ]
■84018 / 3階層)  Re[3]: プリンタの特殊設定値を変更したい
□投稿者/ Jitta (294回)-(2017/05/09(Tue) 14:25:12)
No84015 (まる さん) に返信
>>Web サーバー上のプリンター情報を制御しようとしているのでしょうか。
>
> その通りですWebサーバー上にあるプリンターの設定を変更しよ

ん??
どこで実行するアプリケーションを作っているのでしょうか。
どこにあるプリンタで印刷しようとしているのでしょうか。
サーバーが共有しているプリンタは、ややこしかったような?
[ 親 84009 / □ Tree ] 返信 編集キー/

▲[ 84018 ] / ▼[ 84021 ]
■84020 / 4階層)  Re[4]: プリンタの特殊設定値を変更したい
□投稿者/ まる (12回)-(2017/05/09(Tue) 15:51:24)
No84018 (Jitta さん) に返信> ん??
> どこで実行するアプリケーションを作っているのでしょうか。

Webサーバー(IIS8.5)で実行するアプリケーションです
IISでは厳しいということであればコンソールアプリケーションに変えることも可能です

> どこにあるプリンタで印刷しようとしているのでしょうか。

ネットワークプリンタでWebサーバーにプリンタ追加しています

> サーバーが共有しているプリンタは、ややこしかったような?

共有プリンタではないです
[ 親 84009 / □ Tree ] 返信 編集キー/

▲[ 84020 ] / 返信無し
■84021 / 5階層)  Re[5]: プリンタの特殊設定値を変更したい
□投稿者/ WebSurfer (1226回)-(2017/05/09(Tue) 16:13:12)
No84020 (まる さん) に返信

> Webサーバー(IIS8.5)で実行するアプリケーションです

それは何なのですか?

分類:[ASP.NET (VB)] の通り ASP.NET であればワーカープロセスをローカル SYSTEM
アカウントで動かすことが必須のようです。

セキュリティ上それが許容できれば、以下の記事に説明がありますので、その説明に沿
って試してみてはいかがですか。

サーバーからの Web ベースのレポートの印刷
https://msdn.microsoft.com/ja-jp/library/aa290045%28v=vs.71%29.aspx

Server-side printing
http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.dwnet_2.0.dwprgnet/html/dwprgnet/BEICAAJF.htm
[ 親 84009 / □ Tree ] 返信 編集キー/

▲[ 84009 ] / ▼[ 84016 ]
■84013 / 1階層)  Re[1]: プリンタの特殊設定値を変更したい
□投稿者/ Jitta (293回)-(2017/05/09(Tue) 11:25:54)
No84009 (まる さん) に返信
> プリンタの印刷位置調整値をプログラムから制御しようとしています
>
> レジストリの場所を把握していて直接値を設定したところ
> プリンタのプロパティ画面では値が変わっているのですが印刷結果に反映しません
> プロパティ画面でOKをクリックすると反映します
>
> Win32APIのSetPrinterDataExを使って値を設定しても同様の結果になりました
>
> 値の設定後に何か再読み込みのような操作をしないと反映しないのではと予測しているのですが
> 何をしたらいいのかわかりません
>
印刷を行うアプリケーションのメモリ上にコピーしてあるので、
レジストリ値を変えても、次の印刷(別アプリか、一旦プリンタを変更した後)まで変わりません。
なので、メモリを直接いじることになるのですが、
プライベートDEVMODEにあるデータはメーカーオリジナルなので、
メーカーが明かしてくれない限り触るのは無謀です。
設定を変えたプリンタを作り、プリンタを変えて対応ってのが一般的です。
[ 親 84009 / □ Tree ] 返信 編集キー/

▲[ 84013 ] / 返信無し
■84016 / 2階層)  Re[2]: プリンタの特殊設定値を変更したい
□投稿者/ まる (11回)-(2017/05/09(Tue) 13:31:20)
No84013 (Jitta さん) に返信

> 印刷を行うアプリケーションのメモリ上にコピーしてあるので、
> レジストリ値を変えても、次の印刷(別アプリか、一旦プリンタを変更した後)まで変わりません。

ということはアプリケーションプールのリサイクルや再起動等で対応できそうですね
もしくは印刷処理自体をコンソールアプリ化して実行すれば毎印刷ごとに設定を読み込みなおしてくれたりするでしょうか?

印刷処理はCrystalReportを使用しています
[ 親 84009 / □ Tree ] 返信 編集キー/

▲[ 84009 ] / 返信無し
■84043 / 1階層)  Re[1]: プリンタの特殊設定値を変更したい
□投稿者/ まる (13回)-(2017/05/11(Thu) 10:39:53)
みなさま回答ありがとうございました

プリンタ側で印字調整を行わずにCrystarlReport内で印字調整を行うようにしました

ひとまず解決です
解決済み
[ 親 84009 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -