2017-05-25 6 views
8

J'ai une option que l'utilisateur peut sélectionner l'option d'impression où il affiche le PrintDialog où l'utilisateur peut sélectionner le profil d'imprimante déjà défini.Imprimer le fichier avec le profil d'imprimante sélectionné/taille de la page

Pour cette imprimante, le format de papier par défaut est A4, mais en sélectionnant ce profil, vous passez à A5.

J'utilise le code ci-dessous qui envoie la tâche d'impression pour corriger l'imprimante mais ne prend pas le bon format de papier car il imprime toujours en A4. Ai-je manqué quelque chose ici ou existe-t-il un autre moyen d'y parvenir?

using (var pd = new PrintDialog()) 
{ 
    if (pd.ShowDialog() == DialogResult.OK) 
     { 
     var info = new ProcessStartInfo(filepath) 
        { 
         Arguments = "\"" + pd.PrinterSettings + "\"", 
         CreateNoWindow = true, 
         WindowStyle = ProcessWindowStyle.Hidden, 
         UseShellExecute = true, 
         Verb = "Print" 
        }; 
     Process.Start(info); 
     } 
    } 
+3

Il est que tout ce programme trop improbable est associé à * * filepath va apprécier ces arguments que vous passez. En général, tout programme qui implémente un verbe d'impression décide lui-même quel papier utiliser. Presque toujours la sélection par défaut telle que configurée dans le Panneau de configuration. –

+0

Cela ressemble étrangement à la boîte de dialogue des options de configuration par défaut d'un pilote d'impression, mais vous semblez l'ouvrir en tant que processus séparé. Essayez-vous de créer un programme qui modifie les paramètres d'imprimante par défaut? En d'autres termes, je suis très confus au sujet de ce que vous essayez de faire exactement. La réponse de S. Hooley montre la manière habituelle d'imprimer une page depuis votre application. Je crois qu'il peut être utilisé en conjonction avec PrintDialog pour permettre aux utilisateurs d'ajuster les paramètres d'impression. TLDR: S'il vous plaît préciser ce que vous essayez de faire exactement. – ashbygeek

Répondre

0

Vous devriez être en mesure de préciser le page settings en utilisant le code comme suit, qui repose sur PrintDocument de System.Drawing.Printing. Si nécessaire, vous pouvez également définir un gestionnaire d'événements pour l'événement PrintPage en utilisant la classe PrintDocument:

PrintDocument pd = new PrintDocument(); 
//pd.PrintPage += new PrintPageEventHandler(handlePagePrint); 
pd.PrinterSettings.PrinterName = "Printer name goes here"; 
// select the appropriate item from the PaperSizes collection 
pd.DefaultPageSettings.PaperSize = pd.PrinterSettings.PaperSizes[0]; 

if (pd.PrinterSettings.IsValid) 
{ 
    pd.Print(); 
} 
+0

Il serait probablement utile de montrer comment cela est lié à la boîte de dialogue des paramètres de l'imprimante. – ashbygeek