WPF 印刷パスを使用して、アプリケーションで作成された大きな大きな図を処理します。図全体はビジュアルで構成されています。
いわゆる「DesignerPaginator」がダイアグラムのページ付けを行います (非常に単純です)。この時点から、次の 3 つのことを行います。 - PrintDialog.PrintDocument(Paginator, Title) を使用してドキュメントを印刷します。HDDに保存します-XPSDocumentから、XpsDocumentWriter.GetFixedDocumentSequence()をDocumentViewerに割り当てます
一言で言えば、次のコードが重要です。
PrintDialog _pdialog = new PrintDialog();
System.Printing.ValidationResult result = this.PrintQueue.MergeAndValidatePrintTicket(this.PrintQueue.UserPrintTicket, this.PrintTicket);
_pdialog.PrintTicket = result.ValidatedPrintTicket;
XpsDocument _xpsDocument = new XpsDocument("C:\\test.xps",FileAccess.ReadWrite);
XpsDocumentWriter xpsdw = XpsDocument.CreateXpsDocumentWriter(_xpsDocument);
xpsdw.Write(this.Paginator, result.ValidatedPrintTicket);
documentviewer.Document = _xpsDocument.GetFixedDocumentSequence();
_xpsDocument.Close();
_pdialog.PrintQueue = this.PrintQueue;
_pdialog.PrintDocument(this.Paginator, "Model Test");
出力は次のとおりです。
HDD 上の XPS -> 完全にぼやけています。何も認識できません。100 倍ズームの GIF ファイルのようなものです。DocumentViewer の XPSDocument からの FixedDocumentSequence -> パーフェクト。これは、XPSファイルが印刷出力であることを意味するものでなければなりません->恐ろしく、ぼやけていますが、少なくともxpsファイルよりははるかに優れています
そして今、不思議な部分: DocumentViewer (FixedDocumentSequence が完璧に見える) から直接印刷すると、最初の印刷から同じぼやけた出力が得られます。
このケースについての私の考えは、WPF の XPS システムがコンテンツをラスタライズし、xps ドキュメント内に低品質のビットマップとして配置することです。それはすべてベクトルであり、この事実にもかかわらず、出力は常に低解像度のビットマップになじみがあるように見えます。
助けていただければ幸いです。私はアイデアがありません。私はこの問題をデバッグするために多くのことを試みましたが、どういうわけか単純であると同時に繊細なもののようです。