C'est le meilleur que j'ai proposé:
public static int GetPageCount( PrintDocument printDocument )
{
printDocument.PrinterSettings.PrintFileName = Path.GetTempFileName();
printDocument.PrinterSettings.PrintToFile = true;
int count = 0;
printDocument.PrintController = new StandardPrintController();
printDocument.PrintPage += (sender, e) => count++;
printDocument.Print();
File.Delete( printDocument.PrinterSettings.PrintFileName );
return count;
}
3 Réponses :
chèque - http: // msdn. microsoft.com/en-us/library/system.drawing.printting.printdocument.Querypagesettings.aspx P>
Il existe un événement PrintDocument.QuiserypageSettings qui pourrait être traité. S'il est manipulé, il est appelé avant chaque impression d'impression.Printepage. Donc, vous pouvez mettre un compteur là-bas pour compter les pages. De cette façon, vous pouvez éviter deux passes (une passe pour imprimer le DOC au fichier pour compter les pages et la deuxième passe pour l'impression réelle des travaux). P>
L'URL ci-dessus a un exemple de code pour un comptoir également. P>
J'espère que cela aide p>
Déclarez la conception de caractères en tant que De cette façon, vous imprimez uniquement en mémoire, pas à un fichier. p>
Je l'utilise dans un projet VB.NET et cela fonctionne parfaitement! P> impression.previewprintController code>. p>
La solution finale serait donc:
public static int GetPageCount(PrintDocument printDocument)
{
int count = 0;
printDocument.PrintController = new PreviewPrintController();
printDocument.PrintPage += (sender, e) => count++;
printDocument.Print();
return count;
}
Je suggérerais de sauvegarder la conception de caractères et de la restituer à la façon dont c'était après avoir fait le faux imprimé. Sans cela, la mienne n'imprimerait pas quand je voulais faire la vraie impression. Donc, ce serait "printController pcBackup = printdocument.printcontroller" au début et "printdocument.printcontroller = pcbackup" juste avant de renvoyer la valeur de comptage.
Comment vous construisez le printDocument code>?
Pas avec PrintDocument lui-même. Vous devrez connaître la quantité de page du fichier que vous souhaitez imprimer via la quantité de ligne et la marge que vous utiliserez et la quantité de ligne que vous souhaitez par page, etc.