Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Αλλαγή Ρυθμίσεων περιθωρίων εκτύπωσης σε vb.net

Îåêßíçóå áðü ôï ìÝëïò thomas. Τελευταία δημοσίευση από το μέλος George Parissis στις 25-01-2013, 20:17. Υπάρχουν 9 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  24-01-2013, 19:11 72010

    Αλλαγή Ρυθμίσεων περιθωρίων εκτύπωσης σε vb.net

    Τυπώνω σε έναν θερμικό εκτυπωτή που συνδέεται με usb  και θέλω να αλλάξω (μικρύνω) το αριστερό περιθώριο από την default διαμόρφωση της εκτύπωσης.
    Αν υποθέσουμε ότι έχω
     Dim prn As New Printing.PrintDocument

    θέλω να κάνω κάτι τέτοιο...
    prn.DefaultPageSettings.PrintableArea.Left =3
    Δυστυχώς είναι ReadOnly και δεν μπορώ όμως.
    Μήπως υπάρχει κάποιος άλλος τρόπος;


  •  24-01-2013, 19:26 72011 σε απάντηση της 72010

    Απ: Αλλαγή Ρυθμίσεων περιθωρίων εκτύπωσης σε vb.net

    Το PrintDocument έχει ένα event. QueryPageSettings.

    To event αυτό όταν γίνεται raise μας δίνει πρόσβαση σε μία μεταβλητή τύπου QueryPageSettingsEventArgs. Ένα από τα properties αυτής της μεταβλητής είναι PageSettings.Margins όπου εκεί ρυθμίζεις τα Margins, δηλαδή περιθώρια της εκτύπωσης. Η σειρά αν θυμάμαι καλά είναι αριστερά, επάνω, δεξιά & κάτω. Αν κάνω λάθος διόρθωσέ με όταν το δεις. Παρακάτω σου έχω ένα μικρό κομμάτι κώδικα για να έχεις το αποτέλεσμα που θέλεις.

    1
    2
    3
     
    Dim newMargins As System.Drawing.Printing.Margins
      newMargins = New System.Drawing.Printing.Margins(0, 0, 3, 0) 
      e.PageSettings.Margins = newMargins 

    Συγνώμη αλλά γράφω σε VB.

  •  25-01-2013, 01:36 72013 σε απάντηση της 72011

    Απ: Αλλαγή Ρυθμίσεων περιθωρίων εκτύπωσης σε vb.net

    Dim _PrinterName as String="Thermical Printer"
    Dim myText as String="This is a test"
    Public Sub PrinterMan()
           Dim prn As New Printing.PrintDocument
            Using (prn)
                prn.PrinterSettings.PrinterName _
                   = _PrinterName
                AddHandler prn.PrintPage, _
                   AddressOf Me.PrintPageHandler
               AddHandler prn.QueryPageSettings, AddressOf MyPrintQueryPageSettingsEvent
                prn.PrinterSettings.DefaultPageSettings.Margins = New Margins(0, 0, 0, 0) ' δεν αλλάζει τα περιθώρια...

                prn.Print()
                RemoveHandler prn.PrintPage, _
                   AddressOf Me.PrintPageHandler
              
            End Using
    End Sub

     Private Sub PrintPageHandler(ByVal sender As Object, _
           ByVal args As Printing.PrintPageEventArgs)
            Dim myFont As New Font("Microsoft San Serif", 10)
            args.Graphics.DrawString(myText , _
               New Font(myFont, FontStyle.Regular), _
               Brushes.Black, 50, 50)
         args.PageSettings.Margins = New Margins(0, 0, 0, 0) ' ούτε αυτό δεν αλλάζει τα περιθώρια
        End Sub

    Έβαλα και την παρακάτω function αλλά πάλι τίποτα... μαζί με το addHandler παραπάνω...
    Private Sub MyPrintQueryPageSettingsEvent(ByVal sender As Object, ByVal e As QueryPageSettingsEventArgs)

            Dim newMargins As System.Drawing.Printing.Margins
            newMargins = New System.Drawing.Printing.Margins(0, 0, 0, 0)
            e.PageSettings.Margins = newMargins

        End Sub



  •  25-01-2013, 02:05 72014 σε απάντηση της 72013

    Απ: Αλλαγή Ρυθμίσεων περιθωρίων εκτύπωσης σε vb.net

    Θωμά από ότι βλέπω έχεις βάλει μηδέν σε όλα. Λογικό είναι να μην αλλάζει το περιθώριο. Βάλε (10,0,0,0) για παράδειγμα να το φέρεις δέκα μονάδες πιο μέσα από τα αριστερά.

     

  •  25-01-2013, 09:52 72015 σε απάντηση της 72014

    Απ: Αλλαγή Ρυθμίσεων περιθωρίων εκτύπωσης σε vb.net

    Το δοκίμασα και αυτό δεν δουλεύει...
  •  25-01-2013, 16:15 72017 σε απάντηση της 72015

    Απ: Αλλαγή Ρυθμίσεων περιθωρίων εκτύπωσης σε vb.net

    Έκανα ένα δοκιμαστικό project να το δω και έχεις δίκιο. Στην αρχή ξαφνιάστηκα. Ο μηχανισμός είναι αυτός αλλά έδειχνε ότι δεν δουλεύει και μετά πρόσεξα ένα property επάνω στο PrintDocument control. Το OriginAtMargins το οποίο είναι False. Όταν το έκανα True τότε έπερνε τα Margins που του έδινα. Νομίζω πως αυτό είναι το τελευταίο που σου λείπει.

     

  •  25-01-2013, 16:50 72020 σε απάντηση της 72017

    Απ: Αλλαγή Ρυθμίσεων περιθωρίων εκτύπωσης σε vb.net

    Δουλεύει απ'οτι βλέπω αλλά μόνο για να πάει η εκτύπωση πιο δεξιά όχι ποιο αριστερά γιατί δεν αλλάζει το PageSettings.HardMarginX,PrintDocument.PrinterSettings.DefaultPageSettings.PrintableArea.X
  •  25-01-2013, 18:40 72021 σε απάντηση της 72020

    Απ: Αλλαγή Ρυθμίσεων περιθωρίων εκτύπωσης σε vb.net

    Τότε βάλε αρνητικό νούμερο Margin(-10,0,0,0) για να πάει πιο αριστερά.
  •  25-01-2013, 19:07 72022 σε απάντηση της 72021

    Απ: Αλλαγή Ρυθμίσεων περιθωρίων εκτύπωσης σε vb.net

    Αρνητικό στο Left στο Margin δεν πέρνει και βγάζει το παρακάτω error...
    Value of '-10' is not valid for 'left'. 'left' must be greater than or equal to 0.
    Η ιδέα σου ήταν πολύ καλή και μου έδωσε την λύση. Σε ευχαριστώ  πολύ και για την βοηθειά σου και την ιδέα σου!Wink

    Η λύση τελικά είναι:

      Private Sub PrintPageHandler(ByVal sender As Object, _
           ByVal args As Printing.PrintPageEventArgs)
            Dim myFont As New Font("Microsoft San Serif", 10)
            args.Graphics.DrawString(iPrintingText, _
               New Font(myFont, FontStyle.Regular), _
               Brushes.Black, -80, 0)
          

        End Sub

    όπου το -80 είναι x coordinate και 0 y coordinate.

  •  25-01-2013, 20:17 72023 σε απάντηση της 72022

    Απ: Αλλαγή Ρυθμίσεων περιθωρίων εκτύπωσης σε vb.net

    Ψάχναμε να βρούμε μία λύση και τώρα έχουμε δύο. Μία αυτό που βρήκες και μία ακόμα που ψάχτηκα να βρω γιατί το αριστερό margin δεν πάει πιο αριστερά.

    Ο σωστός κώδικας είναι

    1
    2
    3
     
            PrintDocument1.DefaultPageSettings.Margins.Left = 0
            PrintDocument1.OriginAtMargins = True
            PrintDocument1.Print()

    Δηλαδή πρώτα λες ότι το αριστερό θέλω να είναι μηδέν, μετά ενεργοποιείς το property έστει ώστε το PrintDocument να πάρει σαν margin αυτό που του δηλώνεις. Αν το κάνουμε ανάποδα, όπως το έκανα, τότε φορτώνει το PrintDocument με το property σε τιμή True οπότε πέρνει το default margin που είναι 100 και ότι margin του δώσεις από εκεί και μετά το προσθέτει στο 100. Για αυτό και δεν πήγαινε πιο αριστερά η εκτύπωση αλλά μόνο πιο δεξιά.

     

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems