Ich habe gesehen, diese Frage in ein paar verschiedene Möglichkeiten auf SO und mehrere andere Websites gefragt, aber die meisten von ihnen sind entweder zu spezifisch oder veraltet. Ich hoffe, dass jemand hier eine endgültige Antwort geben kann, ohne sich in Spekulationen zu ergehen.
Gibt es eine Möglichkeit, entweder mit CSS oder Javascript, um die Standard-Druckereinstellungen zu ändern, wenn jemand in seinem Browser druckt? Und natürlich mit "druckt aus ihrem Browser" Ich meine eine Form von HTML, nicht PDF oder eine andere Plug-in abhängig Mime-Typ.
Bitte beachten Sie:
Wenn einige Browser dies anbieten und andere nicht (oder wenn Sie nur wissen, wie man es für einige Browser macht), begrüße ich browserspezifische Lösungen.
Ebenso ist es hilfreich, wenn Sie von einem Mainstream-Browser wissen, der spezifische Beschränkungen hat, die es verbieten, dies zu tun, aber eine aktuelle Dokumentation wäre willkommen. (einfach zu sagen "das verstößt gegen XYZ's Sicherheitsrichtlinien" ist nicht sehr überzeugend, wenn XYZ in den letzten drei Jahren erhebliche Änderungen an den besagten Richtlinien vorgenommen hat).
Und schließlich, wenn ich sage "Standarddruckeinstellungen ändern", dann meine ich nicht für immer, sondern nur für meine Seite, und ich beziehe mich speziell auf Druckränder, Kopf- und Fußzeilen.
Ich bin mir sehr wohl bewusst, dass CSS die Möglichkeit bietet, die Seitenausrichtung und die Seitenränder zu ändern. Eines der vielen Probleme tritt bei Firefox auf. Wenn ich die Seitenränder auf 1 Zoll einstelle, fügt er dies zu dem halben Zoll hinzu, den er bereits einfügt.
Ich möchte die Verwendung von PDFs auf der Website meines Kunden sehr gerne reduzieren, aber die Beeinträchtigung der Präsentation (sowie die mangelnde Zuverlässigkeit) sind ihr Hauptanliegen.
Der CSS-Standard ermöglicht einige erweiterte Formatierungen. Es gibt eine @page
-Direktive in CSS, die einige Formatierungen ermöglicht, die nur für seitenweise Medien (wie Papier) gelten. See http://www.w3.org/TR/1998/REC-CSS2-19980512/page.html.
Der Nachteil ist, dass das Verhalten in verschiedenen Browsern nicht einheitlich ist. Safari unterstützt immer noch nicht die Einstellung des Druckerseitenrands, aber alle anderen großen Browser unterstützen dies jetzt.
Mit der Direktive @page
können Sie den Druckerrand der Seite angeben (was nicht dasselbe ist wie der normale CSS-Rand eines HTML-Elements):
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Print Test</title>
<style type="text/css" media="print">
@page
{
size: auto; /* auto is the initial value */
margin: 0mm; /* this affects the margin in the printer settings */
}
html
{
background-color: #FFFFFF;
margin: 0px; /* this affects the margin on the html before sending to printer */
}
body
{
border: solid 1px blue ;
margin: 10mm 15mm 10mm 15mm; /* margin you want for the content */
}
</style>
</head>
<body>
<div>Top line</div>
<div>Line 2</div>
</body>
</html>
Beachten Sie, dass wir hier im Grunde die seitenbezogenen Ränder deaktivieren, um den Effekt des Entfernens der Kopf- und Fußzeile zu erzielen, so dass der Rand, den wir für den Textkörper festlegen, nicht in Seitenumbrüchen verwendet wird (wie kommentiert von Konrad). Dies bedeutet, dass es nur richtig funktioniert, wenn der gedruckte Inhalt nur eine Seite umfasst.
Dies funktioniert nicht in Firefox 3.6, IE 7, Safari 5.1.7 oder Google Chrome 4.1.
Die Einstellung des @Seitenrandes hat Auswirkungen in IE 8, Opera 10, Google Chrome 21 und Firefox 19.
Obwohl die Seitenränder für Ihren Inhalt in diesen Browsern korrekt eingestellt sind, ist das Verhalten nicht ideal, wenn Sie versuchen, das Ausblenden der Kopf-/Fußzeile zu lösen.
Im Internet Explorer ist der Seitenrand in den Einstellungen für diesen Druck tatsächlich auf 0 mm eingestellt, und wenn Sie die Vorschau verwenden, erhalten Sie 0 mm als Standard, aber der Benutzer kann ihn in der Vorschau ändern.
Sie werden sehen, dass der Inhalt der Seite korrekt positioniert ist, aber die Kopf- und Fußzeile des Browsers wird mit einem undurchsichtigen Hintergrund angezeigt, so dass der Inhalt der Seite an dieser Position effektiv verdeckt wird.
In Firefox neueren Versionen wird die Seite korrekt positioniert, aber sowohl der Kopf-/Fußzeilentext als auch der Inhaltstext werden angezeigt, so dass es wie eine schlechte Mischung aus Browser-Kopfzeilentext und Ihrem Seiteninhalt aussieht.
In Opera verdeckt der Seiteninhalt die Kopfzeile, wenn ein nicht-transparenter Hintergrund in der Standard-Css verwendet wird und die Position der Kopf-/Fußzeile mit dem Inhalt kollidiert. Das ist ganz gut, sieht aber seltsam aus, wenn der Seitenrand auf einen kleinen Wert eingestellt ist, der dazu führt, dass die Kopfzeile teilweise sichtbar ist. Auch der Seitenrand ist nicht richtig eingestellt.
In Chrome neueren Versionen wird die Kopf- und Fußzeile des Browsers ausgeblendet, wenn der @Seitenrand so klein eingestellt ist, dass die Position der Kopf-/Fußzeile mit dem Inhalt kollidiert. Meiner Meinung nach sollte sich dies genau so verhalten.
Die Schlussfolgerung ist also, dass Chrome die beste Implementierung in Bezug auf das Ausblenden der Kopf-/Fußzeile hat.
Ich habe eine ähnliche Anfrage von einem Kunden, der die Kopfzeile, die Seitenzahlen und die HTML-Fußzeile entfernen lassen möchte. In diesem Fall legt der Kunde eine HTML-Seite vor, die auch als offizielle Bescheinigung dienen kann. Die hinzugefügte URL, Seite und Kopfzeile sind irrelevant und führen zu einem wenig ansprechenden Endprodukt. In gewisser Weise sieht es einfach billig aus.
Media=Print war nicht in der Lage, diese Browser-Standardeinstellungen zu deaktivieren. Die einzige Abhilfe besteht darin, den Benutzer anzuweisen, auf die Schaltfläche "Zahnrad" zu klicken und diese Elemente ein- oder auszuschalten. Ernsthaft, ich hatte 20 Jahre lang keine Ahnung, dass ich das tun kann (und wir denken, dass der typische Benutzer eine Ahnung davon hat, wie man die Schaltfläche umschaltet).
Wenn CSS Media=Print unterstützt, sollte es auch die Möglichkeit bieten, den gesamten Druckvorgang für den Endbenutzer zu steuern. Ich weiß es zu schätzen, dass die Browser die zusätzlichen Felder zur Verfügung stellen, aber warum sollte man CSS nicht erlauben, den gesamten Druckvorgang zu steuern, wenn dies gewünscht ist? Eine 90%ige Lösung könnte mit drei weiteren Feldern 100%ig sein! Eine einfache:
#BrowserPrintDefaults{display:none}
würde genügen.
Auch hier kommt es nicht darauf an, ob der Endnutzer sie ausdrucken möchte oder nicht (vielleicht ist Ihr Kunde sehr privat und möchte nicht, dass gedruckte URLs im Umlauf sind. Oder vielleicht verwendet ein Führungsteam eine private Kollaborationsseite?). Ich verteidige gerne den Endbenutzer, aber wenn jemand eine Antwort sucht, sollten Sie nicht sagen, dass es das Recht des Endbenutzers ist, zu zeigen oder zu verbergen. Manchmal ist es das Recht des Kunden, der die Rechnungen bezahlt.
Da Sie "innerhalb ihres Browsers" und Firefox erwähnten, können Sie, wenn Sie den Internet Explorer verwenden, den Seitenkopf/Fußzeiger deaktivieren, indem Sie den Wert in der Registrierung vorübergehend einstellen, siehe hier für ein Beispiel. AFAIK habe ich noch nicht von einer Möglichkeit gehört, dies in anderen Browsern zu tun. Daniel's und Mickel's Antworten scheinen miteinander zu kollidieren, ich vermute, dass es irgendwo in der Registry eine ähnliche Einstellung für Firefox geben könnte, um Kopf-/Fußzeilen zu entfernen oder sie anzupassen. Haben Sie das überprüft?
Ich hoffe, das hilft Ihnen und wünsche Ihnen schöne Feiertage, Mit freundlichen Grüßen, Tom.