@page rules
@page rule is used to customize CSS properties when printing a document.
Basic specifications
The first level is defined by @page
at-rule in CSS to modify different aspects of a printed page property : page's dimensions, page orientation, margins, paddings, background color....
By default, Pdf document has default margin, portrait orientation and is sized for A4 format.
size
property associated with @page rule allows to define size and orientation of document page.
CSS - Sizes and orientations
@page {
/* Orientation */
size: portrait;
size: landscape;
/* Size */
/* <length> values */
/* 1 value: height = width */
size: 30cm;
/* 2 values: width then height */
size: 15cm 30cm;
/* Keyword values for absolute size */
size: A4;
/* Mixing size and orientation */
size: A4 portrait;
}
margin
and padding
CSS properties will let you to define position and spacing of your content on all four sides.
CSS - Margins and paddings
@page {
/* No margin */
margin: 0;
/* No margin left and right */
margin-left: 0;
margin-right: 0;
/* No margin top and bottom */
margin-top: 0;
margin-bottom: 0;
/* No padding */
padding: 0;
/* No padding left and right */
padding-left: 0;
padding-right: 0;
/* No padding top and bottom */
padding-top: 0;
padding-bottom: 0;
}
Header and footer
You can customize header and/or footer on each page using @top-left
, @top-center
, @top-right
and @bottom-left
, @bottom-center
, @bottom-right
at-rules inside @page
at-rule.
CSS - Header and footer with static content
@page {
@top-center {
content: '@top-left/center/right';
background-color: pink;
}
@bottom-center {
content: '@bottom-left/center/right';
background-color: pink;
}
}
You can also define dynamic content using string()
method and string-set
CSS variable.
CSS - Header with dynamic content
@page {
@top-right {
content: string(my_var);
font-size: 11pt;
height: 1cm;
width: 100%;
}
h2 {
string-set: my_var content();
}
}
Pagination
Display of pagination number is dynamic if content
value target to counter(page)
.
CSS - Pagination
@page {
/* Centered pagination */
@bottom-center {
content: counter(page);
}
/* Right pagination inside a gray block */
@bottom-right {
background: #ececec;
content: counter(page);
height: .8cm;
text-align: center;
width: .8cm;
}
}
Size and orientation
Here is the list of orientation keywords
Keyword | Description |
---|---|
portrait |
portrait orientation (default value) |
landscape |
landscape orientation |
Here is the list of size keywords
Keyword | Description |
---|---|
A5 |
ISO dimensions: 148mm x 210mm |
A4 |
ISO dimensions: 210mm x 297mm (default value) |
A3 |
ISO dimensions: 297mm x 420mm |
B5 |
ISO dimensions: 176mm x 250mm |
B4 |
ISO dimensions: 250mm x 353mm |
JIS-B5 |
This correspond to the JIS standard dimensions: 182mm x 257mm |
JIS-B4 |
This correspond to the JIS standard dimensions: 257mm x 364mm |
letter |
This keyword is an equivalent to the dimensions of letter paper in North America i.e. 8.5in x 11in |
ledger |
This keyword is an equivalent to the dimensions of ledger pages in North America i.e. 11in x 17in |