Печать веб-страницы программно на Java - PullRequest
2 голосов
/ 14 октября 2008

У меня есть веб-приложение на основе J2EE.

На одной из страниц есть кнопка с надписью «Печать».

Моя проблема примерно такая:

Пользователь вводит названия инструментов, например: ToolName1 ToolName2 ToolName3

Затем нажимает «Печать».

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

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

Надеюсь, проблема ясна.

Заранее спасибо ...:)

Ответы [ 5 ]

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

Вы можете сделать вызов кнопки немного Javascript:

<script>
    function printPage() {
        window.print();  
    }
</script>

Вы бы назвали это используя что-то вроде:

<form>
<input TYPE="button" onClick="printPage()">
</form>

или непосредственно как:

<input TYPE="button" onClick="window.print()">

Если вам нужно отформатировать вывод на нескольких страницах, вы должны использовать CSS-свойство page-break-before . Например:

<style>
    div.tool {
        page-break-before: always
    }
</style>

<div class="tool" id="tool1">
...
</div>
<div class="tool" id="tool2">
...
</div>

Вы можете поместить это в «печатную» таблицу стилей, предложенную Гвидо Гарсией.

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

На стороне клиента вы можете просто позвонить window.print();

Другие советы:

  • Вы можете использовать CSS для печати, чтобы настроить презентацию страницы:
<link rel="stylesheet" type="text/css" media="print" href="print.css" />
  • Вы можете использовать серверный компонент, который генерирует PDF-версию страницы. Во многих случаях интересно иметь глубокий контроль над окончательной презентацией.
1 голос
/ 04 ноября 2010

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

Чтобы завершить работу, вызовите window.print() на странице результатов и запустите ее при загрузке страницы (или событии готовности документа).

Редактировать: Хм. Я должен был посмотреть на дату. Ну что ж, совет стоит.

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

Если вашей печатной странице нужна дополнительная логика, вы можете сделать одно из следующих действий:

  • включите вычисленные данные в вашу обычную страницу, но скройте их (style = "visibility: hidden"), затем сделайте их видимыми с помощью print.css (media = print), как описано Guido отображается только при печати. ​​
  • Создайте новую страницу, на которую вы можете ссылаться с обычной страницы, на которой есть рассчитанные данные

Оба имеют свои преимущества.

Я также предлагаю не полагаться только на Javascript. Это может быть довольно запутанным, когда кнопка печати не печатается, потому что вы не используете JS. Я предлагаю вам создать обычную HTML-ссылку, которая ведет на страницу для печати, где пользователь может использовать кнопку печати браузера. Скройте эту ссылку с помощью javascript и замените ее зависимой от javascript кнопкой. Это обеспечит отображение кнопки только при включенном javascript.

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

На стороне клиента, я думаю? Если это так, в Java нет ничего, кроме JavaScript. Просто вызовите метод window.print (), и он выведет диалоговое окно печати. ​​

...