2014-06-30 2 views
0

Je communique avec CUPS en utilisant le protocole IPP. J'ai tous les pilotes pour mes imprimantes installées dans CUPS (en utilisant le fichier .ppd) et les imprimantes ont le dernier firmware.CUPS renvoie 'terminé' sur les travaux en cours d'impression

Lorsque j'interroge un travail qu'une imprimante imprime en ce moment, elle indique que l'état du travail est 'terminé' avant même que l'impression ne soit terminée. Il semble que le CUPS marque le travail comme "terminé" quand il a fini de "télécharger" le fichier.

Je ne m'attendrais pas à ce comportement et j'ai fondamentalement besoin de savoir exactement quand l'imprimante a imprimé le dernier papier pour un travail. Le code ressemble à ceci. Le self.printer().ippPrinter() est une instance de node-ipp et il pointe vers une imprimante. Pour lire l'état du travail j'utilise l'attribut 'job-state'.

var msg = { 
    "operation-attributes-tag": { 
    'job-id': id 
    } 
}; 

self.printer().ippPrinter().execute("Get-Job-Attributes", msg, function(err, res){ 
    var attributes = res['job-attributes-tag']; 

    self.setAttributes = attributes; 
    callback.call(self, attributes); 
}); 

Est-ce que quelqu'un sait pourquoi j'ai ce problème ou comment le faire fonctionner? Merci!

Répondre

2

CUPS ne peut transférer que les états de travail reçus de l'imprimante. Un grand nombre de pilotes d'imprimante et de protocoles fonctionnent comme "fire and forget".

Généralement, les imprimantes IPP permettent à CUPS et aux autres clients de surveiller l'état actuel du travail jusqu'à ce qu'il soit terminé/imprimé. Certains fabricants n'implémentent pas IPP correctement et classent les travaux soumis comme imprimés - même si l'imprimante a un bourrage de papier!

Conclusion:

Si votre imprimante ne prend pas en charge IPP comme spécifié, vous ne serez probablement pas en mesure de vérifier pour 'imprimer avec succès.

+0

Peter, Je termine avec des travaux terminés lorsque l'imprimante n'a pas imprimé même une seule page (mais il a reçu toutes les données d'entrée et je peux demander plus tard à l'imprimante de continuer le travail manuellement). Je suppose que le [backend] (https://www.cups.org/doc/man-backend.html) qui parle du protocole de l'imprimante (c'est-à-dire AppSocket pour HP) ne peut que faire le «feu et oublier» que vous mentionnez et CUPS peut uniquement marquer ce travail comme terminé. Pour les protocoles lpd et socket, il y a une chance que la modification du pilote cette situation pourrait être améliorée? Un pilote différent pourrait installer un meilleur backend? Merci. – gabrielgiussi

+0

Je ne suis pas au courant que les protocoles lpd ou socket offrent de meilleures façons de surveiller les travaux. Dans tous les cas, l'imprimante devrait également supporter cette surveillance. De mon expérience ipp offre plus d'options mais cela pourrait être une opinion biaisée :-) –

Questions connexes