HTML "Ausdrucken" - Wieder einmal
- html
Hallo,
welchen sinnvollen Weg gibt es, um HTML-Fragment halbwegs gut "ausdrucken" zu können, wenn das HTML einige Tabellen (sind echte Tabellarische Darstellungen) enthält. D.h. in ein PDF-Dokument oder Word-Dokkument zu überführen, ohne das leere Seiten und abgeschnittener Inhalt entsteht.
Ich kann das HTML zu einem gewissen Grad beeinflussen, aber meine Versuche sind eher ernüchternd. Die langen Tabellen bekomme ich nicht sinnvoll auf einer Seite dargestellt bzw. mit elegantem Umbruch, wenn die Tabelle auf zwei Seiten verteilt wird.
Ich weiss, HTML ist kein Printformat, aber gibt es sinnvolle Lösungen, damit ein Ausdruck wenigstens brauchbar wird.
Gruß
Hallo Michael,
habe dein Problem nicht ganz verstanden. Da ich seit Jahrzehnten mit der Druckfunktion von Firefox arbeite, kann ich vielleicht helfen.
Ein A2-Plakat erstelle ich mit vier A4-Seiten.
Baue das Original als A2 auf, kann dann auch vom Printshop gedruckt werden.
Und dann vier A4 Seiten für dem Heimdrucker:
Genaugenommen natürlich das ganze A2 in je einen A4-Rahmen mit overflow:hidden mit Überlappung zum Kleben.
Hier ein Beispiel mit 2 x A4 für Veranstaltungsplakate:

Quelle: https://remso.eu/?TID=33231
Gruß, Linuchs
Hallo,
Und dann vier A4 Seiten für dem Heimdrucker:
- nach A4 oben links kopiere das oben/links Viertel vom A2,
- nach A4 oben rechts das oben/rechts Viertel,
- nach A4 unten links das unten/links Viertel und
- nach A4 unten rechts das unten/rechts Viertel.
sehr viele Druckertreiber bieten diese Funktion von sich aus an. Deiner nicht?
Einen schönen Tag noch
Martin
Hallo Michael,
ein HTML ganz "böse" anders gestalten als eine Web-Ansicht ... wenn es das ist, was Dir helfen könnt: im css folgendes einbauen:
@media print {
}
und darin (als Beispiel) viel von dem da:
**teile,die nicht ausgedruckt werden müssen** {
background: transparent !important;
color: #000 !important;
box-shadow: none !important;
text-shadow: none !important;
border:0!important;
}
usw ... dann ist vieles von einer "schönen" Webseite weg und Du kannst den ganzen Raum für die Tabelle nehmen.
Wenn dieser Weg Dir nicht hilft, dann bitte meinen Text einfach vergessen ...
Viel Erfolg,
Hans
Hi,
@media print { }und darin (als Beispiel) viel von dem da:
**teile,die nicht ausgedruckt werden müssen** { background: transparent !important; color: #000 !important; box-shadow: none !important; text-shadow: none !important; border:0!important; }
schon mal von display: none; gehört?
cu,
Andreas a/k/a MudGuard
Hi,
schon mal von
display: none;gehört?
display: none ist ziemlich unklug, da dies sich auf die Inhaltsanordnung auswirkt. Wennschon, dann wäre es "visibility: hidden", da sich hierduch die Anordnung nicht ändert. Aber das ist alles nichts, was mein Problem löst.
Gruß
Hallo Michael_K,
Ich kann das HTML zu einem gewissen Grad beeinflussen, aber meine Versuche sind eher ernüchternd
Weswegen @media print Abfragen und Ausblenden der nicht zu druckenden Teile oft der beste Weg ist.
display: none ist ziemlich unklug, da dies sich auf die Inhaltsanordnung auswirkt.
Ist das nicht der Sinn des Ausblendens? Das Layout wird für den Druck angepasst. Mit weiterem CSS in @media print Blöcken lässt sich das feintunen.
Dazu dann noch ein @page Block, der eine geeignete Seitengröße definiert und "Druck großer Seiten auf mehrere kleine" im Druckertreiber.
Das setzt natürlich voraus, dass du weißt, wieviel Platz du horizontal brauchst. Das mit Javascript am Client auszurechnen und daraus eine @page-Rule zu generieren ist zwar denkbar, aber lästig.
mit elegantem Umbruch, wenn die Tabelle auf zwei Seiten verteilt wird.
Schon break-inside:avoid ausprobiert? Ob es auf dem tr Element oder auf die td-Elemente muss, weiß ich gerade nicht.
Ich meine, es gäbe auch CSS zum Wiederholen von Überschrift-Rows, das muss ich nachgucken.
Rolf
Eine Möglichkeit wäre nämlich LaTeX. Das ist sehr mächtig und kann tolle Dokumente erzeugen, auch das was Du wohl brauchst. Hat aber eine steile Lernkurve.
LaTeX zu benutzen geht (wenn die Daten dynamisch sind) natürlich nur auf einem Server oder aber auf einem PC - aber nur wenn die Daten und damit die Seiten statisch sind.
LaTeX ist eine mächtige Beschreibungssprache, also Text. Den kann man leicht beeinflussen und also ergänzen. Danach erzeugt man dann daraus das PDF.
Ich hab gemessen: Das Erzeugen eines PDF dauert hier auf einem stromsparenden Notebook mit AMD Ryzen 7 7840HS (unter Linux) 0.3 Sekunden
Sieht bei mir etwa so aus:
(Und ja: Beim Vor dem Erzeugen der Tabelle ersetze ich einfach in PHP die Platzhalter aus Eingaben und Berechnungen, erzeuge also eine neue temporäre Textdatei, aus der ich dann das Dokument erzeuge und vom Webserver via PHP mit den Headern ausliefern lasse...)
Ich kann das HTML zu einem gewissen Grad beeinflussen,
CMS?