HTML à imprimer avec une absolue postitions
Est-il possible d'imprimer une page HTML avec vraiment les éléments en position absolue de papier? Il semble que tous les navigateurs sont en train de faire un gros gâchis ici. Il est facile de définir un corps en unités absolues (par exemple. cm) et placer les éléments par position: absolute
à l'intérieur. Cependant, tous les navigateurs semblent essayer de faire l'impossible pour imprimer une page. FF, par exemple, est l'ajout de marges d'impression, même lors de l'impression d'un fichier PDF sur linux en dépit de 0-la marge de la page de paramètres. Chrome semble réduire la page dans tous les cas.
Donc comment faire pour imprimer quelque chose avec le positionnement absolu, par exemple. papier champs de formulaire, les marques etc.?
Ai-je oublié quelque chose?
- Les marges peuvent être plus à voir avec votre impression les paramètres de votre css. Ils peuvent (et le font souvent) diffèrent entre les navigateurs...
- et de la zone imprimable va changer en fonction de ce PPD ou PCL pilote est utilisé.
- Je suis d'accord, mais ça ne rend pas le sens de " mm " inutile de mise à l'échelle de tout pour s'adapter. Donc, si l'imprimante a défini les marges, le navigateur peut indiquer que la page ne veut pas s'adapter à la zone d'impression, mais donner à l'utilisateur la possibilité de décider de l'imprimer, de toute façon. Surtout si elle NE fit, parce que le code HTML inclus les marges sont tout simplement blanc.
- Vous pouvez utiliser les media queries pour adapter la mise en page de la page pour compenser les différences. Je ne sais pas si cela va fonctionner, mais c'est juste une idée! 🙂
- Voir cette question pour prolonger la discussion de la manipulation de la variable marges d'impression qui peut être utile.
- Ce serait utile si elle était sur les navigateurs et Javascript. C'est à propos des applications Windows Forms écrit en C#. L'ensemble des logiciels de l'introduction de la folie et de vous rendre fou diffère grandement entre les deux, et l'ensemble des indicateurs disponibles pour vous distingue de même plus.
Vous devez vous connecter pour publier un commentaire.
Malheureusement, la CSS3 Module: Paginé Médias permet que tout cela arrive. Ce sont les règles concernant les pages qui sont trop grandes:
Et c'est la règle qui rompt tous vos
position
ed trucs:Regarder le deuxième alinéa de l'article 3.7: Un cahier des charges pour la mise en forme exacte de ces éléments se trouve en dehors de la portée de ce document. Puisqu'il n'existe aucun autre document et aucune autre directive ensuite, le principe général à la suite de ce paragraphe, chaque navigateur peut faire ce qu'il veut.
C'est l'un des défauts qui sont actuellement dans ce module CSS3. Cependant, je pense que ces défauts ne peut pas être enlevé par un CSS4 ou révisé CSS3 module, comme la variété de feuilles de style et résultant des mises en page est trop énorme, trop couvrir. A noter aussi une petite note de bas de page donnée en CSS Profil d'Impression:
Donc en gros, c'est pas possible de créer le même effet dans tous les navigateurs. Car pour le moment, la seule voie possible pour atteindre un portable document est de créer un fichier PDF avec une application tierce ou par l'intermédiaire d'une imprimante PDF et vos navigateur préféré. Toute autre voie est vouée à l'échec tant que recommandations de la W3C ne sont pas strictes, ou les fournisseurs de navigateur de mettre en œuvre ce qu'ils veulent.
Voir aussi:
Notes complémentaires
Si vous avez un tas de
position:absolute
éléments qui doivent être imprimés c'est parfois une bonne question de savoir si un élément doit être placée de façon absolue, ou si le même effet peut être obtenu en un peu différente, ou de manière plus facile. Notez également que vous devez utiliserdisplay:none
sur chaque élément qui n'est pas vraiment nécessaire pour les médias imprimés, tels que des publicités, des navigations, etc...Comme vous le dites, les navigateurs web ont tendance à faire des choses folles lors de l'impression. Imprimer orientée vers les moteurs sont souvent mieux.
WeasyPrint est un open-source moteur qui rend au format PDF et prend en charge le positionnement absolu ainsi que CSS 3 Paginé Médias pour définir les marges de page:
Faire de votre conteneur d'avoir la position relative. C'est la seule façon de garder les éléments en position absolue dans le même endroit à chaque écran et le papier. donc, si votre principal div (div, où l'ensemble de votre contenu est placé), ajoutez ce qui suit à votre fichier css:
Devrait faire l'affaire.
J'ai testé d'état du navigateur pour l'impression de "position:absolute" éléments avec les résultats suivants:
La bonne nouvelle, c'est qu'il ressemble à un Clin/WebKit gens ont fait leurs devoirs au lieu d'utiliser un code médiocre.
Requêtes de média fera l'affaire -- check ce lien et à la question précédente, peut-être que cela aidera.
Suggestions pour le débogage des feuilles de style d'impression?
Media Query transition px en pouces/cm/tout ce qui est nécessaire pour les besoins d'impression.
Que la frontière/marge que vous avez mentionné, c'est probablement votre imprimante de la zone imprimable (la poignée de pointe). La plupart des imprimantes ont besoin de bord de saisir et d'alimenter le stock. C'est pourquoi, lorsque l'on imprime un fond perdu du document (l'encre à la bordure), il est imprimé sur du stock plus grande que nécessaire, puis réduits.
définir la marge de la page de configuration est la première et la principale des solutions pour l'impression de la
HTML
page ou unDIV
.Après tout pas le résultat attendu viendra alors vous avez besoin de quelques fouilles sur votre
HTML
page.Faire une fenêtre sans barre de titre, ou tout autre barre à l'aide de java script.Et mettre toutes les données d'Origine dans la fenêtre avec un
position:relative
et également définir le type de support d'impression.L'espoir qu'il sera utile.