web-dev-qa-db-fra.com

Définir le format de papier de l'imprimante via css

Le format par défaut de mon imprimante est A4 et je dois imprimer une fiche de paie au format 8.5 en utilisant l’ancienne imprimante matricielle ... J'ai essayé de définir chaque fiche de paie DIV à une hauteur fixe,

width: 175.6mm;
height:123.7mm;
margin-left:auto;
margin-right:auto;

Bien qu’il corresponde parfaitement au format de la fiche de paie, mais après l’impression, le papier continue à rouler jusqu’à la fin car les feuilles de paie sont toutes reliées contrairement à A4. Et je ne souhaite pas modifier le format du papier de l’imprimante, j’ai donc défini:

@media print 
{
   @page
   {
    size: 8.5in 5.5in;
    size: portrait;
  }
}

mais l'aperçu avant impression de Google Chrome montre toujours ceci:

enter image description here

Est-il réellement possible de le faire ou existe-t-il un moyen de forcer l'imprimante à cesser d'imprimer après l'impression d'une fiche de paie pour l'empêcher de continuer à faire rouler le papier? (Ce qui, selon moi, ne devrait pas être possible)

P.S. J'utilise uniquement Google Chrome.

**Mis à jour:

J'ai remarqué que le format de papier allait changer après avoir choisi "Enregistrer au format PDF". Si je choisis de revenir sur mon imprimante par défaut, le format de papier est à nouveau incorrect.

13
Irene Ling

peut-être ce travail.

@media print 
{
   @page
   {
    size: 8.5in 5.5in;
    size: landscape;
  }
}

ou

@media print 
{
   @page
   {
    size: 5.5in 8.5in ;
    size: landscape;
  }
}
6
pixparker

La dernière fois que j'ai vérifié, @media print est très mal supporté par les principaux navigateurs. J'ai eu un problème similaire au vôtre, et après des semaines d'essais, j'ai dû abandonner et accéder à une bibliothèque de génération de PDF côté serveur (PDF4NET). Si vous avez besoin de documents composites, de documents imprimés, je ne pense pas que le langage HTML fera l'affaire. 

4
imjosh

Aujourd'hui, j'utilise Chrome 32.0.1700.107 m

La norme W3 CSS3 établie pour les formats de page fonctionne parfaitement avec l'option "ENREGISTRER AS PDF" directement à partir de Chrome dans l'interface d'impression. N'oubliez pas que l'utilisation d'une imprimante est très différente dans l'interface d'impression de chrome, car elle utilise la taille par défaut de l'imprimante, mais dans le cas de l'option ENREGISTRER SOUS PDF, elle prend la taille définie par CSS.

J'ai eu des années de problèmes avec différentes interfaces et solutions de substitution pour différents projets (par exemple: générer des PDF directement à partir d'un serveur trop lourd en traitement et désordonné en code, ou dire aux utilisateurs d'utiliser l'interface d'impression Windows, etc.). Celui-ci est une excellente solution pour moi et semble être définitive! 

Il est maintenant possible de créer des PDF avec le format de papier approprié en utilisant uniquement CSS3 sur le site, sans avoir à utiliser de logiciel tiers ni d'autres astuces.

Dans votre cas, la meilleure solution consiste simplement à modifier le format de papier par défaut configuré dans l’imprimante, ce que j’ai conseillé aux utilisateurs avec un petit div flottant qui l’a conseillé et qui n’est pas caché. Mais comme vous "ne souhaitez pas modifier le format du papier de l’imprimante", si vous souhaitez éviter d’apporter des modifications côté serveur, vous devez effectuer une étape supplémentaire de la part de la personne à imprimer: enregistrez d’abord le fichier PDF puis envoyez-le à l'imprimante à partir du PDF que vous venez de créer.

4
DavidTaubmann

Cela a fonctionné pour moi comme ça

@page {
  size: <%= @size_card[0] %>cm  <%= @size_card[1] %>cm;
  margin: 0;
}

J'ai essayé comme vous le dites avec une propriété de seconde taille pour "paysage" ou "portrait", mais elle remplace la dernière, donc ce n'est pas nécessaire, puisque vous dites déjà ce qui est hauteur et largeur.

1
Ramon Marques

Je pense que le navigateur a un accès limité aux paramètres de Printer.it. Il est exécuté à la fois par le système d’exploitation et par le pilote d’imprimante (en sélectionnant la source de papier comme chargeur du tracteur ou des marges personnalisées).

1
RAJMOHAN