Media queries for landscape printing?
Media Queries offer matching against the device's orientation:
@media print and (orientation: landscape) {
/* landscape styles */
}
@media print and (orientation: portrait) {
/* portrait styles */
}
Force landscape orientation in CSS
The problem is first you write size: landscape;
but then you write size: A4;
If not provided, domPDF is rendering like default portrait, and it overwrites the landscape.
Set the second parameter landscape and it will work out.
size: A4 landscape;
Landscape printing from HTML
In your CSS you can set the @page property as shown below.
@media print{@page {size: landscape}}
The @page is part of CSS 2.1 specification however this size
is not as highlighted by the answer to the question Is @Page { size:landscape} obsolete?:
CSS 2.1 no longer specifies the size attribute. The current working
draft for CSS3 Paged Media module does specify it (but this is not
standard or accepted).
As stated the size option comes from the CSS 3 Draft Specification. In theory it can be set to both a page size and orientation although in my sample the size is omitted.
The support is very mixed with a bug report begin filed in firefox, most browsers do not support it.
It may seem to work in IE7 but this is because IE7 will remember the users last selection of landscape or portrait in print preview (only the browser is re-started).
This article does have some suggested work arounds using JavaScript or ActiveX that send keys to the users browser although it they are not ideal and rely on changing the browsers security settings.
Alternately you could rotate the content rather than the page orientation. This can be done by creating a style and applying it to the body that includes these two lines but this also has draw backs creating many alignment and layout issues.
<style type="text/css" media="print">
.page
{
-webkit-transform: rotate(-90deg);
-moz-transform:rotate(-90deg);
filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
}
</style>
The final alternative I have found is to create a landscape version in a PDF. You can point to so when the user selects print it prints the PDF. However I could not get this to auto print work in IE7.
<link media="print" rel="Alternate" href="print.pdf">
In conclusion in some browsers it is relativity easy using the @page size option however in many browsers there is no sure way and it would depend on your content and environment.
This maybe why Google Documents creates a PDF when print is selected and then allows the user to open and print that.
How to detect the device orientation using CSS media queries?
CSS to detect screen orientation:
@media screen and (orientation:portrait) { … }
@media screen and (orientation:landscape) { … }
The CSS definition of a media query is at http://www.w3.org/TR/css3-mediaqueries/#orientation
Use CSS Detect Page Orientation in Printing
Use the orientation: ...
media selector. Here's an example:
@media print and (orientation: portrait) {
/* Your code for portrait orientation */
}
@media print and (orientation: landscape) {
/* Your code for landscape orientation */
}
Related Topics
How to Change Bootstrap Button Color
Locally Installed Ttf Overrides Google Fonts
Css: How to Vertically and Horizontally Align an Image
Spring-Boot Resourcelocations Not Adding the CSS File Resulting in 404
Convert Arabic Ttf/Otf Fonts to Woff, Eof
How to Use CSS Attribute Selector for an Svg Element with Namespaced Attribute Href
How to Figure Out Proper Min-Width and Max-Width Values for Responsive CSS
Bootstrap 3 Nav-Bar Change Color Cause Showing a White Border or White Line
Sass Loop to Output Classes with Unique Number and Background-Image
Iframe Horizontal Scrolling Not Rendering on iOS
How to Center the Center Circle
Convert Arabic Ttf/Otf Fonts to Woff, Eof
Ie 10's -Ms-Clear Pseudo-Element, and Ie5 Quirks Mode