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

1/5 (8 avis)

Vue 43 229 fois - Téléchargée 7 153 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
31 oct. 2006 à 16:35
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
18 sept. 2006 à 00:01
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
8 nov. 2005 à 10:08
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 Membre Dernière intervention 20 juin 2013 61
23 avril 2005 à 13:40
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
9 avril 2005 à 17:14
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.