TLDR Wie kann man die Anzahl der Seiten, die gedruckt werden müssen, effizient bestimmen?Effiziente Methode zum Zählen der Anzahl der zu druckenden Seiten?
** Nur eine Anmerkung: Ich habe klugeramas Antwort als die Antwort auf meine Frage markiert. Ich bin immer noch offen für andere Vorschläge!
Derzeit habe ich eine Anwendung in der Produktion, die Rechnungen druckt. Der Druck selbst ist kein Problem: Kundeninformationen, Rechnungsdetails usw. werden so gedruckt, wie sie sein sollten. Benutzer beschweren sich jedoch über die Zeit, die meine Software benötigt, um den Druckauftrag an den Drucker zu senden.
Im Moment habe ich eine ziemlich ineffiziente Art zu drucken implementiert. Um zu wissen, wie viele Seiten ich drucken muss, führe ich einen "Trockenlauf" des Druckauftrags durch und annulliere ihn, bevor er an den Drucker gesendet wird. Dann zähle ich die Anzahl der Seiten, die der Druckauftrag enthält, und füge diese Informationen dem Druckauftrag hinzu, der tatsächlich an den Drucker gesendet wird. Um dies zu tun, missbrauche ich die Methode PrintDocument.PrintPage. Danach kann ich "Seite 1/2 - Seite 2/2" usw. drucken.
Ich denke gerade darüber nach, dies anders zu handhaben. Ich weiß, welche Ränder ich in einer Seite habe, wie die Kopfzeile und die Fußzeile. Ergo, der Abstand zwischen Kopf- und Fußzeile ist der verfügbare Platz zum Drucken von Artikelinformationen (Name, Preis usw.). Wenn ich die Höhe der Zeichenfolge (unter Verwendung Graphics.MeasureString) berechnen, kann ich feststellen, wenn die Artikel mehr Platz auf einer Seite einnehmen, die zum Drucken verfügbar ist.
Früher konnte der Druckvorgang bis zu einer Minute dauern, bevor er tatsächlich an den Drucker gesendet wurde (berücksichtigt wurden die Clients, die die Software ausführen, sind nicht die schnellsten). Ich habe diese Methode implementiert, und das Drucken dauert jetzt ungefähr 5-10 Sekunden. Ich frage mich jedoch, ob dies der richtige Weg ist. Ich kann mir nicht vorstellen, dass ich der einzige bin, der sich mit diesem Thema beschäftigt; wie gehst du damit um?
Ich bin auch offen für völlig andere Ansätze.
Vielleicht könnten Sie es in PDF oder XPS vorrender und nur zählen Sie die Seiten des Dokuments. – TGlatzer
@ Grumbler85 Das wäre eine Option, aber das Generieren des PDF/XPS würde wahrscheinlich genauso viel Zeit in Anspruch nehmen wie das Ausführen eines Druckjobs. Ich habe Zweifel an Ihrer Herangehensweise, aber ich werde es mir merken. – Stefan
Da die meisten Drucker heute PDF und XPs direkt drucken können gibt es eine Chance, dass Sie nicht viel Zeit verlieren ... – TGlatzer