Как мне выполнить расширенную печать из веб-приложения? - PullRequest
16 голосов
/ 24 октября 2008

Я изучал варианты печати данных, подобных отчетам, через веб-приложение. Некоторые варианты, которые являются жизнеспособными, - это написание PDF-файлов, Excel XML, выгрузка HTML в Excel или использование такого инструмента, как activePDF webGrabber. Я предполагаю, что вопрос в том, какие решения, которые дают контроль над печатью из браузера (в моем случае, IE), пока не имеют большого времени на разработку. Хотя я сам не имел опыта, я видел какой-то ужасный код для создания PDF-файлов.

Особые функции, которые я ищу, - это печать альбомной или портретной ориентации без участия пользователя. Кроме того, важно контролировать базовые стили, чтобы перевести базовый внешний вид веб-приложения в печатный формат.

Любой совет (особенно из опыта) приветствуется.

Ответы [ 9 ]

11 голосов
/ 24 октября 2008

Как я уже спросил здесь уже и выяснил трудный путь, вы не получите надежных и точных результатов печати только в браузере. Даже если это приложение для интрасети, которое, как вам было обещано, должно работать только с IE7, IE8 скоро выйдет, и тогда Firefox будет разрешен, и все ваше тщательное микроуправление CSS будет напрасным (я горько говорю?).

Самое перспективное решение - прикусить пулю и приступить к созданию PDF-файлов. Инструменты, которые вы упомянули, хороши. Вы также должны посмотреть на iText и iTextSharp . Как только вы это освоите, создание макетов PDF не сложнее, чем HTML и CSS, и вы поймете, что результаты будут правильно печататься на каждом компьютере, в любом браузере и на всех принтерах. В настоящее время я работаю с iTextSharp (еще не закончил, но все еще учусь и экспериментирую).

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

Боковая панель "Связанные вопросы" очень полезна. Я видел эти вопросы по управлению принтером с веб-страницы (оба с ответами, которые равняются: «Вы не можете»):

Программный выбор альбомной печати

Печать на определенный принтер

4 голосов
/ 24 октября 2008

Также можно посмотреть настройку таблиц стилей CSS для печати. Что приятно, так это то, что вы можете взять существующую веб-страницу, отображаемую для пользователя, слегка изменить форматирование, чтобы удалить любые причудливые баннеры или другие изображения с чернилами, а затем распечатать то, что они видят на экране.

Некоторые сайты будут иметь ссылку на «версию для печати», но даже ссылка на отображение и таблицу стилей печати в заголовке HTML будет работать, если пользователь решит просто нажать CTRL + P на странице, которую он

3 голосов
/ 24 октября 2008

Я использовал и имел счастье с iTextSharp в приложении C #. Это займет немного работы, но если у вас есть опыт работы с графикой, все это имеет смысл, и PDF может выглядеть действительно хорошо (и печатать хорошо).

http://itextsharp.sourceforge.net/

Если вы хотите, чтобы код генерировал PDF, чтобы он не был ужасным, просто напишите хороший код PDF! Например, напишите действительно модульный код с множеством классов в памяти, которые вы комбинируете (например, Lego) для представления объектов, которые будут добавлены в PDF. Эти объекты просто должны знать, как нарисовать себя в PDF.

2 голосов
/ 24 октября 2008

Вы можете взглянуть на службы отчетов SQL Server. Существует также ряд сторонних инструментов отчетности, таких как http://www.devexpress.com/Products/NET/Reporting/

1 голос
/ 24 октября 2008

После того, что сказали другие, вы просто не сможете заставить браузер печатать так, как вам хочется. Исходя из опыта, тип печатного носителя CSS выглядит так, как будто он будет работать, но он действительно никогда не справится с работой - особенно если вам нужно работать в более чем одном браузере (и, поскольку я включаю несколько версии IE в качестве разных браузеров, я думаю, что все веб-сайты в конечном итоге должны быть.)

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

1 голос
/ 24 октября 2008

Работает только для IE:

http://www.meadroid.com/scriptx/index.asp

Абсолютный контроль для тех, кому требуется распечатывать HTML-документы с клиентских и серверных компьютеров, на которых установлен браузер Microsoft Internet Explorer.

Базовый набор функций печати ScriptX - настройки верхнего и нижнего колонтитула, ориентация печати, грубое управление полями и команда печати окна / фрейма в браузере - доступны бесплатно и могут свободно распространяться. Расширенные функции печати не являются бесплатными. Документы с поддержкой ScriptX должны ссылаться на действующую лицензию на публикацию, чтобы работала расширенная печать.

1 голос
/ 24 октября 2008

Я не уверен, что это то, что вы ищете, но почему бы просто не использовать CSS с таблицей стилей media = print. Создайте таблицу стилей так, чтобы печатная форма имела нужные вам характеристики. Кроме того, вы можете выполнить экспорт в Excel, загрузив данные в формате CSV и позволив пользователю создавать свои собственные отчеты из данных.

Для реальных PDF и Excel я использовал элементы управления Aspose.com .

0 голосов
/ 03 февраля 2009

Главным образом, чтобы поделиться тем, как я с этим справился, но и предложить другой вариант ...

Я использовал стороннюю сетку, которая экспортировала Excel XML. Чтобы это работало для меня, я использовал XSLT и некоторый код, чтобы настроить этот XSLT для вставки настроек печати. Я уверен, что он не такой мощный, как PDF, но это был довольно приличный компромисс, который не требовал особых настроек для каждой страницы.

Итак, решение в основном состоит в том, чтобы экспортировать в формате Excel XML и ввести теги для ориентации страницы, масштабирования и всего, что вам может понравиться. Вы можете начать с простого листа Excel и сохранить его в формате XML, внося необходимые изменения. Затем вы читаете исходный код и выясняете, как это сделал Excel. Мне не удалось найти какую-либо полезную документацию.

0 голосов
/ 24 октября 2008

Это зависит от того, известна или неизвестна ваша ожидаемая клиентская база. Если вы хотите, чтобы «кто-нибудь» мог создавать печатные документы, я согласен с другими, что маршрут в формате PDF - это хороший путь.

Мы добились большого успеха, используя PDFLib , чтобы легко создавать привлекательные PDF-документы. Используя их серверные модули, вы можете попросить дизайнера создать документ в InDesign или Illustrator, а затем программно перетащить динамические поля сверху (даже используя Acrobat для размещения полей)

Это немного сложнее для отчетов и динамических данных строк, но это можно сделать.

Для фактической печати - если вы создаете приложение, когда ваша пользовательская база известна (например, офисная среда), вы можете рассмотреть приложение для печати этикеток, например BarTender . Вы можете получить задания печати вызовов веб-сервера через API или приложение BarTender для опроса приложения на предмет новых заданий. Удобно для веб-приложений, где вы хотите нажать «Печать» на сайте и заставить принтер начать печать (без какого-либо вмешательства пользователя), поскольку на самом деле печатает сервер, а не клиент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...