Druckeraufträge Seitenzahl erfassen...

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Cheffboss.

    Druckeraufträge Seitenzahl erfassen...

    Moin! :)
    Ich möchte wenn man eine Datei druckt, dass es alle Seiten anzeigt werden.
    Zum Beispiel hat eine PDF 15-Seiten, diese man druckt.
    Dann soll im Label als Seitenanzahl die 15 erscheinen!
    Im Moment zählt es nur die bereits ausgedruckten Seiten herunter.
    Ich hoffe ich könnte mein Problem gut Beschreiben!
    (Im Anhang befindet sich der Quellcode).
    Ich glaube der Code macht das Problem!

    VB.NET-Quellcode

    1. prntJob.Properties("TotalPages").Value

    Habe bis jetzt noch keinen anderen Parameter gefunden!
    Freue mich auf Hilfe!
    BIG THX
    Visual Basic.NET 8o
    MS-SQL
    8o

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Cheffboss“ ()

    @Cheffboss Es sieht so aus, als zeigt er die Anzahl der Seiten an, die sich gerade im PrintBuffer befinden.
    Wenn Du aufhörst, einen kleineren als den letzten Wert auszugeben, sollte der Wert stimmen, es sei denn, der Druck ist schneller als Deine Abfrage.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany
    Danke, könntest du mir bitte noch mehr Infos geben. ?(

    @an alle
    Ich habe heute den ganzen Tag versucht das Problem selber zu lösen.
    Leider ohne Erfolg! ;(
    Ich möchte dass er mir sofort anzeigt, wie viele Seiten es sind.
    Mein Ziel ist, das er mir sofort den höchsten Wert anzeigt.
    Derzeit geht es so 1,2,3,4 usw.
    Ich hoffe ich könnte mein Problem gut Beschreiben!
    Und freue mich auf tolle Ratschläge!

    Code:

    VB.NET-Quellcode

    1. Public Function getNumberofPages() As Integer
    2. Dim searchQuery As String = "SELECT * FROM Win32_PrintJob"
    3. Dim searchPrintJobs As ManagementObjectSearcher = New ManagementObjectSearcher(searchQuery)
    4. Dim prntJobCollection As ManagementObjectCollection = searchPrintJobs.[Get]()
    5. ' Seiten in Listbox einfügen....
    6. For Each prntJob As ManagementObject In prntJobCollection
    7. Me.ListBox1.Items.Add(prntJob.Properties("TotalPages").Value.ToString)
    8. Next
    9. ' Höchster Listbox1 Wert ermitteln...
    10. Dim maxValue As Integer
    11. Dim allItems(ListBox1.Items.Count - 1) As Object
    12. Dim allValues(ListBox1.Items.Count - 1) As Integer
    13. ListBox1.Items.CopyTo(allItems, 0)
    14. allValues = Array.ConvertAll(Of Object, Integer)(allItems, AddressOf Convert.ToInt32)
    15. Array.Sort(allValues)
    16. maxValue = allValues(allValues.Length - 1)
    17. Return maxValue
    18. End Function
    19. Private Sub InfosAuslesen()
    20. ' debug...
    21. MsgBox(getNumberofPages.ToString)
    22. ' Infos anzeigen...
    23. Me.Label1.Text = "Seitenanzahl: " & getNumberofPages().ToString
    24. End Sub

    Visual Basic.NET 8o
    MS-SQL
    8o

    Cheffboss schrieb:

    noch mehr Infos geben
    Ich habe einfach nur hingesehen und beschrieben, was ich gesehen habe.
    Möglicherweise ist Deine Abfrage nach der Seitenanzahl "TotalPages" nicht korrekt.
    Woher hast Du die Information für Deinen Code?
    ====
    Du musst die aktuelle Anzahl merken und bei der nächsten Anzahl diese mt der älteren vergleichen.
    Wenn die Anzahl kleiner als die letzte ist, gib die letzte zurück.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()

    @RodFromGermany
    Den Parameter TotalPages habe ich,
    auf irgendeiner Seite in Googel gefunden.
    Ich werde nochmals schauen ob es einen anderen gibt.
    Zu deinem Vorschlag mit aktuelle Anzahl merken.
    Werde ich dann am Montag ausprobieren.
    Da ich gerade mir leider nicht vorstellen kann, wie ich dies lösen kann.
    Visual Basic.NET 8o
    MS-SQL
    8o

    Cheffboss schrieb:

    wie ich dies lösen kann.
    Pseudocode:

    Quellcode

    1. Anzahl = 0
    2. Start()
    3. ===
    4. Schleife
    5. Dim anz = GetAnzahl()
    6. If anz < Anzahl Then Return Anzahl
    7. Anzahl = anz
    8. End Schleife
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany
    Super, Vielen Dank! - Das war meine Rettung! :thumbup:

    @an alle

    VB.NET-Quellcode

    1. Dim Anzahl As Integer = 0
    2. Private Function DruckerAnzahlSeitenAuslesen() As Integer
    3. ' Pseudocode:
    4. Do
    5. If TotalPages <= Anzahl Then Exit Do
    6. Anzahl = TotalPages
    7. Loop
    8. Return Anzahl
    9. End Function
    Visual Basic.NET 8o
    MS-SQL
    8o