Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows で複数部数を印刷すると、増える #639

Closed
AkihaTohno opened this issue Sep 26, 2014 · 28 comments
Closed

Windows で複数部数を印刷すると、増える #639

AkihaTohno opened this issue Sep 26, 2014 · 28 comments

Comments

@AkihaTohno
Copy link

はじめまして。
Windows7 32Bit上の香り屋版Vimで複数枚印刷の設定を行うとなぜか、指定した枚数の倍の枚数
印刷されてしまいます。一枚の場合は問題ありません。

対処をお願いします。


@koron による補足

  • hardcopy 実行時のダイアログの「部数」に2を指定することで発生。それ以上は試していない
  • +kaoriya パッチの有無には関係なく発生した
  • vim/gvim は関係なく発生した
  • 32/64ビット は関係なく発生した
  • プリンタ依存の可能性がある。Photosmart 5520では発生したが、XPS Document Writerでは発生しなかった
  • 試すときは要注意。紙がスゴい勢いで減るw

@mattn による補足

  • mingw32 でビルドした vim.exe で物理プリンタを使用して再現せずだった
@mattn
Copy link
Member

mattn commented Sep 26, 2014

こちら(Win7 32bit)で確認(非kaoriya)しましたが、再現しませんでした。

これの2を指定している部分の事で良いでしょうか?

@koron
Copy link
Member

koron commented Sep 26, 2014

@AkihaTohno 念のためプリンタのメーカー&型番を教えてもらえますか?

@koron
Copy link
Member

koron commented Sep 26, 2014

:hardcopy して部数に2を選択すると gvim +kaoriya, 32 & 64 どちらでも再現した。
非パッチでどうなるかはこれから試す。

プリンタは HP Photosmart 5520
キューをみてると 1/2 ってなってるんだけど、そのうち 3/2 になるw

@koron
Copy link
Member

koron commented Sep 26, 2014

非パッチ64bitのgvimで試したが、発生した。

なんだかんだで15枚、紙を無駄にしましたわw

@mattn gvim でやりました? 物理的なプリンタでやってみました?

@AkihaTohno やはり一応、プリンタのメーカーと型番を教えておいてください。

@koron koron changed the title Windows7 32bitでの印刷 Windows での印刷 Sep 26, 2014
@koron
Copy link
Member

koron commented Sep 26, 2014

一応、わかりやすいように最初のコメに今わかってることを追記しておきました。

@koron koron changed the title Windows での印刷 Windows で複数部数を印刷すると、増える Sep 26, 2014
@mattn
Copy link
Member

mattn commented Sep 26, 2014

vim.exe でやりました。さっき物理プリンタでやりましたが再現せずでした。

@koron
Copy link
Member

koron commented Sep 26, 2014

@mattn プリンタメーカーと型番をおねがいします。

@mattn
Copy link
Member

mattn commented Sep 26, 2014

D でおくりまーす。

@koron
Copy link
Member

koron commented Sep 26, 2014

