前提・実現したいこと
C#(WPF)で、スクリーンキャプチャの印刷を中央寄せでしたいです。
発生している問題・エラーメッセージ
Windows7、Windows10どちらでも使いたいのですが、 Windows10では中央寄せできたのですが、Windows7の画像がズレたり欠けたりしています。 原因は、用紙サイズ、余白、描画可能範囲が7と10で違う値になっているためでした。 OSのバージョンによって処理を変えるしか方法はないのでしょうか?
該当のソースコード
C#(WPF)
1 var defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue(); 2 var userPrintTicket = defaultPrintQueue.UserPrintTicket; 3 var pageImageableArea = defaultPrintQueue.GetPrintCapabilities().PageImageableArea; 4 5 var pageWidth = userPrintTicket.PageMediaSize.Width.Value; // 用紙サイズ 6 var pageHeight = userPrintTicket.PageMediaSize.Height.Value; 7 var originWidth = pageImageableArea.OriginWidth; // 余白 8 var originHeight = pageImageableArea.OriginHeight; 9 var extentWidth = pageImageableArea.ExtentWidth; // 描画可能範囲 10 var extentHeight = pageImageableArea.ExtentHeight;
https://teratail.com/questions/30698
この質問は参考になりますか?
返信ありがとうございます。
いただいたURLを見てみましたが、用紙サイズ等がなぜ正しく取れないのかわかりませんでした。
PageMediaSizeNameを取得してみたところ、同じプリンタで同じように設定しているのですが、Win10ではISOA4となるのに、Win7ではNorthAmericaLetterとなっていました。前提条件に書けていませんでしたが英語OSのせいかもしれません。
そのため、以下のようにA4を代入しましたが、今度は用紙サイズがWもHもNullになってしまいました。
userPrintTicket.PageMediaSize = new PageMediaSize(PageMediaSizeName.ISOA4);
ひとまず、無理やり位置調整してOSが7か10かで処理を分けています。
用紙サイズが無いのでインストールしてください。プリンタによって方法は違います。
ありがとうございました。
プリンタのインストールをやり直すことで、
同じ用紙サイズを指定していれば、
PC&OSが違っていても用紙サイズが同じ値になることが確認できました。
すみません。なかなか環境が用意できず返信が遅れてしまいました。
これで中央寄せもできそうです。また時間がかかりそうですので、これで解決にしたいと思います。
自己解決してください。
回答1件
あなたの回答
tips
プレビュー