Announcement

Collapse
No announcement yet.

Papierfach beim Drucken festlegen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Papierfach beim Drucken festlegen

    Hallo,
    vielleicht habe ich Glück und jemand von euch Experten verbringt sein Ostern auch am Rechner
    Wir haben einen neuen Drucker HP Laser Jet 3015 mit 4 Papierfächern.
    Bei uns werkeln 6 Drucker von 3 verschiedenen Herstellern. Bei dem Neuen haben wir uns für HP entschieden weil
    kostenlose, immer erreichbare Hotline mit sehr freundlichen Mitarbeitern.

    Bei unserem Problem hat man uns aber schmählich im Stich gelassen. Einen Programmierer kann man persönlich gar nicht sprechen. Und der Mailverkehr hin und her brachte nur Missverständnisse. Eine richtige Antwort habe ich jedenfalls bislang nicht.
    Wir möchten die Papierfächer mit unterschiedlichen Formularen bestücken. Im VB-Code soll dann das richtige Fach genutzt werden. Das funktioniert eben nicht.

    Wir starten den Druckvorgang (z.B. mit Fach 2) so:

    Code:
        Public Sub Print(ByRef printerName As String, printerTray As String)
            Dim scr As New PaperSource
            scr.SourceName = printerTray.Trim
    
            If String.IsNullOrEmpty(printerName) Then
                m_printDocument.PrinterSettings = New PrinterSettings       'use Windows Default Printer
                m_printDocument.DefaultPageSettings.PaperSource = scr
            Else
                m_printDocument.PrinterSettings.PrinterName = printerName
                m_printDocument.DefaultPageSettings.PaperSource = scr
            End If
            Try
                m_printDocument.Print()
            Catch ex As Exception
                Windows.Forms.MessageBox.Show(ex.ToString)
            End Try
        End Sub
    In scr stehen folgende Eigenschaften:
    Kind Custom {257}
    RawKind 257
    SourceName Fach 2

    PageSettings zeigt mir:
    Color=True, Landscape=False
    Margins=[Margins Left=100 Right=100 Top=100 Bottom=100]
    PaperSize=[PaperSize A4 Kind=A4 Height=1169 Width=827]
    PaperSource=[PaperSource Fach 2 Kind=Custom]
    PrinterResolution=[PrinterResolution X=600 Y=600]

    Das Papier wird dennoch aus Fach 4 genommen. Es ist zum Verzweifeln
    Kann jemand das Problem knacken? Wir wären sehr dankbar.

    Grüße Norbert

  • #2
    Also ich kenne mich mit dem Thema nicht aus, aber ich würde mal versuchen die aktuellen Einstellungen auszulesen... vielleicht sind ja einfach nur die Namen anders oder so Oder mal im Windows Drucker Dialog schauen ob da irgendwas anders heißt.

    Comment


    • #3
      Hast du denn den Tray Namen haargenau gesetzt? Bei meinem HP Drucker beginnen die zum Beispiel alle mit einem Leerzeichen. Bei mir wäre es also " Fach 2".
      Ich würde eh empfehlen über die möglichen PaperSources an den PrinterSettings zu iterieren, die passende auswählen und das gefundene Object dann DefaultPageSettings.PaperSource zuweisen. Wenn man einfach eine neue PaperSource erzeugt weiß ich nicht ob der Drucker das nicht einfach selbst überschreibt, ignoriert oder sonstwas tut wenn irgend ein Setting nicht passt wie z.B. die PaperSize.

      Comment


      • #4
        Hätte ich niemals gedacht, dass sogar mehrere zu Ostern da sind. Danke für die Antworten!
        Ausgelesen habe ich die Trays schon:
        Code:
            Public ReadOnly Property PrinterPaper As List(Of String)
                Get
                    paperSource.Clear()
                    For Each scr As PaperSource In m_printDocument.PrinterSettings.PaperSources
                        paperSource.Add(scr.SourceName)
                    Next
                    Return paperSource
                End Get
            End Property
        Habe aber blöderweise ein TRIM gemacht, weil ich vorher für die Anzeige in einem ContextMenuStrip die Namen eingerückt habe. Das mit dem Leerzeichen davor werde ich nachher gleich prüfen. Jetzt macht erst mal die Familie Terror, weil ich mit den Enkeln Eier suchen muss. Vielleicht seid ihr später auch noch da?

        Comment


        • #5
          Ja, es stimmt. Es ist ein Leerzeichen davor. Also " Fach 2"
          Ich übergebe es jetzt genau so. Aber er zieht trotzdem das Papier aus dem Fach 4. Ich denke, die Settings stimmen noch nicht. Wenn ich die PapaerSources auslese, erhalte ich 24 Angaben. Außer den Fächern auch unter anderem "Briefkopf", "Etiketten", "Vorgedruckt" und anderes mehr. Vielleicht muss man da noch etwas setzen?
          @Ralf:
          Hast Du auch einen HP? Kannst Du die Fächer ansteuern? Kannst Du nen Codeschnipsel posten, wie Du es gemacht hast?

          Comment


          • #6
            Ich hab einen alten Laserjet 3600N. Folgendes funzt hier und benutzt dann die manuelle Zufuhr anstatt das Fach.

            [HIGHLIGHT= C#]private void button1_Click(object sender, EventArgs e)
            {
            PrintDocument doc = new PrintDocument();
            doc.PrintPage += doc_PrintPage;
            foreach (PaperSource paperSource in doc.PrinterSettings.PaperSources)
            if (pSource.SourceName == " Man. Zufuhr in Fach 1")
            {
            doc.DefaultPageSettings.PaperSource = paperSource;
            doc.Print();
            break;
            }
            }

            private void doc_PrintPage(object sender, PrintPageEventArgs e)
            {
            e.Graphics.DrawString("Hallo strzata", this.Font, new SolidBrush(Color.Black), e.PageBounds);
            }

            [/HIGHLIGHT]

            Comment


            • #7
              Vielen Dank!
              Genauso hab ich es auch gemacht. Oder kannst Du einen Fehler in meinem Code (siehe oben) entdecken? PrintPageEvent mit e.Graphics ist natürlich auch vorhanden. Der PaperSource Name stimmt auch ganz genau. Es muss noch an etwas anderem liegen. Setzt VB evt. den Code nicht richtig nach PCL6 (!) um? Oder muss ich den Drucker anders einstellen. Es gibt da im PCL-Menü einen Punkt "Zuordnung zu Druckermedienquelle". Mit dem weiss ich aber nichts anzufangen. Und wieso bringt er mir bei der Auflistung von PaperSource 24 Einträge, wobei die meisten gar nichts mit den Fächern zu tun haben? In der Oberfläche des Treibers erscheinen die alle nicht. Da werden nur die Fächer angezeigt.
              Wie soll ich bloss den Fehler finden???

              Comment


              • #8
                PaperSources ist die Kombination aus Quelle und Sorte das sollte dich nicht Wundern das da so viele kommen.
                Denn Unterschied denn ich sehe ist das du einen neue PaperSource erzeugst und eben nicht eine vorhandene aus PrinterSettings.PaperSources verwendest.

                Comment


                • #9
                  @Ralf
                  Aha! Leuchtet mir jetzt evt. ein. Muss drüber nachdenken. Man kann also nicht einfach die Source über ihren Namen setzen, sondern muss die Sources iterieren und dabei die richtige schnappen ...

                  Wird leider heute nichts mehr. Wäre schön, wenn ich Dich morgen noch einmal antreffen würde. Vielleicht gibts da schon einen Erfolg.
                  Viele Grüße
                  Norbert

                  Comment


                  • #10
                    Hurra! Es funktioniert!
                    Ich weiss gar nicht, wie ich Dir danken soll. Bist der Größte für mich!
                    Wüßtest Du eventuell noch einen Trick, wie man die vielen nicht relevanten Items beim Auslesen der PaperSources ausblenden und nur die tatsächlichen Fächer anzeigen kann? Könnte vielleicht für meine Anwender etwas Verwirrend sein.
                    Hier nochmal der Code dazu:
                    Code:
                        Public ReadOnly Property PrinterPaper As List(Of String)
                            Get
                                paperSource.Clear()
                                For Each scr As PaperSource In m_printDocument.PrinterSettings.PaperSources
                                    paperSource.Add(scr.SourceName)
                                Next
                                Return paperSource
                            End Get
                        End Property
                    Sonst lasse ich es so, hauptsache es funktioniert.
                    Ganz herzliche Grüße
                    Norbert

                    Comment

                    Working...
                    X