Я использую путь печати WPF для обработки больших диаграмм, созданных в нашем приложении. Вся диаграмма состоит из визуальных эффектов.Сохранение и печать XPSDocument через Paginator (похоже) вызывает растеризацию содержимого
Так называемый «DesignerPaginator» разбивает диаграммы на диаграмму (это довольно просто). С этого момента я делаю следующие три вещи: - Я печатаю документ с PrintDialog.PrintDocument (Paginator, Title) - Я также создаю XPS-документ с XpsDocumentWriter.Write (Paginator, PrintTicket); которые я экономлю на 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");
Выход заключается в следующем:
XPS на HDD -> абсолютно размытый. Вы ничего не узнаете. Это похоже на GIF-файл с 100-кратным увеличением. FixedDocumentSequence из XPSDocument в DocumentViewer -> Perfect. Это должно быть то, что XPS-файл должен быть . Версия для печати -> Ужасно, размыто, но по крайней мере намного лучше, чем файл xps.
И теперь таинственная часть: если я печатаю непосредственно из DocumentViewer (в котором FixedDocumentSequence кажется идеальным), я получаю тот же размытый вывод из первой печати.
Моя мысль об этом случае заключается в том, что система XPS WPF растеризует контент и помещает его в качестве растрового изображения низкого качества в документе xps. Это все векторы, и, несмотря на это, вывод всегда кажется знакомым для растрового изображения с низким разрешением.
Буду признателен за любую помощь. У меня нет идей. Я много пробовал отлаживать эту проблему, но это как-то кажется простым и деликатным одновременно.
Я тоже борюсь с растеризацией, как сумасшедший. вообще не весело. –