2010-03-20 13 views
0

J'ai un fichier de contrôle de travaux CUPS (ceux-ci peuvent être trouvés dans/var/spool/cups/cnnnnn). J'ai besoin d'obtenir les dimensions réelles de l'impression qui a été faite.Est-ce la meilleure façon d'obtenir la taille d'un papier via CUPS?

C'est la façon dont j'ai compris de le faire:

  1. obtenir le nom de papier en utilisant l'attribut media. (par exemple, Letter)
  2. Extrait l'uri d'imprimante de l'attribut printer-uri. (Par exemple ipp://localhost/printers/MyPrinter)
  3. obtenir le nom de l'imprimante en passant l'imprimante uri à l'opération IPP_GET_PRINTER_ATTRIBUTES et obtenir l'attribut printer-name. (Par exemple MyPrinter)
  4. Obtenez le chemin d'accès au fichier PPD en passant le nom de l'imprimante à la méthode cupsGetPPD.
  5. Ouvrez le fichier PPD transmettant le chemin d'accès au fichier PPD à la méthode ppdOpenFile.
  6. Obtenez le format de papier en transmettant le nom PPD et le nom de papier à la méthode ppdPageSize.

Cela va fonctionner, mais il semble un peu rond-point. Existe-t-il un moyen plus efficace d'obtenir ce dont j'ai besoin?

Répondre

0

Vous pouvez réellement utiliser la requête CUPS_GET_PPD pour obtenir le ppd directement au lieu des étapes 3 et 4. Cela semble plus efficace.

0

Le fichier de contrôle des travaux contiendra toutes les options de travail du fichier utilisé pour l'impression. Il y a 3 types d'options d'emploi:

  1. ceux qui ont été spécifiquement et explicitement sélectionnés par l'utilisateur sur la ligne de commande ou en cliquant sur certains éléments de l'interface graphique (ceux-ci apparaîtront dans les fichiers de contrôle);
  2. ~/.lpoptions ou un fichier /etc/cups/lpoptions spécifique à l'utilisateur (le fichier spécifique à l'utilisateur a été migré vers ~/.cups/lpoptions dans les versions plus récentes de CUPS (celles-ci apparaîtront également dans les fichiers de contrôle);
  3. ceux qui ont été ajoutés par CUPS en analysant le PPD et la recherche de paramètres par défaut qui s'y trouvent (ceux-ci ne pas apparaissent dans les fichiers de contrôle, étant donné que CUPS ne les évalue en ce moment la le travail est traité - ce qui peut être 2 jours dans le futur si vous avez utilisé -o job-hold-until=indefinite

Si vous connaissez le nomfiled'attented'impression et le cupsserver utilisé, vous pouvez interroger les paramètres de file d'attente par défaut pour ce combo avec ces deux commandes:

lpoptions -h cupsserver \ 
      -U username \ 
      -d printqueuename 

Cela renverra tous les paramètres actuels comme il est indiqué dans le fichier (.)loptions (s) .

lpoptions -h cupsserver \ 
      -U username \ 
      -d printqueuename \ 
      -l 

Ceci renverra tous les paramètres sélectionnables par l'utilisateur contenus dans le fichier PPD. Notez comment les astérisques * marquent le paramètre par défaut pour chaque option. Notez également que -U username est significatif ici - différents utilisateurs peuvent utiliser différents paramètres par défaut ...

Maintenant, attention aux résultats de ces commandes en notant le PageSize utilisé ...