知識マップ: Windows業務アプリの印刷とPDF出力 ── System.Drawing.Printing / WPF / 帳票ライブラリの使い分け

記事「Windows業務アプリの印刷とPDF出力 ── System.Drawing.Printing / WPF / 帳票ライブラリの使い分け」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

Windows業務アプリの印刷は、画面がWinFormsならPrintDocument、WPFなら流し込み優先のFlowDocumentか固定レイアウト優先のFixedDocumentを使うのが素直で、それぞれGDI印刷パスとXPS印刷パスという別経路でスプーラーへ送られます。余白はMarginBoundsとプリンター側のハードマージンが別々に決まり、両者を意識せず描画すると印刷の端が欠けます。無人バッチでPDFだけを生成したいなら、対話的な保存先選択が前提のMicrosoft Print to PDFではなくPDF生成ライブラリでの直接生成が向きます。サーバーサイドやWindowsサービスでのOffice COM自動化はMicrosoftが非サポートと明言しており不安定な動作やデッドロックを招き得るため、常駐処理からの印刷はセッション0の制約とあわせて設計する必要があります。

Windows業務アプリの印刷・PDF出力の知識マップPrintDocument・FixedDocument・FlowDocument・PDF生成ライブラリがGDI印刷パスとXPS印刷パスのどちらを通るか、余白とハードマージンのずれが印刷の端の欠けを生む仕組み、無人バッチではMicrosoft Print to PDFではなくPDFライブラリが向くこと、サービスやOffice COM自動化の制約の関係を示す図。利用する利用する利用する利用する利用する利用する利用する原因になり得る原因になり得る防止する利用する用いるのは非推奨推奨される対応用いるのは非推奨原因になり得る利用する利用する原因になり得る原因になり得る推奨される対応用いるのは非推奨PrintDocument(WinFormsの印刷)FixedDocumentPDF生成ライブラリGDI印刷パスXPS印刷パスFlowDocument印刷スプーラーMarginBoundsハードマージン印刷の端の欠けPrintableArea(印字可能な範囲)Microsoft Print to PDF無人バッチでのPDF大量生成サーバーサイドOffice COM自動化Windowsサービスデッドロック(deadlock)COM(コンポーネントオブジェクトモデル)セッション0対話的な待ちによるハングGDIハンドルリークWindows Forms

概念間の関係(全21件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

PrintDocument(WinFormsの印刷)
DocumentNameやPrinterSettingsを設定し、PrintPageイベントで描画してPrint()で印刷を開始するWinFormsの印刷用クラス。
FixedDocument
アプリケーション側がレイアウトを完全に制御する、表示・印刷デバイスへの忠実度優先のWPF文書。
PDF生成ライブラリ
印刷パイプラインを経由せず、PDFファイルを直接生成するライブラリ群の総称。
FlowDocument
ウィンドウサイズやフォント設定など実行時の変数に応じて内容を動的に再レイアウトする、可読性優先のWPF文書。
XPS印刷パス
XPS(XML Paper Specification)ベースのプリンタードライバー向けの経路で、WPFアプリケーションが本来使う印刷経路。
GDI印刷パス
Win32 GDIアプリケーションの描画命令をEMF(拡張メタファイル)としてスプールする、従来のWinFormsアプリが通る印刷経路。
ハードマージン
プリンターが物理的に印字できない、用紙の端の帯。アプリからは狭められない。
MarginBounds
アプリが指定したMargins(既定は上下左右1インチ)だけから計算される描画可能領域で、印字可能な範囲へは自動で丸められない。
PrintableArea(印字可能な範囲)
プリンターが印字できる範囲を100分の1インチ単位で表す、PageSettingsのプロパティ。
Microsoft Print to PDF
Windows 10以降に標準搭載された、印刷キューとドライバーパッケージという位置づけのPDF出力機能。保存先を尋ねる対話的な動作が前提。
サーバーサイドOffice COM自動化
ASP/ASP.NET/DCOM/NTサービスなど無人・非対話のクライアントからExcel.Applicationなどを操作する構成。Microsoftは公式に非推奨・非サポートとしている。
Windowsサービス
ユーザーのサインインと無関係にバックグラウンドで動くWindowsのプロセス。
セッション0
Windows Vista以降、サービスなど対話的ユーザーに関わらないプロセス専用に予約された、ユーザーの対話的セッションとは分離されたセッション。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。