Можно ли печатать HTML-страницы с пользовательскими колонтитулами на каждой печатной странице?
Я хотел бы добавить слово «НЕКЛАССИФИЦИРОВАННЫЙ» красным, Arial, размером 16pt в верх и низ каждой печатной страницы, независимо от содержимого.
Чтобы уточнить, если документ был напечатан на 5 страницах, каждая страница должна иметь собственный верхний и нижний колонтитулы.
Кто-нибудь знает, возможно ли это с помощью HTML / CSS?
pisition: fixed
иthead tbody tfoot
методы имеют свои недостатки , так что вы должны объединить их, далее здесь .Ответы:
Если вы возьмете элемент, который хотите сделать нижним колонтитулом, и установите для него положение: fixed и bottom: 0, при печати страницы этот элемент будет повторяться внизу каждой напечатанной страницы. То же самое будет работать для элемента заголовка, просто установите top: 0.
Например:
CSS:
источник
Я считаю, что правильный ответ заключается в том, что HTML 5 и CSS3 не поддерживают печать верхних и нижних колонтитулов в
print
средствах массовой информации.И хотя вы можете смоделировать это с:
у каждого из них есть ошибки, которые мешают им быть идеальным общим решением.
источник
@footer
с собойcontent:"stuff"
или тому подобное.Я потратил лучшую половину своего дня, чтобы найти решение, которое действительно работало бы для меня, и думал, что поделюсь тем, что я сделал. Проблема с вышеупомянутыми решениями заключалась в том, что все элементы моего абзаца перекрывались с нижним колонтитулом, который я хотел внизу страницы. Чтобы обойти это, я использовал следующий CSS:
page-break-inside
Дляp
иcontent-block
имеет решающее значение для меня. Каждый раз, когда у меня естьp
подпискаh*
, я оборачиваю их обоих,div class = "content-block">
чтобы они оставались вместе и не ломались.Я надеюсь, что кто-то найдет это полезным, потому что мне потребовалось около 3 часов, чтобы понять (я также новичок в CSS / HTML, так что это ...)
РЕДАКТИРОВАТЬ
По запросу в комментариях я добавляю пример HTML-документа. Вы захотите скопировать это в HTML-файл, открыть его и затем распечатать страницу. Предварительный просмотр печати должен показать эту работу. С моей стороны это работало в Firefox и IE, но Chrome сделал шрифт достаточно маленьким, чтобы поместиться на одной странице, поэтому он там не работал.
источник
Я годами искал решение и нашел этот пост о том, как напечатать нижний колонтитул, который работает на нескольких страницах без наложения содержимого страницы.
Моим требованием был IE8, поэтому я обнаружил, что это не работает в Chrome. [ обновление ] По состоянию на 1 марта 2018 года он работает и в Chrome
В этом примере используются таблицы и элемент tfoot путем установки стиля css:
источник
Волшебное решение - положить все вещи в один стол.
thead : это для повторного заголовка.
tfoot : повторный нижний колонтитул.
tbody : содержание.
и сделать один тр, тд и положить все в дел
КОД ::
дополнительно : для предотвращения наложения на несколько страниц. подобно:
что приводит к переполнению, которое заставляет вещи перекрываться с заголовком внутри разрывов страниц.
так >> используйте:
page-break-inside: avoid !important;
с этим классомarticle
.довольно просто, надеюсь, это даст вам лучший результат, который вы хотите.
наилучшие пожелания. ;)
источник
Из этого вопроса - добавьте следующие стили в таблицу стилей только для печати. Это решение будет работать в IE и Firefox, но не в Chrome ( начиная с версии 21):
источник
Используйте разрывы страниц для определения стилей в CSS:
Затем добавьте разметку в документ в соответствующих местах:
Ссылки
CSS Paged Media: разрывы страниц
MDN: разрыв страницы перед
MDN: перерыв до
Многостолбцовый макет
XHTML Print: второе издание
Webkit Bug 5097: не работает перенос страницы через CSS2
Печать HTML FAQ: Будет ли программа учитывать стили CSS, такие как разрыв страницы?
Как бороться с разрывами страниц при печати больших таблиц HTML
источник
if the document was printed onto 5 pages
should
не значитdon't
.If
(только пример) словоif
(просто пример) используется OP, иif
(только пример) OP больше не активен, лучше предоставить конкретный ответif
(только пример), уже есть общие ответы иif
(просто пример) языки (HTML / CSS) и рассматриваемые спецификации предназначены для того, чтобы избежать косвенного обращения и упростить документирование ?If
(просто пример) так почему? Иначе почему бы и нет?Я пытался бороться с этим бесполезным сражением, комбинируя правила tfoot & css, но это работало только на Firefox :(. При использовании простого CSS содержимое передается через нижний колонтитул. При использовании tfoot нижний колонтитул на последней странице не остается красиво внизу Это потому, что нижние колонтитулы предназначены для таблиц, а не для физических страниц. Протестировано на Chrome 16, Opera 11, Firefox 3 & 6 и IE6.
источник
Один из подходов, который работает только для добавления заголовков на каждую страницу, заключается в том, чтобы заключить содержимое в a,
<table>
а затем поместить содержимое заголовка в<thead>
тег, а содержимое - в<tbody>
тег следующим образом:Это работает в Chrome, не уверен на 100% о других браузерах.
источник
Если вы можете использовать javascipt, сделайте так, чтобы клиент обрабатывал содержимое, используя javascript для размещения элементов на основе доступного пространства.
Вы можете использовать плагин jquery columnizer для динамического размещения вашего контента в блоках фиксированного размера и позиционирования верхних и нижних колонтитулов как части процедуры рендеринга. http://welcome.totheinter.net/columnizer-jquery-plugin/
Смотрите пример 10 http://welcome.totheinter.net/autocolumn/sample10.html
Браузер будет по-прежнему добавлять свои собственные верхние или нижние колонтитулы, если они включены в ОС. Согласованная разметка между платформами и браузерами, вероятно, потребует условного CSS.
источник
Я удивлен и не впечатлен тем, что Chrome имеет такую ужасную поддержку CSS-печати.
Моя задача требовала показывать немного разные нижние колонтитулы на каждой странице. В простейшем случае просто увеличивающаяся глава и номер страницы. В более сложных случаях больше текста в нижнем колонтитуле - например, несколько сносок - может увеличить его размер, в результате чего то, что находится в области содержимого этой страницы, будет сокращено, а часть будет перекомпонована на следующую страницу.
CSS-печать не может решить эту проблему, по крайней мере, не с поддержкой современных браузеров. Но, выйдя за пределы печати, CSS3 может сделать большую работу:
https://jsfiddle.net/b9chris/moctxd2a/29/
SCSS:
В этом примере немного больше кода, в том числе немного Cat Ipsum; но используемый js только для того, чтобы продемонстрировать, насколько верхний / нижний колонтитул может меняться, не нарушая нумерацию страниц. Ключ на самом деле заключается в том, чтобы взять укол Flex-box в CSS, а затем применить его к странице с известной фиксированной высотой - в данном случае это лист размером 8,5 x 11 дюймов, размером с американскую бумагу размером с букву .5 "Поля уходят
width: 7.5in
иheight: 10in
точно. После того, как гибкий контейнер CSS сообщается с его точными размерами (div.page
), легко получить верхний и нижний колонтитул для расширения и сжатия, как в обычной типографии.Осталось только передать содержимое страницы, когда, например, нижний колонтитул вырос до 8 сносок, а не 3. В моем случае содержимое достаточно фиксировано, и мне не нужно об этом беспокоиться, но я уверен, что есть способ сделать это. Один подход, который приходит на ум, заключается в том, чтобы превратить верхний и нижний колонтитулы в плавающие элементы шириной 100%, а затем расположить их с помощью Javascript. Браузер будет автоматически обрабатывать прерывания обычного потока контента.
источник
Вы хотите печатать только это? Вы можете добавить его на каждую страницу вашего сайта и использовать CSS, чтобы определить тег как носитель только для печати.
В качестве примера это может быть пример заголовка:
И в вашем CSS, сделайте что-то вроде этого:
Наконец, чтобы включить верхний / нижний колонтитул на каждую страницу, вы можете использовать серверные включения или, если у вас есть какие-либо страницы, генерируемые с помощью PHP или ASP, вы можете просто закодировать их в общий файл.
Редактировать:
Этот ответ предназначен для того, чтобы предоставить способ показать что-то в физической печатной версии документа, но не показывать это иначе. Однако, как показывают комментарии, это не решает проблему наличия нижнего колонтитула на нескольких печатных страницах, когда содержимое переполняется.
Я оставляю это здесь в случае, если это все же полезно.
источник
Если вы используете шаблонизатор, такой как Asp.net Razor Engine или Angular, я думаю, что вы должны заново сгенерировать свою страницу и разделить страницу на несколько страниц, а затем вы можете свободно разметить каждую страницу и поместить верхний и нижний колонтитулы в тему. один пример может быть как ниже:
источник
Я нашел одно решение. Основная идея состоит в том, чтобы создать таблицу и в разделе thead поместить данные заголовка в tr и силой css, чтобы показать, что tr только при печати, а не на экране, тогда ваш обычный заголовок должен быть принудительно отображен только на экране, а не в печати. 100% работает на многих страницах печати. пример кода здесь
источник
Попробуйте это, для меня это работает на Chrome, Firefox и Safari. Вы получите верхний и нижний колонтитулы, закрепленные на каждой странице, не перекрывая содержимое страницы
CSS
HTML
источник
Основываясь на каком-то посте, я думаю, что
position: fixed
работает для меня.Нажмите Ctrl + P в Chrome, чтобы увидеть текст верхнего и нижнего колонтитула на каждой странице. Надеюсь, поможет
источник