Mam raport HTML, który należy wydrukować w orientacji poziomej z powodu wielu kolumn. Czy istnieje sposób, aby to zrobić, bez konieczności zmiany ustawień dokumentu przez użytkownika?
Jakie są opcje wśród przeglądarek.
W swoim CSS możesz ustawić właściwość @page, jak pokazano poniżej.
@media print{@page {size: landscape}}
Strona @ jest częścią specyfikacji CSS 2.1, jednak size
odpowiedź na to pytanie nie jest tak podkreślona. Czy strona @ rozmiar: krajobraz} jest przestarzała? :
CSS 2.1 nie określa już atrybutu size. Obecny projekt roboczy dla modułu stronicowanych mediów CSS3 określa to (ale nie jest to standard ani akceptacja).
Jak wspomniano, opcja rozmiaru pochodzi ze specyfikacji projektu CSS 3 . Teoretycznie można ustawić zarówno rozmiar strony, jak i orientację, chociaż w mojej próbie rozmiar ten został pominięty.
Obsługa jest bardzo zróżnicowana - zgłoszenie błędu zaczyna się w Firefoksie , większość przeglądarek go nie obsługuje.
Może się wydawać, że działa w IE7, ale dzieje się tak, ponieważ IE7 zapamięta ostatni wybór krajobrazu lub portretu w podglądzie wydruku (tylko przeglądarka zostanie ponownie uruchomiona).
W tym artykule zaproponowano kilka obejść przy użyciu JavaScript lub ActiveX, które wysyłają klucze do przeglądarki użytkownika, chociaż nie są one idealne i polegają na zmianie ustawień zabezpieczeń przeglądarki.
Alternatywnie możesz obrócić zawartość zamiast orientacji strony. Można to zrobić, tworząc styl i stosując go do bryły zawierającej te dwie linie, ale ma to również swoje wady powodujące wiele problemów z wyrównaniem i układem.
<style type="text/css" media="print">
.page
{
-webkit-transform: rotate(-90deg);
-moz-transform:rotate(-90deg);
filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
}
</style>
Ostatnią alternatywą, którą znalazłem, jest utworzenie wersji poziomej w pliku PDF. Możesz wskazać tak, gdy użytkownik wybierze wydruk, drukuje plik PDF. Jednak nie mogłem tego uzyskać do automatycznego drukowania w IE7.
<link media="print" rel="Alternate" href="print.pdf">
Podsumowując, w niektórych przeglądarkach względność jest łatwa przy użyciu opcji @page size, jednak w wielu przeglądarkach nie ma pewnej metody i zależy to od zawartości i środowiska. Być może dlatego Dokumenty Google tworzą plik PDF po wybraniu opcji wydruku, a następnie pozwalają użytkownikowi go otworzyć i wydrukować.
@page size
Nie działa na wszystkich współczesnych przeglądarkach, tylko Firefox. Chrome i Opera ignorują to, o ile widziałem.size: landscape
NIE jest częścią CSS2.1, chociaż@page
zasady są. Jest to jednak część CSS3. W celu potwierdzenia spróbuj użyć W3C CSS Validator i wprowadź@page {size: landscape}
i porównaj wyniki z „Moje rozwiązanie:
To działa
IE
,Firefox
iChrome
źródło
class
div działało w krajobrazie, a nie całą stronę?Nie wystarczy tylko obrócić zawartości strony. Oto odpowiedni CSS, który działa w większości przeglądarek (Chrome, Firefox, IE9 +).
Najpierw ustaw wartość
margin
0, ponieważ w przeciwnym razie marginesy strony będą większe niż marginesy ustawione w oknie dialogowym drukowania. Ustaw takżebackground
kolor, aby wizualizować strony.margin
,border
Ibackground
są zobowiązani do wizualizacji stron.padding
musi być ustawiony na wymagany margines wydruku. W oknie dialogowym drukowania musisz ustawić te same marginesy (w tym przykładzie 10 mm).Rozmiar strony A4 wynosi 210 mm x 297 mm. Musisz odjąć marginesy wydruku od rozmiaru. I ustaw rozmiar zawartości strony:
Używam 276 mm zamiast 277 mm, ponieważ różne przeglądarki skalują strony nieco inaczej. Dlatego niektóre z nich wydrukują zawartość o wysokości 277 mm na dwóch stronach. Druga strona będzie pusta. Bardziej bezpieczne jest używanie 276 mm.
Nie potrzebujemy każdy
margin
,border
,padding
,background
na zadrukowanej stronie, więc je usunąć:Zauważ, że źródłem transformacji jest
0 0
! Również zawartość stron poziomych należy przesunąć o 276 mm w dół!Również jeśli masz połączenie stron portretowych i lanscape, IE pominie strony. Naprawiamy to, ustawiając wartość
-ms-zoom
1.665. Jeśli ustawisz go na 1.6666 lub coś w tym stylu, prawy brzeg treści strony może być czasami przycięty.Jeśli potrzebujesz IE8- lub innych starych przeglądarek obsługuje można użyć
-webkit-transform
,-moz-transform
,filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)
. Ale w przypadku wystarczająco nowoczesnych przeglądarek nie jest to wymagane.Oto strona testowa:
źródło
Cytat z CSS-Discuss Wiki
źródło
Spróbuj dodać to do swojego CSS:
źródło
Jak
size
wspomniano, właściwość jest tym, czego szukasz. Aby ustawić zarówno orientację, jak i rozmiar strony podczas drukowania, możesz użyć następujących opcji:Oto link do dokumentacji @strona .
źródło
.css
pliku, w przeciwnym razie, jeśli jest wbudowana, domyślna deklaracja boostrap (size: a3
) będzie miała pierwszeństwo.Być może będziesz mógł użyć reguły CSS 2 @page, która pozwala ustawić właściwość „rozmiar” na poziomą .
źródło
Możesz także użyć niestandardowego trybu zapisu atrybutów css tylko dla IE
źródło
nie działa w przeglądarce Firefox 16.0.2, ale działa w przeglądarce Chrome
źródło
Utworzyłem pusty dokument MS z ustawieniem Krajobraz, a następnie otworzyłem go w notatniku. Skopiowałem i wkleiłem następujące elementy na mojej stronie HTML
Podgląd wydruku pokazuje strony w rozmiarze poziomym. Wygląda na to, że działa dobrze na IE i Chrome, nie testowano na FF.
źródło
Próbowałem rozwiązać ten problem raz, ale wszystkie moje badania doprowadziły mnie do formantów ActiveX / wtyczek. Nie ma sztuczki, że przeglądarki (w każdym razie 3 lata temu) pozwoliły zmienić dowolne ustawienia drukowania (liczbę kopii, rozmiar papieru).
Starałem się ostrzec użytkownika, że musi wybrać opcję „pozioma”, gdy pojawi się okno dialogowe drukowania przeglądarki. Stworzyłem także stronę „podgląd wydruku”, która działała znacznie lepiej niż IE6! Nasza aplikacja zawierała bardzo szerokie tabele danych w niektórych raportach, a podgląd wydruku wyjaśnił użytkownikom, kiedy tabela wyleje się z prawej krawędzi papieru (ponieważ IE6 nie radził sobie również z drukowaniem na 2 arkuszach).
I tak, ludzie nadal używają IE6 nawet teraz.
źródło
Jeśli chcesz zastosować ten styl do tabeli, utwórz jeden znacznik div z tą klasą stylu i dodaj znacznik table do tego znacznika div i zamknij znacznik div na końcu.
Ta tabela będzie drukowana tylko w orientacji poziomej, a wszystkie inne strony będą drukowane tylko w trybie pionowym. Problem polega jednak na tym, że jeśli rozmiar tabeli jest większy niż szerokość strony, możemy stracić niektóre wiersze, a czasem nagłówki również zostaną pominięte. Bądź ostrożny.
Miłego dnia.
Dziękuję, Naveen Mettapally.
źródło
Wypróbowałem odpowiedź Denisa i napotkałem problemy (strony portretowe nie wydrukowały się poprawnie po przejściu po stronach poziomych), więc oto moje rozwiązanie:
źródło
To również działało dla mnie:
źródło
Jeśli chcesz zobaczyć poziomo na ekranie przed drukowaniem, a także podczas drukowania, to w swoim css możesz ustawić szerokość na 900px, a wysokość na 612px.
OP nie wspomniało o rozmiarze A4. Zakładam, że w moich liczbach powyżej jest to rozmiar Letter.
źródło
Możesz spróbować:
źródło