Здравствуйте, Мы пытаемся создать собственную систему шаблонов, такую как элементы заголовка и нижнего колонтитула WPF, с холстом для 2D-чертежей для экспорта в PDF. Проблема в том, что XpsWriter занимает около 7 секунд для написания документа XPS и еще 3 секунды для преобразования в PDF с помощью PDFSharp. Нам нужно это сделать, поскольку пользователь ждет PDF. Сначала я подозревал его в связи с количеством FrameworkElements в нем, но их всего 5000. Элементы структуры - это в основном данные PATH с заливками, штрихами и кистями.WPF to XPS Very Slow
Canvas ComplexCanvas = new Canvas();
ComplexCanvas.Children.Add(5000Elements);
System.Windows.Documents.FixedDocument fixedDoc = new System.Windows.Documents.FixedDocument();
System.Windows.Documents.PageContent pageContent = new System.Windows.Documents.PageContent();
System.Windows.Documents.FixedPage fixedPage = new System.Windows.Documents.FixedPage();
//Create first page of document
fixedPage.Children.Add(ComplexCanvas);
fixedPage.Width = PageWidth;
fixedPage.Height = PageHeight;
((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage);
fixedDoc.Pages.Add(pageContent);
System.Windows.Xps.Packaging.XpsDocument xpsd = new XpsDocument(Path, System.IO.FileAccess.Write);
System.Windows.Xps.XpsDocumentWriter xw = XpsDocument.CreateXpsDocumentWriter(xpsd);
xw.Write(fixedDoc);
xpsd.Close();
Кто-нибудь знает способ ускорить это? Возможно, какой-то тип Visual Object или «Сгладить» Canvas каким-то образом или любые идеи. Когда он работает, PDF составляет более 5 МБ.
Хотелось бы, чтобы держать его VECTOR как можно больше
Я только что обнаружил, что использование прозрачных кистей в некоторых случаях приводило к сбою PDFSharp. Вместо этого я использовал пустую визуальную кисть. Это само по себе вызывает дополнительные 5 секунд –
Получается, что SolidColorBrush («Цвет») использует больше ресурсов, чем «Brush.Color». Использование Brush.Color потребовало дополнительных 5 секунд с конвертацией в XPS –