質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
印刷

印刷とは、インキを用いて紙などの被印刷物に機械的に複製することを指します。現在は紙などの2次元の媒体だけでなく、3次元の曲面にも直接印刷する技術など様々な開発が進んでいます。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

1回答

1579閲覧

WPFでドットプリンタの連続用紙トレイに向けて印刷することができない。

oka03

総合スコア6

印刷

印刷とは、インキを用いて紙などの被印刷物に機械的に複製することを指します。現在は紙などの2次元の媒体だけでなく、3次元の曲面にも直接印刷する技術など様々な開発が進んでいます。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2017/12/26 09:20

###前提・実現したいこと
現在、WPFで業務アプリケーションを作成しています。

FixedDocumentを作成して、帳票の印刷を行っているのですが、
一部の帳票をOKI MICROLINE 8480SU2-Rのフロントトラクタという連続用紙用のトレイから
印刷する必要があります。

しかし、プリンターのPrintQueue.PrintTicket.InputBinには該当する給紙トレイの入力
ビンが存在していません。
Windows8.1以降では給紙トレイが自動選択となっていても問題なくフロントトラクタから
印刷が行われるようなのですが、Windows7で印刷しようとすると、うまくフロントトラクタ
から印刷できないのです。

印刷ダイアログを表示する方法、またはXpxDocumentWriterから直接印刷する方法の
どちらでも試したのですが、正しく印刷できません。

WPFからprintui.dllのようにプリンタードライバーの設定情報を直接呼び出すなどして印刷
することは出来ないのでしょうか?

###該当のソースコード

C#

1 var printer = PrinterSelector.SelectedPrinterOrNull; 2 var pdlg = new PrintDialog(); 3 pdlg.PrintQueue = printer.printQueue; 4 pdlg.UserPageRangeEnabled = true; 5 // 一番近いと思われる設定を選択してみるが、フロントトラクタは選択されない 6 //pdlg.PrintTicket.InputBin = InputBin.Tractor; 7 8 // 印刷ダイアログ表示 9 if (pdlg.ShowDialog() == true) 10 { 11 // 印刷ダイアログの詳細設定で給紙トレイを正しく設定した後、 12 // ここでpdlg.PrintTicket.InputBinを確認するとUnknownとなっている 13 14 var pages = new DataGridPrintablePaginator<Order>().PrintPaginate( 15 new OrderAdjust(Order, OrderDetails), pageSize, max, last); 16 17 // Set up print ticket. 18 var ticket = pdlg.PrintTicket; 19 //var ticket = printer.printQueue.DefaultPrintTicket; 20 ticket.PageMediaSize = new PageMediaSize(pageSize.Width, pageSize.Height); 21 ticket.PageOrientation = PageOrientation.Portrait; 22 ticket.CopyCount = pdlg.PrintTicket.CopyCount; 23 ticket.Collation = Collation.Collated; 24 25 var document = new FixedDocumentCreator().FromDataContextsByMicroLine(pages, pageSize); 26 pdlg.PrintDocument(document.DocumentPaginator, "納品書"); 27 }

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

しかし、プリンターのPrintQueue.PrintTicket.InputBinには該当する給紙トレイの入力ビンが存在していません。

そのあたりはドライバ依存になってしまいます。
メーカー製ドライバでダメだったらOS標準のドライバや古いドライバを試してみては如何でしょう?
お勧めするわけではありませんが、ドットプリンタで良いドライバが無くて別機種のドライバで上手くいったことがあります。

投稿2017/12/26 10:15

hihijiji

総合スコア4150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oka03

2017/12/27 04:26

ご回答ありがとうございます。大変参考になりました。 ユーザーが既に別のシステムで使用しているPC・プリンタを使用するため、今回のアプリのためにドライバを変更することはできません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問