Ответ 1
- Определите таблицу стилей печати для вашей страницы. Вы делаете это, используя объявление печати @media.
- Что вы можете сделать, это обернуть каждый частичный вид на странице, которую вы собираетесь распечатать в div, и применить к нему атрибут
'page-break-before: always'
CSS.
Это гарантирует, что каждый частичный просмотр заканчивается на другой странице. Вызовите 'window.print()'
на странице загрузки, и все готово!
Учитывая обширные вопросы, поставленные в комментариях к этому ответу, вот более подробное описание того, что нужно сделать:
Подготовка
- Таблицу стилей необходимо определить и применить к странице, которая определяет, как будет выглядеть страница при печати.
- Это можно сделать, используя объявление
@media print { }
в существующей таблице стилей или применив атрибутmedia="print"
к тегуlink
на вашей странице, который включает таблицу стилей. Вы, кажется, сделали это правильно. - Эта таблица стилей должна включать объявление
page-break-before: always
для всех элементов, перед которыми вы хотели бы, чтобы был разрыв страницы. Кажется, вы сделали это со встроенными стилями. Лично я бы скорее сделал это в таблице стилей печати, чем как встроенный стиль. Этот шаг является неотъемлемой частью того, что вы можете печатать один элемент на странице.
- Это можно сделать, используя объявление
Печать
-
window.print()
позволяет вам указывать страницу при печати страницы. Это делает то же самое, что и CTRL + P, или как нажатие кнопки печати, за исключением того, что вы можете сделать это со своего JavaScript. - Ajax не имеет ничего общего с печатью. Ajax - это средство для асинхронного создания HTTP-вызовов с вашей страницы без изменения или перезагрузки и обновления вашей страницы. Если вы хотите динамически заполнять свою страницу элементами для печати на основе ввода пользователем, вы можете очень хорошо сделать это с помощью Ajax. Если вы просто хотите распечатать страницу, вам не нужно использовать Ajax. навигатор. **
Два важных момента:
-
window.print()
печатает страницу, которая в настоящее время находится на экране. Если вы хотите распечатать другую страницу, вам нужно загрузить другую страницу в какой-то форме или форме (возможно, через всплывающее окно) и вызвать window.print() на этой странице. - Таблица стилей печати определяет, как будет выглядеть печатная страница, в отличие от экранной версии. Это означает, что у вас может быть страница с элементами и многое другое, и печатайте только элементы, когда пользователь нажимает кнопку печати. Это можно сделать, установив свойство
display: none
в таблицу стилей печати на всех элементах, которые вы не хотите отображать на распечатанной странице.
О файлах PDF:
У меня нет ничего против экспорта страниц в PDF, когда это необходимо, но поскольку вы специально не задавали вопрос о решении PDF, я дал вам решение HTML + CSS для вашего вопроса. PDF файлы также требуют минуты для создания и загрузки. Они великолепны, однако, когда ваши пользователи захотят сохранить копии того, что они печатают. Если это так для вашего сайта, я настоятельно рекомендую вам рассмотреть такое решение.
Тестирование:
Как вы проверяете таблицу стилей печати? Самый простой способ - просто нажать кнопку печати в Chrome, которая покажет вам прекрасный превью того, как будет выглядеть ваш сайт при печати.
Заключительное слово:
Теперь забудьте о window.print()
и просто сосредоточьтесь на том, чтобы ваша страница выглядела так, как нужно, применяя соответствующий CSS. Напишите свой CSS, запустите свою страницу, посмотрите на результат в Chrome, измените таблицу стилей печати по мере необходимости... Промойте и повторите. Только после того, как страница будет отображаться именно так, как вы хотите, нажав кнопку "Печать", вы должны затем автоматически вызвать функцию печати в вашем JavaScript.