[[Open棟梁>https://github.com/OpenTouryoProject]] wiki

-[[戻る>アプリケーション設計のポイント]]

*目次 [#zc91a281]
#contents

*概要 [#uaa19567]
クライアント側印刷、サーバ側印刷の方式に注意

*クライアント側印刷 or サーバ側印刷 [#i413fce7]
**サーバ側印刷 [#saf90e04]

***サーバ側からプリンタ出力 [#zc61b2fc]
サーバーからプリンタにアクセスするためのアクセス許可が必要になるため、~
[[ミラーアカウントア>http://techinfoofmicrosofttech.osscons.jp/index.php?%E3%83%9F%E3%83%A9%E3%83%BC%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88]]や、[[ドメイン アカウント>http://techinfoofmicrosofttech.osscons.jp/index.php?%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%20%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88]]でのサービス実行が必要になることがある。

***サーバ側でOffice、PDF出力 [#l63045bf]
-Officeドキュメントの出力は、[[Office サーバー サイド オートメーション>http://techinfoofmicrosofttech.osscons.jp/index.php?Office%20%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%20%E3%82%B5%E3%82%A4%E3%83%89%20%E3%82%AA%E3%83%BC%E3%83%88%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3]]にならないように、他の方法で出力する。

-出力後、サーバでそのまま印刷するのなら、[[サーバ側からプリンタ出力>#zc61b2fc]]+[[プログラムから印刷>#j54f0fee]]。

-出力後、ダウンロードした後に印刷するのなら、[[クライアント側印刷>#j8ce4d9d]]+手動印刷 or [[プログラムから印刷>#j54f0fee]]が選択可能。


**クライアント側印刷 [#j8ce4d9d]
アカウントについての考慮は不要。

*ローカルプリンター or 共有プリンター [#y8409932]
ローカルプリンター vs 共有プリンターを選択する必要がある。

-比較項目
--設定作業
--サーバー負荷
--サーバー障害時
--コスト
--ログ収集

**ローカルプリンター [#sf89ebb4]
軽量なのが強み。

-サーバー負荷
-サーバー障害時
-コスト

**共有プリンター [#wdaccc8b]
管理面で強みがある。

-設定作業
-ログ収集

**参考 [#h3d73ed1]
-社内プリンターの最適な設定管理方法|ローカルプリンター VS 共有プリンター~
http://www.se-support.com/clientpc/printer-unyou.html
-LAN内の全PCに自動でプリンタードライバーをインストールする方法~
http://www.se-support.com/clientpc/printer-install.html

*帳票ツール [#l5054aaa]
**製品 [#v15385a4]
基本的に製品の帳票出力ツールや印刷ツールを使用するのが良い(自作よりコスパが高い)。
-ActiveReports
-ExcelCreator
-SVF : Super Visual Formade

**FOSS [#m2153309]
FOSSなども存在するが、帳票出力ツールや印刷ツールと比べると生産性が低い。
-xxx
-xxx

*印刷プログラム [#m1409b9e]
**プリンタ選択方法 [#w3a34fe7]
プリンタ選択方法には「プリンタ選択ダイアログ」・「プログラムから指定」の2つの方法がある。

-DOBON.NET > プログラミング道 > .NET Tips > 画像、印刷
--プリンタ選択ダイアログを表示して印刷する~
http://dobon.net/vb/dotnet/graphics/printdialog.html
--インストールされているプリンタを取得する~
http://dobon.net/vb/dotnet/system/installedprinters.html

**プログラムからデータを直接印刷する方法 [#a4181971]

-DOBON.NET > プログラミング道 > .NET Tips > 画像、印刷
--印刷する~
http://dobon.net/vb/dotnet/graphics/printdocument.html
--文字列を印刷する~
http://dobon.net/vb/dotnet/graphics/printtext.html
--印刷プレビューを表示する~
http://dobon.net/vb/dotnet/graphics/printpreviewdialog.html

**プログラムからOfficeやPDFなどのドキュメントを印刷する方法 [#j54f0fee]
-ドキュメント毎に用意されたAPIを使用する。
-また、プリンタの選択方法もAPI毎に異なる。
-(帳票製品によってはAPIが提供されているものもある)

***Office印刷 [#s48f20bb]
-NonSoft
--EXCEL印刷(Worksheet.PrintOut)のサンプル(C#.NET)~
http://homepage2.nifty.com/nonnon/SoftSample/CS.NET/SampleExcelPrint.html
--エクセルを使用した帳票印刷のサンプル(VB.NET)~
http://homepage2.nifty.com/nonnon/SoftSample/VB.NET/SampleExcelPrint.html

サーバ側での上記のOffice印刷は、[[Office サーバー サイド オートメーション>http://techinfoofmicrosofttech.osscons.jp/index.php?Office%20%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%20%E3%82%B5%E3%82%A4%E3%83%89%20%E3%82%AA%E3%83%BC%E3%83%88%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3]]になるのでNGです。

***PDF印刷 [#qc2f92c9]
AcrobatかAdobeReaderプロセス起動の方法と、Acrobat SDKからの方法がある。

-プロセス起動の方法
--(VB.Net).NetからのPDFファイル印刷方法 : 3流プログラマのメモ書き
---http://jehupc.exblog.jp/8568978/
---http://jehupc.exblog.jp/8603528/

-Acrobat SDKからの方法
--PDF | VBA(Excel)からAcrobat経由でPDFをプログラミング操作(OLE:IAC)する~
http://pdf-file.nnn2.com/
---AcroExch.AVDoc メソッド一覧 | PDF~
http://pdf-file.nnn2.com/?p=220
---AcroExch.AVDoc: PrintPagesSilentEx メソッド | PDF~
http://pdf-file.nnn2.com/?p=131
>「PrintPagesSilentはいつもデフォルトプリンタ設定を使用します。」~
→ とあるので、デフォルトプリンタを変更する。

**ドライバのプロパティの設定 [#cd81b295]
例えば、「特定トレイ(n段目)の指定方法」など。

API定義(PrintTicket.InputBin プロパティ)では、~
ベンダ固有のトレイコードを指定できなくなっている。
(VB6や、Accessではベンダ指定のコードが指定できる)

***プリンタ名で設定を切替える [#ifc828a9]
プリンタの登録自体を作成して、印刷時にプリンタ名で設定を切替えるのが良い。

-VB.NETでWindowsアプリケーションを開発しています。その中の帳… - 人力検索はてな~
http://q.hatena.ne.jp/1414142380

>プリンター(ドライバ)固有の給紙方法については、環境に依存する為(同じ値でも環境によって異なる意味となる可能性がある為)、~
プリンタの登録自体をトレイ毎に作成して、印刷時にプリンタを切り替えるというやりかたの方が無難なようです。

-VB.NETでプリンタのプロパティの設定変更 - QA@IT~
http://qa.atmarkit.co.jp/q/739

>サポートセンターなどに問い合わせたところ、
-「とじ方向」--->「短辺とじ(右)」に指定 
-「排出位置(排紙ビン)」--->「ビン3」に指定

>というような設定をプログラムから指定する事は出来ないようでした。対応してないようです。

***XpsPrinterUtils [#kf6b57f2]
XpsPrinterUtilsというUtilityを使用してmyPrintTicket を作成するということをやっているようですが、上手く行っているのかよく解らない。

https://social.msdn.microsoft.com/Forums/en-US/f5859148-26f1-4e89-949c-180413bcc898/xps-printing-tray-selection-and-inputbincapability-inputbin-problem?forum=windowsxps

*HTML印刷 [#q1c1e58b]
印刷用CSSへの切り替えにはwindow.onbeforeprint、.onafterprintのイベントを使用できる。

-MSDNライブラリ > テクニカルドキュメント > Internet Explorer開発 > スクリプトによるWebページ印刷のサポート~
http://msdn.microsoft.com/ja-jp/library/dd163920.aspx


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS