добавете заглавка, когато страницата се прекъсва, когато използвате page-break-inside: избягвайте с css или javascript или от браузър?

имам страница, която има секции като div с вътрешни div и съдържание. Броят на div варира много от по-малко от страница до много страници при печат.

Използвам page-break-inside: избягвайте във всеки раздел div, така че всички секции никога да не се отпечатват/разделят на 2 страници. (Това мога да работя само във firefox, но тази съвсем друга история....!).

Проблемът е, че искам да добавя заглавно изображение в горната част на всяка страница, когато се отпечатва, но използвам свойството page-break-inside: избягвай css, не знам къде да добавя заглавките, тъй като това работи при отпечатване.

Някой знае ли как мога да постигна това? Мога ли по някакъв начин да разбера къде ще бъдат прекъсванията на страниците и да добавя заглавка там? или има ли начин за задаване на заглавно изображение в браузъра, както можете да използвате Word документи и т.н.?

моля, помогнете, благодаря много, Рик


person richard moss    schedule 14.01.2010    source източник


Отговори (2)


Невъзможно е да контролирате отпечатаната страница от JS/HTML/CSS, защото нямате достъп до драйвера за печат, така че не можете да знаете какъв размер на хартията или полета е задал потребителят.

За да заобиколите това, можете да използвате компонент за създаване на PDF от вашия HTML, така че да имате повече контрол върху оформлението. Това трябва да се направи от страна на сървъра.

person AUSteve    schedule 14.01.2010

Не виждам никакъв начин за добавяне на заглавна информация с помощта на CSS2 (спец.) . Има начин да добавите ТЕКСТ към „заглавка на страница“ с помощта на CSS3 (връзка, спец.). Не съм сигурен дали това ще обхване и изображения, но е начало. Ще трябва да обмислите приемане на CSS3 и дали отговаря на вашите бизнес нужди (от wikipedia връзка, изглежда, че само Opera поддържа опцията @page, но тази информация може да е остаряла).

Не мисля, че можете да използвате javascript за инжектиране на заглавки на всяка страница, когато се форматира за печат. Не виждам как би могло да се направи това (но може да греша за това).

Това, което можете да направите, е да дефинирате div, който е невидим на страница на браузър, но се показва на отпечатана страница. Нещо като това трябва да го направи:

<STYLE type="text/css">
@media print {
div.header {display:block;}
}
@media screen {
div.header {display:none;}
}
</STYLE>

След това можете да поставите div, съдържащ вашия хедър след принудително прекъсване на страница. Това трябва да работи за вас, вероятно може да се използва допълнителен CSS, за да принудите този div да се изравни с горната част на страницата и т.н. Разбира се, това също изисква да използвате принудителни прекъсвания на страници, което означава, че трябва да знаете предварително колко данни, които можете да поставите на страница, не са идеални.

Надявам се това да помогне.

person Mike Mytkowski    schedule 14.01.2010