Недавно я попытался сгенерировать отчеты в Silverlight 4. В моей проблемной области эти отчеты либо должны отправляться непосредственно на принтер, и / или клиентское приложение SL создает PDF-файл и позволяет пользователю где-то его хранить.
Что касается отчета, он примерно состоит из 50% текстового потока (включая перечисления), 30% таблиц и 20% диаграмм.Часть потока текста делает его немного более сложным, так как должен произойти правильный разрыв строки.
До сих пор я пробовал следующие подходы - каждый со своими собственными недостатками, которые делают их не столь выполнимыми:
Собственный Silverlight PrintDocument
: технически существуют две основные проблемы.С одной стороны, заставить работать разрывы страниц и печатать на них элементы UIE с надлежащей версткой, что является грязным занятием и полным компромиссов;К счастью, это та часть, которую мне удалось получить до сих пор.Однако класс PrintDocument
всегда отрисовывает все визуальные эффекты как растровые изображения перед их отправкой;Это не так весело, если вы используете принтер PDF и надеетесь, что сможете искать / выбирать текст.Подход Дэвида Полла в «Silverlight and Beyond» [1] оказался не таким полезным, так как по своей сути придерживается того же подхода и, следовательно, страдает от очень похожих проблем.
silverPDF [2] : плохо документированная библиотека, которая требует выполнения большей части макета вручную (прежний подход позволил мне, по крайней мере, повторно использовать механизм макета Silverlight).До сих пор я не вижу способа (например) измерить абзацы, и единственный образец с длинным потоковым текстом использует жестко закодированные абсолютные значения для прямоугольников макета.Кроме того, развивающаяся сторона, кажется, неактивна.
Лично я сейчас думаю о совершенно другой стратегии: просто генерировать документы HTML.Но я надеялся, что у сообщества здесь могут быть намеки на два вышеупомянутых подхода или известны другие хорошие подходы.
Заранее спасибо, ~ Мэнни