Печать с веб-страниц (особенно отчетов) с большей точностью - PullRequest
2 голосов
/ 18 марта 2010

Я переделываю приложение Windows для переноса в Интернет. Одной из областей, которая беспокоит, является «печать».

Приложение требует больших объемов данных, поэтому необходимо создавать сложные отчеты. Прежнее Windows-приложение использует API-интерфейсы принтеров и предоставляет пользователям сложный контроль. Он поддерживает такие функции, как разрыв страницы, предотвращение печати на печатных частях листа (например, на бланках), выбор макетов и ориентации и т. Д. Обратите внимание, что эти настройки не выполняются только во время печати, иногда они являются частью определения отчета.

Из того, что я знаю, мы не можем иметь такой контроль при печати веб-страниц. Я нахожусь в процессе определения вариантов в моем распоряжении. Хотя я предпочитаю сначала изучить что-то, что поможет мне печатать с необработанных веб-страниц, ниже приведены и другие мысли:

  1. Поскольку отчеты также можно экспортировать в версии .xls и .pdf, загрузите их и распечатайте напрямую. Это, однако, ограничивает мое решение областью приложения, в которой есть функция экспорта.
  2. Используйте Silverlight (4.0) для определения макета отчета и печати. Я думаю, что Silverlight 4.0 (в бета-версии прямо сейчас) обеспечивает адекватный контроль над принтером. До сих пор я избегал необходимости в любом плагине RIA.
  3. Тщательно генерирует отчеты в сети с фиксированными размерами. Я не уверен, как далеко это зайдет.

Пожалуйста, поделитесь практиками, которые можно легко применить в моем сценарии.

Ответы [ 4 ]

3 голосов
/ 18 марта 2010

Для создания отчетов в Интернете, используя .NET, мне нравится создавать файлы PDF, Excel, Word или CSV. Мне действительно нравится iTextSharp , который позволяет создавать PDF-файлы.

Word может принимать HTML, так что обычно его легко цитировать. Для большего контроля вы можете войти в Word interops http://nishantrana.wordpress.com/2007/11/03/creating-word-document-using-c/,, но они разочаровали меня. Не для реализации, но я чувствовал, что очистка была плохой.

CSV отлично подходит для дампов необработанных данных, вот и все.

Для HTML вы можете получить хороший контроль, используя таблицу стилей , предназначенную для печатных СМИ . Есть только некоторые вещи, которые вы не можете контролировать, такие как заголовок и нижний колонтитул браузера.

0 голосов
/ 18 марта 2010

PDF это путь, если вы хотите абсолютный контроль над выводом на печать. В качестве бонуса вы также можете предоставить возможность загрузки файлов PDF в своем приложении.

С помощью HTML вы можете настраивать браузер пользователя на размер страницы, поля и порядок обработки разрывов страниц.

0 голосов
/ 18 марта 2010

Я не думаю, что вам, к сожалению, повезет, если вы попытаетесь сделать это с необработанным HTML. Для одного из наших клиентов мы выбрали маршрут «Сгенерировать PDF», и он сработал достаточно хорошо. PDF-файлы имеют дополнительное преимущество: вы не должны распечатывать их: вы можете просто отправить их по электронной почте начальнику / бухгалтеру / кому угодно, сэкономив немного бумаги.

0 голосов
/ 18 марта 2010

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

Также я думаю, что экспорт в PDF - это хорошая идея. Я не понимаю, почему вы не можете расширить это, чтобы охватить все места, которые должны были бы напечатать отчет. По сути, вместо печати непосредственно из приложения Windows, запущенного на рабочем столе, на вашем сервере выполняется тот же самый точный код, который генерирует PDF-файл, который они могут затем распечатать самостоятельно.

...