Selection d'imprimante
regatta
Membre
Bonjour,
j'ai besoin de 2 imprimantes pour un logiciel :
une imprimante pour le format A4 et une pour des étiquettes (DYMO).
Mes étiquettes sont par bloc de 2 étiquettes juxtaposées.
Pour imprimer les étiquettes (par 2 donc), j'ai créée une classe dérivée de NSView et j'utilise la méthode drawRect pour écrire dans la vue.
Mon problème est au niveau de la sélection de l'imprimante !
Je crèe un NSPrintInfo avec les caractéristiques de l'imprimante (modèle, marque), son format de papier, l'orientation, etc..
Lorsque je demande l'impression des étiquettes, l'imprimante proposé est l'imprimante par défaut (A4) malgrés l'utilisation du code classique :
où printInfo correspond à mon imprimante pour les étiquettes.
Une idée pour sélectionner l'imprimante sans passer par le setShowPanels et changer le choix
Nota : le code [NSPrintInfo setSharedPrintInfo:printInfo] avant la demande d'impression ne change rien !
j'ai besoin de 2 imprimantes pour un logiciel :
une imprimante pour le format A4 et une pour des étiquettes (DYMO).
Mes étiquettes sont par bloc de 2 étiquettes juxtaposées.
Pour imprimer les étiquettes (par 2 donc), j'ai créée une classe dérivée de NSView et j'utilise la méthode drawRect pour écrire dans la vue.
Mon problème est au niveau de la sélection de l'imprimante !
Je crèe un NSPrintInfo avec les caractéristiques de l'imprimante (modèle, marque), son format de papier, l'orientation, etc..
Lorsque je demande l'impression des étiquettes, l'imprimante proposé est l'imprimante par défaut (A4) malgrés l'utilisation du code classique :
<br /> // Demande d'impression<br /> NSPrintOperation *op = [NSPrintOperation printOperationWithView:self printInfo:printInfo];<br /> [op setShowPanels:YES];<br />
où printInfo correspond à mon imprimante pour les étiquettes.
Une idée pour sélectionner l'imprimante sans passer par le setShowPanels et changer le choix
Nota : le code [NSPrintInfo setSharedPrintInfo:printInfo] avant la demande d'impression ne change rien !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Quoiqu'il en soit, voici ce qu'il faut faire pour imprimer sur une imprimante spécifique (et qui n'est pas celle par défaut) :
1. tu dois créer un NSPrinter spécifique à ton imprimante :
Le nom est celui que tu peux lire dans l'appli Configuration d'imprimante (/Applications/Utilitaires). Clique sur l'imprimante désirée, puis clique sur Afficher les infos. Le nom de l'imprimante est celui dans le champ Nom de l'imprimante (copie/colle le dans ton projet Xcode).
2. Après création/récupération de ton NSPrinterInfo (que tu nommes printInfo apparemment), fais :
pour attacher ton printInfo à une imprimante physique (représentée par printer).
3. Maintenant, tu peux imprimer via NSPrintOperation en spécifiant ton printInfo.
.
Je ne vois pas de différence importante, mais cela doit pourtant être simple :fouf): :
L'imprimante sélectionnée sur le panel est mon imprimante par défaut, la DYMO en deuxième position et non la DYMO par défaut.
Je dois donc changer mon choix à chaque impression d'étiquette (ce qui n'est pas insurmontable évidemment !)
Une idée peut-être :-\\
Oui, et même 2 !
1. relire ton code. la clé NSPrinter n'existe pas, c'est plutôt NSPrintPrinter qu'il faut utiliser.
2. relire la doc : il semble conseillé d'utiliser setPrinter: pour attacher l'imprimante à ton printInfo plutôt que de le faire via setObject:ForKey: sur le dictionnaire de description (en effet, ce dernier est modifié en fonction des possibilités/contraintes de l'imprimante).
PS : de plus, je doute fortement que les autres clés du dictionnaire soient correctes. Du moins, si je m'en réfère à la doc.
.
J'avais commencé avec les valeurs décrites dans la doc mais comme cela ne fonctionnait pas, j'ai lu les valeurs dans le dictionaire après les lignes suivantes (voir pièce jointe)
les clefs me semblent différentes et je me suis basé sur celles retournées par GDB
j'ai la berlu ou je n'est pas compris ce que me dit GDBÂ :fouf): (les deux peut-être !)
C'est grave docteur :-\\
[Fichier joint supprimé par l'administrateur]
fonctionne alors que
ne fonctionne pas.
Par contre, les clés lues à partir du ne sont pas en accord avec la doc apple ; cela resemble à du copier/coller un peu bestial ou je ne comprend pas ce que retourne GDB.
C'est pour moi la tournée !