8
votes

Comment définir une imprimante par défaut

Comment définissez-vous printdocument.printersettings.printerntername pour être l'imprimante par défaut?

Je ne parle pas de définir l'imprimante par défaut dans le système d'exploitation. Au contraire, je parle de définir l'objet PrintDocument afin qu'il imprime sur l'imprimante par défaut.


8 commentaires

duplicailler possible de Comment définir l'imprimante Windows par défaut dans C #?


@Doc Brown: Je ne pense pas que ce soit un duplicata. La question que vous avez liée à la définition de l'imprimante par défaut de l'ensemble du système d'exploitation. Cette question apparaît pour définir l'application pour imprimer à l'imprimante par défaut du système. @CRAIG: soins à peser sur ce que vous demandez réellement?


@Cody: Je n'aime pas les questions où je dois deviner ce que l'OP aurait pu vouloir dire.


@Doc: convenu, mais c'est une option proche différente. ;-)


@CRAIG - Je crois que votre question est répondue? - Veuillez marquer la réponse comme approprié


@Matt: Matt, n'est pas répondu car personne ne m'a dit comment définir l'objet PrintDocument Retour à l'imprimante par défaut. Je ne veux pas avoir à créer un nouvel objet PrintDocument.


@DocBrown: Comment pourriez-vous ne pas comprendre ce que l'OP signifiait? La question demande comment définir PrintDocument.PrinterSettings.printername à l'imprimante par défaut. Qu'est-ce qui pourrait être plus clair que ça?


@CRAIGJ Ne vous inquiétez pas, les intentions ici sont bonnes et simplement pour vous assurer que votre question était différente des utilisations existantes. J'ai essayé de clarifier vos intentions dans ma réponse ci-dessous en énumérant les conditions dans lesquelles il s'agit d'une préoccupation valable. J'espère que mon code de code aborde votre question plus spécifiquement.


6 Réponses :


5
votes

Il est automatiquement initialisé à l'imprimante par défaut. Ne rien faire.


4 commentaires

Qu'en est-il si vous le définissez sur une autre imprimante, puis souhaitez revenir à l'imprimante par défaut?


Peu importe, il s'initialise toujours à l'imprimante par défaut. Utilisez un imprimeur pour choisir l'imprimante.


Cela ne répond pas à la question.


Je veux savoir comment définir PrintDocument.PrinterSettings.printername Retour à l'imprimante par défaut.



0
votes

Je suppose que vous avez défini l'imprimante par défaut au niveau du système d'exploitation. Lorsque vous initiez une impression de votre code, celle-ci par défaut va à l'imprimante par défaut. Vous n'avez pas besoin de la définir explicitement.

Ceci se passe pour chaque demande d'impression. Je veux dire si vous avez défini l'impression sur une autre imprimante et que vous souhaitez désormais aller à l'imprimante par défaut, supprimez simplement le paramètre explicite et vous allez à nouveau à l'imprimante par défaut.

htth


2 commentaires

Pouvez-vous expliquer "simplement supprimer le réglage explicite"?


Je veux dire, je ne l'ai pas défini explicitement .. recréez un nouveau printDocument et ne réglez pas le réglage ...



13
votes

Si je comprends bien correctement, vous souhaitez être en mesure de réinitialiser le nom PrintName à l'imprimante par défaut (1) sans recréer votre imprimeur et, (2) Une fois que vous l'avez peut-être déjà défini à quelque chose d'autre ou, (3) lorsque l'imprimante par défaut a peut-être modifiée depuis le moment où l'impression a été créée pour la première fois (vous ne pouvez donc pas compter sur simplement mettre en cache des valeurs par défaut fournies par l'instance cible après la construction initiale) .

Dans ce cas, une recherche de " c # obtenez le nom de l'imprimante par défaut < / em> "allume l'excellent message suivant sur Stackoverflow: Quelle est la meilleure façon d'obtenir l'imprimante par défaut dans .NET

bâtiment de l'échantillon fourni dans la réponse votée top et envisageez que vous aurez déjà un préexistant imprimé avec certains paramètres que vous ne voulez pas recréer; Vous pouvez créer une nouvelle instance de la classe , à la seule des fins de la copie du nom d'imprimante par défaut. xxx

Vous pouvez consulter le lien Publier pour des techniques alternatives telles que WMI, mais je pense que c'est la solution la plus simple et la plus propre pour vous.


3 commentaires

Merci, mais j'étais après une solution qui n'avait pas besoin de la création d'un nouvel objet PrintDocument.


@CRAIGJ J'ai très explicitement montré que je suis pas Création d'un autre objet PrintDocument. C'est pourquoi je l'ai appelé «existantprintdocumentInstance», veuillez remplacer cela avec votre instance existante de PrintDocument.


@CRAIGJ Avez-vous rééclamé la réponse fournie? Votre commentaire a suggéré que vous ne comprenez pas bien ce qui se passait dans mon échantillon de code. Si cela ne répond pas à vos besoins, vous devez modifier et clarifier vos besoins.



0
votes

Corrigez-moi si je me trompe, mais vous cherchez à obtenir le nom de l'imprimante par défaut, puis à régler printdocument.printersettings.printersettings.printername à ceci.

Lorsque vous utilisez printDocument.PrinterSettings.printerSettings.printername Ceci utilise l'imprimante par défaut par défaut.


5 commentaires

PrintDocument.PrinterSettings.printernom peut être modifié dans le programme. Comment le remettez-vous à l'imprimante par défaut?


Une façon est de créer une méthode indiquée ci-dessous et de l'appeler. en utilisant System.Drawing.Printing; chaîne getDefaultPrinter () {Paramètres d'imprimeur = Nouvelles imprimantes (); foreach (imprimante à chaîne en imprimeur à imprimeur.Installedprinters) {Paramètres.Printername = imprimante; IF (Paramètres.isdefaultPrinter) Retourner l'imprimante; } retour string.empty; }


@Marijn - Qui est ce commentaire pour.


@CRAIGJ - L'option la plus efficace consiste à obtenir le nom d'imprimante par défaut à l'aide des imprimeurs. Ce que vous pouvez également faire si vous ne voulez pas faire cela consiste à enregistrer l'imprimante par défaut lorsque vous créez l'imprimerocument initialement et que vous l'utilisez ultérieurement en cas de besoin.


@nollaig que ce commentaire était pour vous :)



2
votes
GetDefaultPrinter() 

{ PrinterSettings settings = new PrinterSettings(); 

foreach (string printer in PrinterSettings.InstalledPrinters) 

{ settings.PrinterName = printer; 

if (settings.IsDefaultPrinter) 

return printer; 

} 

return string.Empty; 

}

1 commentaires

J'ai utilisé quelque chose comme ça pour trouver le nom de l'imprimante par défaut, mais j'ai trouvé cette remarque dans la documentation MSDN: "ISDEFaultPritter retourne toujours false lorsque vous définissez explicitement la propriété PrintName sur une valeur de chaîne autre que NULL." Il semble donc que le code ci-dessus soit bientôt pour devenir incorrect, même s'il semble également fonctionner maintenant.



0
votes

Par défaut, vous atterrissez sur l'imprimante par défaut si vous ne définissez rien sur votre objet. Voici la source officielle que vous recherchiez: lien MSDN Classe imprimée

Marquez la phrase écrite juste au-dessus de l'exemple: "L'exemple de code suivant imprime le fichier nommé c: \ myfile.txt sur l'imprimante par défaut " .

htth


3 commentaires

Qu'en est-il de si je change l'imprimante en quelque chose d'autre. Comment le remettre à l'imprimante par défaut?


Je pense que vous êtes confondre avec quelle est l'imprimante par défaut. Seul le système d'exploitation contrôle votre imprimante par défaut (celle que vous pouvez afficher à partir de Panneau de configuration -> Paramètres de l'imprimante). Même si vous passez des imprimantes lorsque vous imprimez des documents, vous ne modifiez pas réellement l'imprimante par défaut. Donc, la prochaine fois que vous devez imprimer un document, vous seriez à nouveau frapper l'imprimante par défaut de votre document.


Si vous avez besoin de votre document à envoyer à une imprimante très spécifique (mauvaise décision de conception). Vous pouvez faire boucle via des empreintes installés et enregistrer l'objet de l'imprimante que vous souhaitez utiliser pour l'impression.