Est-il possible de faire se comporter une page HTML, par exemple, comme une page A4 dans MS Word?
Essentiellement, je veux pouvoir afficher la page HTML dans le navigateur et décrire le contenu dans les dimensions d'une page au format A4.
Par souci de simplicité, je suppose que la page HTML ne contiendra que du texte (pas d'images, etc.) et qu'il n'y aura pas de <br>
balises par exemple.
De plus, lorsque la page HTML est imprimée, elle apparaît sous forme de pages papier au format A4.
Réponses:
Il y a un certain temps, en novembre 2005, AlistApart.com a publié un article sur la façon dont ils ont publié un livre en utilisant uniquement HTML et CSS. Voir: http://alistapart.com/article/boom
Voici un extrait de cet article:
En tous cas…
Puisque vous souhaitez imprimer au format A4, vous aurez bien sûr besoin de différentes dimensions:
L'article plonge dans des choses comme la définition de sauts de page, etc., donc vous voudrez peut-être lire cela complètement.
Dans votre cas, l'astuce consiste à créer d'abord le CSS d'impression. La plupart des navigateurs modernes (> 2005) prennent en charge le zoom et pourront déjà afficher un site Web basé sur le CSS imprimé.
Maintenant, vous voudrez rendre l'affichage Web un peu différent et adapter la conception entière à la plupart des navigateurs (y compris les anciens, antérieurs à 2005). Pour cela, vous devrez créer un fichier CSS Web ou remplacer certaines parties de votre CSS d'impression. Lors de la création de CSS pour l'affichage Web, n'oubliez pas qu'un navigateur peut avoir N'IMPORTE QUELLE taille (pensez: «mobile» jusqu'aux «téléviseurs grand écran»). Signification: pour le CSS Web, la largeur de la page et la largeur de l'image sont mieux définies en utilisant une largeur variable (%) pour prendre en charge autant de périphériques d'affichage et de clients de navigation Web que possible.
EDIT (26-02-2015)
Aujourd'hui, je suis tombé sur un autre article plus récent de SmashingMagazine qui plonge également dans la conception pour l'impression avec HTML et CSS ... juste au cas où vous pourriez utiliser un autre tutoriel.
EDIT (30-10-2018)
Il a été porté à mon attention que ce
size
n'est pas du CSS3 valide, ce qui est en effet correct - j'ai simplement répété le code cité dans l'article qui (comme indiqué) était du bon vieux CSS2 (ce qui est logique lorsque vous regardez l'année de l'article et cette réponse a été publiée pour la première fois). Quoi qu'il en soit, voici le code CSS3 valide pour votre commodité de copier-coller:Dans le cas où vous pensez avoir vraiment besoin de pixels ( vous devriez en fait éviter d'utiliser des pixels ), vous devrez prendre soin de choisir le DPI correct pour l'impression:
Pourtant, j'éviterais les tracas et utiliserais simplement
cm
(centimètres) oumm
(millimètres) pour le dimensionnement car cela évite le rendu des problèmes qui peuvent survenir en fonction du client que vous utilisez.la source
cm
et al. Je vous conseille de lire les articles liés et / ou au moins ma réponse. Ce faisant, vous remarquerez rapidement que votre question n'a pas vraiment de sens. En outre, vous souhaiterez peut-être publier votre question en tant que nouvelle question si les choses ne sont toujours pas claires. Il s'agit d'un site de questions / réponses, pas d'un forum. \ o /Il serait assez facile de forcer le navigateur Web à afficher la page avec les mêmes dimensions en pixels que A4. Cependant, il peut y avoir quelques bizarreries lorsque les choses sont rendues.
En supposant que vos moniteurs affichent 72 dpi, vous pouvez ajouter quelque chose comme ceci:
la source
body { height:297mm; width:210mm; margin-left:auto; margin-right:auto; }
Le format A4 est 210x297mm
Vous pouvez donc définir la page HTML pour s'adapter à ces tailles avec CSS:
la source
Créez une section avec chaque page et utilisez le code ci-dessous pour ajuster les marges, la hauteur et la largeur.
Si vous imprimez au format A4.
Ensuite, l'utilisateur
puis créez un div avec tout votre contenu dedans.
ou
la source
@page Section1
travailler avec Chrome 41.0.2272.77. Êtes-vous vraiment sûr que votre réponse fonctionne? Essayez par exemple de visiterdata:text/html,<style>@page x{size:100pt 200pt}</style><div style="page:x">x</div>
et d'ouvrir un aperçu avant impression. Je ne vois aucune différence entre cela etdata:text/html,x
. Quand je remplace@page x
par@page
, cela fonctionne, mais ce n'est pas un sélecteur spécifique à une page.J'ai utilisé HTML pour générer des rapports qui s'impriment correctement à des tailles réelles sur du vrai papier.
Si vous utilisez soigneusement mm comme unités dans le fichier CSS, vous devriez être OK, au moins pour les pages simples. Cependant, les gens peuvent vous gâcher en modifiant le zoom d'impression dans leur navigateur.
Il me semble que tout ce que je faisais était une seule page, donc je n'avais pas à me soucier de la pagination - cela pourrait être beaucoup plus difficile.
la source
J'ai vu cette solution après avoir recherché sur google, recherchez "A4 CSS page template" (codepen.io). Il affiche une zone de taille A4 (A3, A5, également portrait) dans le navigateur, à l'aide de la balise <page>. À l'intérieur de cette balise, le contenu est affiché, mais la position absolue est toujours par rapport à la zone du navigateur.
Cela fonctionne pour moi sans aucune autre bibliothèque css / js à inclure. Fonctionne pour les navigateurs actuels (IE, FF, Chrome).
la source
box-shadow: none;
et non 0Dans votre quotidien
style.css
:Dans votre
print.css
:la source
Le PPI et le DPI ne changent absolument rien à la façon dont un document s'imprimera dans un navigateur. l'imprimante ne prend aucune information sur la hauteur des points à l'écran ou le DPI des images, etc. le processeur d'impression du navigateur augmenterait le DPI des images de quelque chose d'assez bas comme 72 dpi à quel que soit le DPI du reste du document. disons que l'image s'affiche sur une demi-page de large, puis sur environ 4 "de large physiquement. la largeur des pixels de l'image serait d'environ 300 pixels pour s'afficher correctement dans le navigateur. et l'image passera à environ 1200px qui à 300 DPI est de 4 ".
en ce qui concerne les éléments vectoriels ou non pixelisés comme le texte, l'imprimante choisit son propre DPI dans le pilote qui ne se rapporte pas à la hauteur des points de l'écran ou à la largeur du navigateur, etc.
Voici ce qui rend difficile la création d'affichages imprimés: chaque navigateur et imprimante interpréteront les tailles de texte (pt, em, px) et l'espacement à leur manière. en fonction de l'imprimante, du navigateur et peut-être même du système d'exploitation que vous utilisez, vous obtiendrez un nombre différent de lignes et de caractères par page. donc même si vous testez sur votre ordinateur à l'aide de votre navigateur et de votre imprimante et que vous savez que vous pouvez afficher le texte dans une boîte à 640x900px et qu'il est parfait à l'impression, le prochain gars qui essaiera d'imprimer le fera peut-être différemment. il n'y a vraiment aucun moyen de forcer chaque imprimante et navigateur à les rendre identiques à chaque fois.
oublier les pixels et plus encore oublier le DPI, la seule chose pour laquelle vous pouvez utiliser des pixels est de définir une largeur de table qui simule la largeur d'une zone imprimable sur votre imprimante. dans ce cas, j'ai trouvé que 640px de large est proche.
la source
Vous cherchez un problème similaire, j'ai trouvé cela - http://www.indigorose.com/forums/archive/index.php/t-13334.html
A4 est un format de document, comme une image d'écran qui va dépendre de la résolution de l'image, par exemple un document A4 redimensionné à:
la source
Je sais que ce sujet est assez ancien mais je veux partager mon expérience sur ce sujet. En fait, je cherchais un module qui peut m'aider avec mes rapports quotidiens. J'écris des documentations et des rapports en HTML + CSS (au lieu de Word, Latex, OO, ...). L'objectif serait de les imprimer sur du papier A4 pour les partager avec des amis, ... Au lieu de chercher, j'ai décidé d'avoir une petite session de codage drôle pour implémenter une lib simple qui peut gérer des "pages", numéro de page, résumé, en-tête , footer, .... Enfin, je l'ai fait en ~~ 2h et je sais que ce n'est pas le meilleur outil de tous les temps mais c'est presque ok pour moi. Vous pouvez jeter un œil à ce projet sur mon repo et n'hésitez pas à partager vos idées. Ce n'est peut-être pas ce que vous recherchez à 100% mais je pense que ce module peut vous aider.
Fondamentalement, je crée une page de corps "largeur: 200 mm;" et récipient de hauteur: 290 mm (plus petit que A4). J'ai ensuite utilisé le saut de page: toujours; de sorte que l'option "imprimer" du navigateur sache quand diviser les pages.
repo: https://github.com/kursion/jsprint
la source
Techniquement, vous le pourriez, mais il faudrait beaucoup de travail pour que tous les navigateurs impriment la page exactement telle qu'elle est affichée à l'écran. De plus, la plupart des navigateurs forcent l'URL, la date d'impression et la numérotation des pages à l'impression, ce qui n'est pas toujours souhaité. Cela ne peut pas être modifié ou désactivé.
Au lieu de cela, je conseillerais de créer un PDF basé sur le contenu à l'écran et de servir le PDF pour le téléchargement et / ou l'impression. Bien que la plupart des bibliothèques PDF disponibles soient payantes, il existe quelques alternatives gratuites pour créer des PDF de base.
la source
J'ai utilisé 680px dans les rapports commerciaux pour imprimer sur des pages A4 depuis 1998. Le 700px ne pouvait pas s'adapter correctement en fonction de la taille des marges. Les navigateurs modernes peuvent réduire la page pour l'adapter à l'imprimante, mais si vous utilisez 680 pixels, vous imprimerez correctement dans presque tous les navigateurs.
C'est du HTML pour vous. Exécutez un extrait de code et voyez le résultat:
JSFiddle:
https://jsfiddle.net/ajofmm7r/
la source
Plusieurs façons de faire:
la source
Il est tout à fait possible de définir votre mise en page pour prendre les proportions d'une page a4. Vous n'auriez qu'à régler la largeur et la hauteur en conséquence (éventuellement vérifier avec
window.innerHeight
etwindow.innerWidth
même si je ne suis pas sûr que ce soit fiable).La partie délicate est l'impression A4. Javascript par exemple ne supporte que l'impression rudimentaire des pages avec la
window.print
méthode. Comme @Prutswonder l'a suggéré, la création d'un PDF à partir de la page Web est probablement la façon la plus sophistiquée de procéder (à part fournir la documentation PDF en premier lieu). Cependant, ce n'est pas aussi trivial qu'on pourrait le penser. Voici un lien qui contient une description d'une classe Java entièrement open source pour créer des PDF à partir du HTML: http://www.javaworld.com/javaworld/jw-04-2006/jw-0410-html.html .De toute évidence, une fois que vous avez créé un PDF avec des proportions A4, il en résulte une impression A4 propre de votre page. Que cela en vaille la peine, c'est une autre question.
la source