ウン百万する業務用複合機はお帰りください (´・ω・`)

w

@AkihaTohno
Copy link
Author

こんにちは。
こちらの環境はCanon LBP8630になります。
gvimですね

@koron
Copy link
Member

koron commented Sep 26, 2014

@mattn 民生のインクジェットプリンタで試せます?
あと使ってる vim.exe どっかに置いておいてもらえますか?
例の鯖でも良いです。

@AkihaTohno ありがとうございます。
LBP8360 の仕様

@mattn
Copy link
Member

mattn commented Sep 26, 2014

今手元にないですー。次のチャンスにやります。

@koron
Copy link
Member

koron commented Sep 26, 2014

レーザープリンタでも発生するのは、ちょっと意外。

あと念のため HP Officejet Pro L7500 でも発生することを確認。

@mattn あ、うちのvim.exeかgvim.exeで、その大丈夫だったプリンタで試せます?

@mattn
Copy link
Member

mattn commented Sep 26, 2014

あーーーーーーーーーーーーーーーーーーーーーーーっ

すいませんすいません。複合機の画面に2ページって出てたので「あー2Pかー」と削除ボタンを押しましたが、さっき紙に出してみたら 2部 x 謎の2 で4枚出た。

@k-takata
Copy link
Member

試してないのですが、実は、3部指定したら9ページ出たりしません?
n_collated_copies と n_uncollated_copies の両方に、prt_dlg.nCopies 代入してるけど…。

@mattn
Copy link
Member

mattn commented Sep 26, 2014

n_collated_copies と n_uncollated_copies の両方に、prt_dlg.nCopies 代入してるけど…。

どちらかにしか nCopies は入らない様です。

@k-takata
Copy link
Member

あ、見間違えてた。条件が逆になってますね。

@mattn
Copy link
Member

mattn commented Sep 26, 2014

https://github.com/vim-jp/vim/blob/master/src/hardcopy.c#L701

ページ毎にこんな事やってるけど、いいんだっけ。
settings そのまま渡ってるけど。

@mattn
Copy link
Member

mattn commented Sep 26, 2014

うむ。ひとまず大丈夫そげ。原因は他。

@koron
Copy link
Member

koron commented Sep 26, 2014

さっき紙に出してみたら 2部 x 謎の2 で4枚出た。

www

@k-takata
Copy link
Member

http://msdn.microsoft.com/en-us/library/windows/desktop/ms646843.aspx

When making calls to GDI, you must ignore the value of nCopies, consider the value as 1, and use the returned hDC to avoid printing duplicate copies.

ん?どういうこと?

@mattn
Copy link
Member

mattn commented Sep 26, 2014

PD_USEDEVMODECOPIESANDCOLLATE これ?

@mattn
Copy link
Member

mattn commented Sep 26, 2014

これで直ったっぽい。誰か試してー。

diff -r e861ee614a3a src/os_mswin.c
--- a/src/os_mswin.c    Wed Sep 24 10:58:20 2014 +0900
+++ b/src/os_mswin.c    Fri Sep 26 17:25:09 2014 +0900
@@ -1673,16 +1692,22 @@
      */
     psettings->chars_per_line = prt_get_cpl();
     psettings->lines_per_page = prt_get_lpp();
-    psettings->n_collated_copies = (prt_dlg.Flags & PD_COLLATE)
-                           ? prt_dlg.nCopies : 1;
-    psettings->n_uncollated_copies = (prt_dlg.Flags & PD_COLLATE)
-                           ? 1 : prt_dlg.nCopies;
-
-    if (psettings->n_collated_copies == 0)
+    if (prt_dlg.Flags & PD_USEDEVMODECOPIESANDCOLLATE)
+    {
+   psettings->n_collated_copies = (prt_dlg.Flags & PD_COLLATE)
+                           ? prt_dlg.nCopies : 1;
+   psettings->n_uncollated_copies = (prt_dlg.Flags & PD_COLLATE)
+                           ? 1 : prt_dlg.nCopies;
+
+   if (psettings->n_collated_copies == 0)
+       psettings->n_collated_copies = 1;
+
+   if (psettings->n_uncollated_copies == 0)
+       psettings->n_uncollated_copies = 1;
+    } else {
    psettings->n_collated_copies = 1;
-
-    if (psettings->n_uncollated_copies == 0)
    psettings->n_uncollated_copies = 1;
+    }

     psettings->jobname = jobname;

@koron
Copy link
Member

koron commented Sep 26, 2014

やった! 2枚しかでなかった!w

@koron
Copy link
Member

koron commented Sep 26, 2014

@mattn というわけでそれで治ってます 👍

@mattn
Copy link
Member

mattn commented Sep 26, 2014

@mattn mattn self-assigned this Sep 26, 2014
@rbtnn
Copy link

rbtnn commented Sep 27, 2014

@k-takata
Copy link
Member

早い!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants