Как выполнить расширенную печать из веб-приложения?

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

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

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

Ответы

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

Ответ 3

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

http://itextsharp.sourceforge.net/

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

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

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

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

Ответ 7

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

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

Ответ 8

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

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

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

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

Ответ 9

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

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

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