Methodes d'impression - mise en page - apercu ...

Soyez le premier à donner votre avis sur cette source.

Vue 40 807 fois - Téléchargée 6 813 fois

Description

Il s'agit de techniques que j'ai apprises au travers d'un ouvrage écrit par l'excellent programmeur Karli Watson, membre du Wrox Team.
Cet exemple, conçu à ma sauce montre comment imprimer le contenu d'un RichTextBox, comment n'imprimer que le texte sélectionné par le biais de la boîte de dialogue imprimer, comment gérer l'impression sur plusieurs pages, comment récupérer les préférences de mise en page, comme les marges, définies par l'utilisateur sur la boîte de dialogue mise en page et aussi comment afficher un aperçu avant impression...

Plusieurs contrôles sont nécessaires comme l'indispensable PrintDocument dont les gestionnaires PrintPage() et BeginPrint() gèrent l'essentiel des tâches d'impression.

BeginPrint() ne se produit qu'une fois, au début de l'impression. C'est donc ici qu'on effectue les tâches de traitement de chaîne avant de commander l'impression.

EXTRAIT:
private string[] lignes;
...
char[] saut = {'\n'};
lignes = Page.SelectedText.Split(saut);

Dans cet exemple Page est le contrôle RichTextBox. Le texte qu'il contient est d'abord fractionné (Split()), en tableau de chaînes au niveau du saut de ligne ('\n').
L'impression quant à elle est gérée par PrintPage(), une fois toutes les préférences recensées:
...
int x =e.MarginBounds.Left;
int y =e.MarginBounds.Top;

//Dessine chaque ligne
while(lignesImprime < lignes.Length)
{
e.Graphics.DrawString(lignes[lignesImprime++], new Font("Arial",10), Brushes.Black, x, y);
y += 15;
...
Les marges étant définies selon les choix utilisateurs sur la boîte Mise en Page (x et y), la méthode DrawString() permet de dessiner (Imprimer) chaque ligne fractionnée (...DrawString(lignes[lignesImprime++]...), selon la police définie.

L'aperçu est très simple. On utilise un PrintPreviewDialog rattaché au PrintDocument à l'aide de sa propriété Document et on commande l'affichage de l'aperçu:
dlgApercu.ShowDialog();

Voilà, personnellement j'ai toujours trouvé que l'impression était une tâche délicate. Mais décortiqué comme cela, la vie devient plus simple...

Hope this help !!

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

kiramus
Messages postés
1
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
31 octobre 2006
-
Hello, sympa ce code pour imprimer du texte mais quelqu'un sait-il comment imprimer le contenu d'un datagridview contenant une liste d'objets, et ce simplement ?
marcel6566
Messages postés
25
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2006
-
Vraiment bien ton source. ET bravo pour le pdf.

Marcel
theclear
Messages postés
12
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
24 juillet 2007
-
Salut,

merci pour ce code il confirme ce que j'avais trouvé sur d'autres sites mais cela ne fonctionne pas avec mon imprimante: Datamax M-4206. Au lieu de m'imprimer les différentes pages de mon document, il m'imprime la première page autant de fois qu'il y a de pages dans mon document.

Pourtant si je fais un document de plusieurs pages avec le bloc notes de windows ca fonctionne très bien. Je ne comprend pas pourquoi!

Si quelqu'un a une idée merci de m'aider.
cs_Bidou
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
43 -
Ca m'a été utile aussi.
Merci !
PhoeniXX52
Messages postés
38
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
8 mars 2006
-
Impecable, ca m'a bien servis ton code merci beaucoup !!

PS: Pourquoi quand on note qqch dans le richtextbox puis qu'on fait un aperçu ou qu'on imprime tout se réaligne sur la gauche ?


A ++.

Encore MERCI !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.