• Лови промокод з яким знижка 50 грн - promo50grn

WPF и XPS - как произвести преобразование XAML в XPS?

Статус: Offline
Реєстрація: 14.06.2007
Повідом.: 13581
WPF и XPS - как произвести преобразование XAML в XPS?

Переезжаем потихоньку с винформса на WPF и 4 фреймворк :) Изучаю новые (или для кого-то старые :D) технологии :)
Судя по обзорам технологий, было бы неплохо заюзать XPS формат.
Собственно нужно формирование отчетов в PDF, но решения XPS->PDF вроде как есть. Поэтому будем считать это вторым шагом.

Вопрос в том как бы поудобнее XPS файлы генерить. Очень понравился binding в XAML, хотелось бы организовать чтото наподобие XAML+binding на MVVM->XPS.
Однако гугление на тему генерации XAML->XPS дало достаточно скудные результаты. Собственно примитивную генерацию XPS сделать получилось с ходу, но... есть проблема - отчет получается без разбивки на страницы, т.к. юзаю FixedDocument. Задача в том что нужно формировать XPS, который автоматом на несколько страниц генерится, в зависимости от кол-ва строк в таблицах и т.п.

Я формирую XPS файл так:
Код:
            PageReport pageReport = new PageReport(); // XAML с объектом Page в качестве рута
            pageReport.DataContext=dataContext;

            UIElement content = (UIElement)pageReport.Content;
            pageReport.Content = null;
            ((Grid)content).Width = pageReport.Width;
            ((Grid)content).Height = pageReport.Height;

            FixedPage fixedPage = new FixedPage();
            fixedPage.Children.Add(content);
            PageContent pageContent = new PageContent();
            ((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage);
            FixedDocument fixedDoc = new FixedDocument();
            fixedDoc.Pages.Add(pageContent);
            return fixedDoc;

Все работает очень удобно - шаблон отчета можно в дизайнере студии набивать, но проблема - все на одной странице, что не влезло, то не влезло. Как сформировать FixedDocument с разбивкой на страницы? :confused:

Крутил FlowDocument, но дизайнер VS2010 не понимает такой XAML :(
Таким образом нужно дерево UIElement'ов преобразовать в XPS. Как это сделать?
 
Я бы не заморачивался с XPS, если конечная цель - PDF. Есть же библиотеки, позволяющие формировать PDF напрямую. В конце-концов, есть PDF-принтеры, с которыми можно использовать любой генератор отчетов.

Впрочем, при формировании что XPS, что PDF через библиотеки с API, подобным приведенному в твоем примере, нужно либо использовать движки формирования отчетов, которые сами умеют делать постраничную разбивку, либо реализовывать алгоритм постраничной разбивки самому (что, в общем случае, нетривиально и геморно - делал когда-то такое).
 
Я бы не заморачивался с XPS, если конечная цель - PDF. Есть же библиотеки, позволяющие формировать PDF напрямую. В конце-концов, есть PDF-принтеры, с которыми можно использовать любой генератор отчетов.

например? Какие есть бесплатные библиотеки для генерации PDF, но не на уровне "вот тебе канва рисуй, а я в PDF скину", а нормальная. Т.к. нужны вложенные сложные таблицы с автосайзом колонок/строк печатать, картинки, текст, все это форматировать должным образом.
 
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
рисовалка шаблонов xslt - altova stylevision
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
есть свой графический редактор шаблонов
 
Останнє редагування:
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
рисовалка шаблонов xslt - altova stylevision
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
есть свой графический редактор шаблонов

и то и другое на жабе писано, посему очень проблемно интегрируется в систему писанную в C# ;)

Сейчас используется nfop - дотнет порт FOP'а, жутко громоздкий, глюкавый и тормозной, но другого нету... :(
Вот и думаю, не может ли XAML->XPS стать заменой этому глючному монстру XSLT->FO->PDF. Первые опыты показали что отлично работает и было бы супер заменой, но все уперлось в разбивку на страницы, пока работает только на одной странице...
 
например? Какие есть бесплатные библиотеки для генерации PDF, но не на уровне "вот тебе канва рисуй, а я в PDF скину", а нормальная. Т.к. нужны вложенные сложные таблицы с автосайзом колонок/строк печатать, картинки, текст, все это форматировать должным образом.

Я, честно говоря, сомневаюсь, что бесплатные библиотеки такого уровня есть и для XPS - потому и не понимаю пока смысл использовать XPS как промежуточный шаг.
 
Назад
Зверху Знизу