Печать отчетов на стороне клиента из веб-приложений PHP

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

То, о чем я думаю.

Использование PDF: есть ли простой способ одним щелчком мыши распечатать отчет со стороны клиента? Очевидный выбор открытия PDF-файла в окне и затем выбора «Файл» -> «Печать» кажется слишком громоздким.

Использование Flash: я видел какой-то сайт, обеспечивающий печать в один клик с помощью flash. Не уверен, что работает в фоновом режиме. Любая информация по этому поводу будет полезна.

Active-X / Silverlight (?): Я не хочу ограничивать своих пользователей только IE. Но это требование к печати в один клик настолько жесткое, что я предпочел бы переключиться на платформы только для MS, если они справятся с этой задачей.

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
4 958
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

<a href = "#" onclick = "window.print(); return false;">Print!</a>

Далее, по мнению Нельсона ЛаКуэта, вы можете поместить window.print () в атрибут onload тега body, чтобы диалоговое окно печати появлялось при загрузке страницы,

(или используйте jquery document.ready () для достижения того же, или любые другие предложения JS-фреймворков)

Ответ принят как подходящий

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

Также не у всех людей есть принтер. Попытка заставить что-то напечатать - действительно неправильный подход и обычно отпугивает некоторых ваших клиентов.

Минимальное решение - создать страницу квитанции с CSS-кодом emdia print, чтобы она выглядела отвечающей большую часть времени.

Если этого недостаточно, вам нужно перейти в PDF. К сожалению, тогда это становится сложно, как этот вопрос относительно преобразования HTML + CSS в PDF иллюстрирует. PrinceXML отлично справляется с этим преобразованием, но это не дешево. Html2PDF - лучшее из набора с открытым исходным кодом, но имеет проблемы (см. Этот ответ для более подробной информации). У меня была такая же проблема в пространстве Java и для счетов, которые заканчивались использованием Джаспер отчеты. Однако я действительно не видел эквивалентного решения для отчетности для PHP. У Python есть reportlab, который также кажется вероятным кандидатом для выполнения такой работы.

Возможно, ваш лучший вариант - напрямую сгенерировать PDF-файл. Это немного утомительнее, но позволяет избежать многих ошибок преобразования HTML в PDF. Этот учебник (Часть 2) объясняет, как это сделать.

В настоящее время существуют проекты с открытым исходным кодом code.google.com/p/wkhtmltopdf и phantomjs.org, которые близки к PrinceXML.

Thomas Bachem 26.05.2012 04:36

Другие вопросы по теме