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

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

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

xpsファイルの印刷について

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

■83267 / inTopicNo.1)  xpsファイルの印刷について
  
□投稿者/ らいく (1回)-(2017/03/16(Thu) 00:18:53)

分類:[.NET 全般] 

初めて投稿させていただきます。

VB.NET初心者(VBAなら少々やっておりました)です。

現在xpsファイルを印刷するプログラムを構築中で、

https://msdn.microsoft.com/ja-jp/library/aa969772

を参考にして下記のコードを作成。

    Private Class BatchXPSPrinter

        Public Shared Sub PrintXPS()
            Dim localPrintServer As New LocalPrintServer()
            Dim defaultPrintQueue As PrintQueue = LocalPrintServer.GetDefaultPrintQueue()

            Dim nextFile As String = My.Application.Info.DirectoryPath & "\1.xps"
            Dim xpsPrintJob As PrintSystemJobInfo = defaultPrintQueue.AddJob("1.xps", nextFile, False)

        End Sub
    End Class

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Call BatchXPSPrinter.PrintXPS()
   End Sub


しかし、xpsファイル内の印刷物(A4用紙3枚程度)が横縦混在の場合、

横方向の印刷は用紙が縦で横印刷するため、印刷内容が収まりません。

判別して横縦を振り分けて印刷する手段をご存知の方、もしくは

参考サイトをお教えいただければと思っております。

なにとぞよろしくお願いします。

Windows7Pro VisualStudio2015 を使用してます。




引用返信 編集キー/
■83291 / inTopicNo.2)  Re[1]: xpsファイルの印刷について
□投稿者/ とっちゃん (428回)-(2017/03/16(Thu) 13:11:14)
No83267 (らいく さん) に返信

> 現在xpsファイルを印刷するプログラムを構築中で、
>
> https://msdn.microsoft.com/ja-jp/library/aa969772
>
> を参考にして下記のコードを作成。
>
> Private Class BatchXPSPrinter
>
> Public Shared Sub PrintXPS()
> Dim localPrintServer As New LocalPrintServer()
> Dim defaultPrintQueue As PrintQueue = LocalPrintServer.GetDefaultPrintQueue()
>
> Dim nextFile As String = My.Application.Info.DirectoryPath & "\1.xps"
> Dim xpsPrintJob As PrintSystemJobInfo = defaultPrintQueue.AddJob("1.xps", nextFile, False)
>
> End Sub
> End Class
>
> Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
> Call BatchXPSPrinter.PrintXPS()
> End Sub
>
本題ではないですが、
Dim nextFile As String = My.Application.Info.DirectoryPath & "\1.xps"
よりも、
System.IO.Path.Combine を使った方がいいかな?という気がします。
元のサンプルがあれなので、そうなってるのかもしれませんが。


>
> しかし、xpsファイル内の印刷物(A4用紙3枚程度)が横縦混在の場合、
>
> 横方向の印刷は用紙が縦で横印刷するため、印刷内容が収まりません。
>
> 判別して横縦を振り分けて印刷する手段をご存知の方、もしくは
>
> 参考サイトをお教えいただければと思っております。

提示コードの PrintXPS() は、いわゆるバッチ処理というタイプのもので
xpsファイルをプリンタドライバに直接的に渡して印刷してもらう形です。
(xpsはもともと印刷向けに作られたフォーマット)

なので、XPSをデータとして読み取って必要に応じてプリンタの初期化やら
設定変更やらを施しつつ印刷するという段取りを改めて作り上げる必要があると思います。


参考になるかわかりませんが、

XPS ドキュメントの印刷
https://msdn.microsoft.com/ja-jp/library/ms771525

というのを見つけたので見てみてはいかがでしょうか?

なお、XPSの処理を行う場合、WPF の知識も必要になってくるのでちょっと大変かもしれません。

個人的には、作成する XPS ファイルを再加工性なくても済むように
最初の出力の時点できちんと対応しておけばいいんじゃないの?
という気がします。

そうであれば、印刷処理は今のままでも問題なく行えます。

引用返信 編集キー/
■83313 / inTopicNo.3)  Re[2]: xpsファイルの印刷について
□投稿者/ らいく (2回)-(2017/03/16(Thu) 20:32:49)
No83291 (とっちゃん さん) に返信

早速のお返事ありがとうございます。

やはり、簡単には出来ないですよね・・・

WPFについても学んでみたいと思います。

ありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