У меня есть веб-приложение на основе J2EE.
На одной из страниц есть кнопка «Печать».
Моя проблема примерно такая:
Пользователь вводит названия инструментов, например: ToolName1 ToolName2 ToolName3
Затем нажимает «Печать».
Предполагаемое действие состоит в том, что сведения об инструменте для 3 инструментов извлекаются из базы данных и затем печатаются по одному инструменту на странице. (т.е. при нажатии этой кнопки должна произойти некоторая обработка в фоновом режиме извлечения базы данных перед отправкой данных на принтер ...)
Пожалуйста, подскажите, как лучше всего выполнить эту задачу по печати веб-страницы.
Надеюсь, проблема ясна.
Заранее спасибо...:)





На стороне клиента, я полагаю? Если так, то в Java нет ничего, кроме JavaScript. Просто вызовите метод window.print (), и он предложит диалоговое окно печати.
Вы можете сделать вызов кнопки немного Javascript:
<script>
function printPage() {
window.print();
}
</script>
Вы бы назвали это, используя что-то вроде:
<form>
<input TYPE = "button" onClick = "printPage()">
</form>
или прямо как:
<input TYPE = "button" onClick = "window.print()">
Если вам нужно отформатировать вывод на несколько страниц, вы должны использовать свойство разрыв страницы до CSS. Например:
<style>
div.tool {
page-break-before: always
}
</style>
<div class = "tool" id = "tool1">
...
</div>
<div class = "tool" id = "tool2">
...
</div>
Вы можете поместить это в специальную таблицу стилей для печати, как предлагает Гвидо Гарсиа.
Прошу прощения, я думаю, что не уточнил вопрос .... Мне нужно выполнить некоторую обработку в фоновом режиме, прежде чем отправлять данные на принтер ... На этой странице действительно есть имена некоторых инструментов, сведения о которых хранятся в базе данных . Мне нужно получить детали и распечатать детали каждого инструмента на странице
Я полагаю, вы не спрашиваете, как получить данные из базы данных. Вы спрашиваете, как получить каждый набор результатов на отдельной странице?
На стороне клиента вы можете просто вызвать window.print();
Другие советы:
<link rel = "stylesheet" type = "text/css" media = "print" href = "print.css" />
Спасибо. Я изменил вопрос, чтобы прояснить проблему.
Если ваша страница для печати требует дополнительной логики, вы можете сделать одно из следующих действий:
У обоих есть свои преимущества.
Я также предлагаю вам полагаться не только на Javascript. Когда кнопка печати не печатается, потому что вы не используете JS, это может сбивать с толку. Я предлагаю вам создать обычную HTML-ссылку, которая ведет на страницу, которая будет напечатана, где пользователь может использовать кнопку печати браузера. Скройте эту ссылку с помощью javascript и замените ее зависимой от javascript кнопкой. Это обеспечит отображение кнопки только при включенном javascript.
Спасибо, Борис. Моя проблема выглядит примерно так: Пользователь вводит названия инструментов, например: ToolName1 ToolName2 ToolName3 Затем нажимает «Print». Предполагаемое действие состоит в том, что сведения об инструменте для 3 инструментов извлекаются из базы данных и затем печатаются по одному инструменту на странице. Надеюсь, я прояснил проблему.
Кнопка печати должна отправить форму на сервер, где вы готовите вывод, который хотите распечатать (сведения об инструменте и т. д.). Это отображается как обычно с использованием вашей страницы JSP или чего-то еще.
Чтобы завершить задание, вызовите window.print() на странице результатов и активируйте его при загрузке страницы (или событии готовности документа).
Обновлено: Хм. Надо было посмотреть на дату. Ну что ж, совет в силе.
Извините, я думаю, что не разъяснил вопрос .... добавил дополнительную информацию к вопросу ...