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

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

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

Re[2]: Printerの印刷部数を設定できない


(過去ログ 127 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■75614 / inTopicNo.1)  Printerの印刷部数を設定できない
  
□投稿者/ ふるふる (6回)-(2015/04/14(Tue) 16:32:50)

分類:[VB.NET/VB2005 以降] 

分類[VB.Net / VB2010]

開発環境はWindows7(英語) 64Bit, VB2010です。

アクロバットリーダーでPDFを印刷するのですが、画面を出さずに印刷すべく、AcroRd32.exeにコマンドラインで印刷してます。
スイッチに印刷部数がないので指定の部数分ループでまわしているのですが、速くならないか、と要望が来ました。

そこで、プリンターの部数を設定して印刷しようとしましたが、1部しか印刷しません。
次のようにしています。(m_LocationはAcroRd32.exeへのフルパスが入っています)

Public Sub PrintPDF(ByVal filepath As String, ByVal PrintNumber As Short)

  Dim pd As System.Drawing.Printing.PrintDocument = New System.Drawing.Printing.PrintDocument
  pd.DefaultPageSettings.PrinterSettings.Copies = PrintNumber
・・・
        '===Acrobatを起動し印刷===
        Dim pro As New Process()
        'Acrobatのフルパス設定
        pro.StartInfo.FileName = m_Location
        pro.StartInfo.Verb = "open"
        'Acrobatのコマンドライン引数設定
        pro.StartInfo.Arguments = " /n /s /t " + """" + filepath + """"


Copiesプロパティに設定後、プリンタのプロパティを開いて確認しても1のままです。
(プリンタはFujiのFX DocuCentre-IV C4470)

部数の変更方法、あるいはAcrobat Readerで複数部数を印刷する方法はありますか?


引用返信 編集キー/
■75615 / inTopicNo.2)  Re[1]: Printerの印刷部数を設定できない
□投稿者/ shu (729回)-(2015/04/14(Tue) 17:04:57)
No75614 (ふるふる さん) に返信
>
> Dim pd As System.Drawing.Printing.PrintDocument = New System.Drawing.Printing.PrintDocument
> pd.DefaultPageSettings.PrinterSettings.Copies = PrintNumber
> ・・・
PrintDocumentで印刷部数を設定しても意味がないです。


iTextSharpを使用してみてはどうでしょう?
http://codezine.jp/article/detail/462
引用返信 編集キー/
■75616 / inTopicNo.3)  Re[1]: Printerの印刷部数を設定できない
□投稿者/ Azulean (464回)-(2015/04/14(Tue) 22:44:13)
No75614 (ふるふる さん) に返信
> Public Sub PrintPDF(ByVal filepath As String, ByVal PrintNumber As Short)
>
> Dim pd As System.Drawing.Printing.PrintDocument = New System.Drawing.Printing.PrintDocument
> pd.DefaultPageSettings.PrinterSettings.Copies = PrintNumber
(略)

補足です。
PrintDocument はあくまで自分で印刷する処理を作るときに効果があるものであり、外部プロセスに対して何も影響しません。


> 部数の変更方法、あるいはAcrobat Readerで複数部数を印刷する方法はありますか?

Acrobat Reader を外部プロセスとして使う限り、コマンドラインスイッチか、ウィンドウを無理矢理外部から操作する(マウス操作のエミュレートなど)ぐらいしか方法はありません。
それらの方法は安定的ではないと思うので、自分で PDF を開いて印刷するソリューションを探すか、Adobe が提供する製品組み込みソリューションを探すかでしょうか。
引用返信 編集キー/
■75617 / inTopicNo.4)  Re[2]: Printerの印刷部数を設定できない
□投稿者/ ふるふる (8回)-(2015/04/15(Wed) 09:15:40)
Azuleanさん、ありがとうございます。
理由がわかって納得できます。

御存知とは思いますが、Adobe Readerのコマンドラインスイッチに印刷部数指定はありません。
次のページを見つけてはいたので、Win32APIで対応はできました。
http://kb2.adobe.com/jp/cps/510/510504.html

ただ、Win32APIを使うのは .Net の流儀じゃないと思うので、.NetからOpenPrinter, GetPrinter, SetPrinter, ClosePrinterに変わる方法があれば知りたいと思います。

解決には以下のスレッドが参考になりました。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=57499&KLOG=96

iTextSharpはPDFファイルを作成するためのもののようですね。
今回は出来上がっているPDFファイルをプリンターで自動印刷するのが目的なので、ちょっと違うようです。

解決はしていますが、.Netでの方法がわかれば教えていただきたく。

ありがとうございました。


No75616 (Azulean さん) に返信
> ■No75614 (ふるふる さん) に返信
>>Public Sub PrintPDF(ByVal filepath As String, ByVal PrintNumber As Short)
>>
>> Dim pd As System.Drawing.Printing.PrintDocument = New System.Drawing.Printing.PrintDocument
>> pd.DefaultPageSettings.PrinterSettings.Copies = PrintNumber
> (略)
>
> 補足です。
> PrintDocument はあくまで自分で印刷する処理を作るときに効果があるものであり、外部プロセスに対して何も影響しません。
>
>
>>部数の変更方法、あるいはAcrobat Readerで複数部数を印刷する方法はありますか?
>
> Acrobat Reader を外部プロセスとして使う限り、コマンドラインスイッチか、ウィンドウを無理矢理外部から操作する(マウス操作のエミュレートなど)ぐらいしか方法はありません。
> それらの方法は安定的ではないと思うので、自分で PDF を開いて印刷するソリューションを探すか、Adobe が提供する製品組み込みソリューションを探すかでしょうか。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -