Печать отчетов на стороне клиента из PHP веб-приложений - PullRequest
2 голосов
/ 18 января 2009

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

Что-то, что у меня есть.

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

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

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

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

Ответы [ 3 ]

3 голосов
/ 18 января 2009

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

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

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

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

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

1 голос
/ 18 января 2009
<a href = "#" onclick = "window.print(); return false;">Print!</a>
0 голосов
/ 18 января 2009

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

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

...