Impression des tableaux en HTML, sans fractionnement une ligne sur deux pages
J'ai besoin d'imprimer des données dans un tableau HTML à partir d'Internet Explorer (versions différentes) et Safari sur OS X. Ignorant Safari pour le moment.
Lors de l'impression d'un tableau qui a plus de lignes que vous pouvez tenir sur une page, la dernière ligne de la page est souvent partagée avec une partie de la ligne sur la première page et le reste de la ligne sur la page suivante.
Cela semble laid. Est-il un moyen de l'éviter?
J'ai été la recherche autour de et pour l'instant j'ai trouvé page-break-before: always
, mais je ne suis pas sûr si c'est ce que je cherche, car je ne vais pas savoir d'avance combien de lignes sur la page. par exemple, les lignes peut être plus grand ou plus petit selon le contenu et l'utilisateur peut être l'impression en mode portrait ou paysage. Je suis en supposant A4 au moins, mais si l'utilisateur a l'aide de lettre US ou une autre taille de papier qu'il serait d'introduire encore plus d'incertitude. Aussi, sur les marges de l'imprimante?
Donc, il y a un moyen de contourner cela? Ou dois-je simplement d'avoir à deviner le nombre de lignes d'ajustement et de forcer un saut de page après cela? Va que même travail?
OriginalL'auteur Wodin | 2011-07-05
Vous devez vous connecter pour publier un commentaire.
Vous avez probablement envie de jouer avec
page-break-before/after: auto
.page-break-inside
serait l'idéal, mais son pas pris en charge par la plupart des navigateurs.Prendre un coup d'oeil ici http://www.westciv.com/style_master/academy/css_tutorial/advanced/printing.html pour quelques bonnes infos.
Eh bien, je n'ai pas trouvé une bonne solution.
page-break-inside: avoid
semble être le meilleur sur IE8 ou 9 dans IE compat mode, mais pas dans un contrôle webbrowser. Il y a une clé de registre qui est censé remplacer le mode du contrôle webbrowser, mais cela n'a pas fonctionné pour moi sur une machine avec IE9 même si le code a bien fonctionné dans le navigateur.Ouais, eh bien, j'ai eu des problèmes avec le contrôle de ces dernières. Cela semble fou, mais il semble que le contrôle utilise une version différente de celle du navigateur installé.
OriginalL'auteur Mrchief
Comment sur
page-break-inside:éviter
?Il semble y avoir beaucoup de parler de ce sujet, cependant je l'ai fait aussi trouver une autre DONC, l'article de mentionner
page-break-before:auto
et en appliquant à chaque cellule du tableau.page-break-inside
n'est pas supporté par la plupart des broswers, seulement à l'Opéra possède un support complet pour.Merci, je n'avais pas remarqué SI l'article que vous mentionnez avant de poster, mais je semble avoir obtenu de meilleures réponses en tout cas 🙂 Va essayer
page-break-before: auto
et voir si ça aide.page-break-inside: avoid
fonctionne réellement pour IE 8 et IE 9 dans IE 8 mode de compatibilité. Malheureusement, je suis en train de le faire fonctionner dans un contrôle WebBrowser incorporé dans FileMaker Pro (ce que FileMaker appelle un Web Viewer) et pas c'est à dire directement. Cela semble fonctionner quand IE 8 est installé, mais pas quand IE 9 est installé 🙁 bien sûr il ne fonctionne pas pour les versions antérieures d'Internet Explorer.Dans google Chrome, il semble que la page-break-inside fonctionne uniquement avec le "bloc" des éléments. Une solution pourrait être d'utiliser un <div> à l'intérieur de chaque cellule avec cette propriété css, o appliquer un "display:block; page-break-inside:éviter le" sur certains à l'intérieur de l'élément de la cellule (si vous essayez, le dernier TR, il sème autour de la table avec la mise en page).
À compter de 2016, cela devrait maintenant fonctionner dans les navigateurs récents. Mozilla Developer Network revendications "support de base", à partir de Chrome 1.0, Firefox 19, IE 8.0, Opera 7.0, et Safari 1.3. (developer.mozilla.org/en-US/docs/Web/CSS/page-break-inside), Il fonctionne très bien pour moi au cours des dernières Firefox.
OriginalL'auteur Brad Christie
Pour éviter l'impression de fractionner des cellules sur Safari:
Dans Safari (Version > 5.0) il ne agrandir la cellule précédente, de sorte que le courant commence sur une nouvelle page. De cette façon, cette cellule n'est pas "split". La doc est ici. Il y a 2 notes à prendre en compte: 1: Vous ne pouvez pas utiliser cette propriété sur les éléments en position absolue. 2: Utilisation de la page-la rupture des propriétés que peu de fois que possible et éviter de la page-la rupture des propriétés de à l'intérieur des tableaux, les éléments flottants, et les éléments de bloc avec les frontières.
Merci. Je voulais dire que toute la documentation spécifiquement pour webkit, mais je suppose que les W3Schools lien doit être fine. Le problème est d'une grande table est exactement là où je veux utiliser ce genre de chose, parce que, par défaut webkit sera juste au hasard pause au milieu d'un
tr
.Ce mess avec les lignes de la représentation.
vicenteherrera: Pouvez-vous développer? Je n'ai même pas essayé encore, mais comment ne plaisante pas avec la représentation d'une ligne et quels sont les effets de cette?
OriginalL'auteur
Quelques solutions simples existent pour prévenir les sauts de page dans les rangs, mais ils ont une assez grande limitations qui ont tendance à les rendre inutiles pour quelque chose, mais intranet choses.
Plus polyvalent, la solution c'est seulement un peu plus compliqué peut être trouvé ici. Son principal inconvénient est qu'il nécessite fixe la largeur des colonnes.
Ma solution préférée est un peu plus compliqué, mais il ne sera probablement causer le moins de maux de tête à la fin. Il utilise du JavaScript pour faire de chaque ligne dans une distinct, incassable bloc (mais pas d'une manière qui affecte l'apparence du tableau). J'ai posté quelques réponses qui utilisent cette technique:
OriginalL'auteur DoctorDestructo