Ich habe eine Seite mit einem breiten (etwa 3000px) horizontalen Graphen, der normalerweise scrollbar ist.
In der Druckversion rendere ich den gesamten Graphen (ich habe tatsächlich einen separaten JAvascript / HTML-Code für die Druckversion), so dass man sagen kann, dass drei A4 Breiten (Landschaft) auf dem Bildschirm sind .
In dieser Situation sehe ich, dass der Browser (FF3 in diesem Fall) es mir nicht erlaubt, die breite Seite auf mehreren Papierblättern zu drucken (basierend auf der Druckvorschau).
Es scheint, als ob die einzige Möglichkeit, das gesamte Dokument auszudrucken, darin besteht, den Benutzer die Zoomstufe auf 30% setzen zu lassen, und dann passt die gesamte Grafik auf einen einzelnen A4.
Ich muss dort eine CSS-Direktive vermissen, konnte es aber nirgendwo googeln.
Ich schätze Hinweise / Ideen.
Danke.
(eine vorherige Antwort von mir auf diese Frage wurde gelöscht, weiß nicht warum: Ich versuche es erneut)
Lange habe ich nach einer CSS-basierten Lösung für dieses Problem gesucht, und ich denke, es ist nicht möglich, vertikale Seitenumbrüche von HTML-Tabellen durch CSS (zumindest nicht Seitenumbrüche auf Tabellendaten in einem HTML-TABLE-Tag, aber es sollte mit tabellarischen Daten, die in DIVs organisiert sind) möglich sein.
Ich denke, die einzige Lösung besteht darin, JavaScript die Aufteilung zu ermöglichen. Wenn die Seite geladen ist, kann JavaScript prüfen, ob die Tabelle breiter ist als die gewünschte Seitenbreite: In diesem Fall ist es möglich, dynamisch eine neue Tabelle zu erstellen und nur die Spalten zu duplizieren, die außerhalb der erlaubten Breite liegen, und sie aus der ursprünglichen Tabelle zu löschen . Der ganze Prozess ist ein bisschen schwierig, aber die Ergebnisse sind zufriedenstellend.
Es ist auch möglich, den JavaScript-Code nur zum Drucken und nicht für die Tabelle auf dem Bildschirm laufen zu lassen: Ein Druckknopf auf der Seite kann so eingerichtet werden, dass ein serverseitiger Code ausgeführt wird, zum Beispiel php, der ein pdf-Gedanken erzeugen kann die Bibliothek wkhtmltopdf, übergibt ihr die HTML-Seite, wo sich die Tabelle befindet, einschließlich des JavaScript-Codes . In der Tat generiert wkhtmltopdf ein PDF, das einen Browser simuliert, und der Javasript-Code wird korrekt ausgeführt.
Nun, diese Javascrpt-Bibliothek existiert bereits, ich habe sie geschrieben und funktioniert sehr gut (zumindest für meine Bedürfnisse), und sie ist frei verfügbar im Internet: Ich will sie nicht verlinken, weil bereits eine vorherige Antwort gelöscht wurde, und Ich weiß nicht, ob es aus diesem Grund war. Aber wenn jemand interessiert ist, kannst du in Kommentaren fragen und ich werde es geben.
Drucken von HTML über mehrere Seiten wie dies ist nicht eine nette Sache zu tun
Wahrscheinlich möchten Sie das Diagramm in seitengroße Chunks aufteilen (z. B. ein div für jede Seite). Wenn Sie also nebeneinander schweben, sieht das Diagramm wie gewünscht aus. Dann benutze CSS page-break-before oder page-break-after , um sicherzustellen, dass die gedruckten Seiten korrekt aufgeteilt sind und Sie keinen Inhalt auf der Seite verlieren.
Stellen Sie außerdem sicher, dass der Datenträger den Druck für das CSS angibt, das Sie für die druckbare Version verwenden.
Sie können nicht kontrollieren, wie HTML wirklich gedruckt wird - HTML / CSS / JS hat keinen Zugriff auf die Druckeinstellungen des Druckertreibers oder des Browsers. Die einzige Möglichkeit besteht darin, Ihre druckbare Ausgabe in ein PDF-Format (oder ein anderes druckzentriertes Format) zu konvertieren und stattdessen zu liefern.