Печать заголовка для каждой страницы в Google Chrome

Я создаю ТВ-расписание и не должен иметь проблем с печатью, по крайней мере, для одного стандартного браузера.

Мне нужно разместить логотип и заголовок плюс заголовки таблиц на каждой странице, после нескольких дней поиска и поиска я узнал, что Chrome не будет печатать заголовки таблиц и position: fixed элементов на каждой странице из-за этого известная ошибка.

Из-за возможностей, таких как печать цвет фона с помощью -webkit-print-color-adjust: exact, который я сильно использовал и изменяющий границы страницы с помощью свойства CSS @page, я настроил свое представление на использование Google Chrome, но теперь, когда я его вижу не могу печатать заголовки Я ищу альтернативы, которые:

  • Чтобы забыть Chrome и начать создание вида печати для другого браузера, который должен делать твики для печати цветов фона и изменения полей страницы (я боюсь, что это невозможно).
  • Чтобы найти решение CSS/JS, чтобы заставить Chrome Chrome печатать заголовки таблиц на каждой странице.

TL; DR: Знаете ли вы jQuery/JavaScript/etc. код для печати заголовков таблиц на каждой странице в Chrome?

Ответ 1

Да, это вещь Webkit/Chrome. Он не будет печатать thead на каждой странице. Например, FF. Что вы можете сделать для достижения чего-то подобного, это использовать разрывы страниц.

Разрыв страницы работает только с элементами блока, поэтому вы должны соответственно подстроить свой тр.

Вот так:

tr{
    display:block;
}

Теперь вы должны начать копировать свой thead и вставлять его в каждую X-ю строку с помощью javascript:

var head = $('table thead tr');
$( "tbody tr:nth-child(10n+10)" ).after(head.clone());

На экране вам не нужны все эти главы. Удалите их с помощью медиа-запроса (для удобства я добавил класс .head в моей строке th > tr.:

@media screen {
    tbody .head{
        display: none;
    }
}

Теперь перед каждым .head выполните разрыв страницы:

tbody tr.head {
    page-break-before: always;
    page-break-inside: avoid;
}

Проверьте это: http://jsfiddle.net/jaap/7ZGVv/2/ Имейте в виду, что jsfiddle не позволяет вам открывать только рамку предварительного просмотра, поэтому печать не работает, объедините все в свой собственный файл, и вы увидите, что таблицы будут разбиты, стилизация не идеальна, и это не так. как ваш браузер сам решает, где разделить, но эй, это что-то.

Ответ 2

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

Ответ 3

Это решение не будет работать точно для заголовков таблиц, но это позволит создавать заголовки произвольного html. Я создал библиотеку, которая позволяет Chrome печатать верхние и нижние колонтитулы, см. Этот ответ:

fooobar.com/info/18579/...