Uso il percorso di stampa WPF per gestire diagrammi di grandi dimensioni creati nella nostra applicazione. L'intero diagramma è costituito da elementi visivi.Il salvataggio e la stampa di XPSDocument tramite Paginator (sembra) causa una rasterizzazione del contenuto
Un cosiddetto "DesignerPaginator" impagina il diagramma (è piuttosto semplice). Da questo punto, faccio le seguenti tre cose: - Stampo il documento con PrintDialog.PrintDocument (Paginator, Title) - Creo anche un documento XPS con XpsDocumentWriter.Write (Paginator, PrintTicket); che risparmio sul disco rigido - Dal XpsDocument assegno XpsDocumentWriter.GetFixedDocumentSequence() per un DocumentViewer
In poche parole, seguente codice è importante:
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");
L'output è la seguente:
XPS su HDD -> assolutamente sfocato. Non puoi riconoscere nulla. È come un file GIF con uno zoom 100x. FixedDocumentSequence da XPSDocument in DocumentViewer -> Perfect. Questo dovrebbe essere il significato del file XPS Stampa output -> Orribile, sfocato, ma almeno molto meglio del file xps
E ora la parte misteriosa: se stampo direttamente dal DocumentViewer (in cui il FixedDocumentSequence sembra perfetto), ottengo lo stesso output sfocato dalla prima stampa.
Il mio pensiero su questo caso è che il sistema XPS di WPF rasterizza il contenuto e posiziona le cose come bitmap di bassa qualità all'interno del documento xps. Sono tutti i vettori, e nonostante questo l'output sembra sempre familiare a una bitmap a bassa risoluzione.
Apprezzerei qualsiasi aiuto. Sono fuori di idee. Ho provato molto a eseguire il debug di questo problema, ma in qualche modo sembra essere qualcosa di semplice e delicato allo stesso tempo.
Anch'io ho combattuto la rasterizzazione come un matto. niente affatto divertente. –