tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
433
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    hansmueller hansmueller ist offline Mitglied Silber
    Registriert seit
    Sep 2008
    Beiträge
    78
    Hallo,

    ich habe eine Druckfunktion mit einem Druckdialog print.Dialog() erstellt.
    Das funktioniert alles super.

    Aber, wenn der Anwender auf die Idee kommt im Druckdialog die Seitenränder zu ändern, funktioniert das manchmal nicht korrekt.

    Probleme macht der obere Seitenrand.

    Beispiel 1:
    Der Anwender ändert nur jeweils einen Seitenrand.

    Ergebnis:
    Oben -> funktioniert nicht
    Links -> funktioniert
    Unten -> funktioniert
    Rechts -> funktioniert

    Beispiel 2:
    Der Anwender ändert den oberen und einen beliebigen Seitenrand.

    Ergebnis:
    Oben und Links -> funktioniert nicht, nur der linke Rand wird verschoben
    Oben und Unten -> funktioniert
    Oben und Rechts -> funktioniert

    Ist das ein Fehler von Java?
    Wie kann ich diesen Fehler umgehen bzw. abfangen?

    Ich habe zum schnellen Ausprobieren ein kleines Testprogramm geschrieben.
    (Die Druckausgabe einfach in einen PDF-Maker umleiten und anschauen).

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.SystemColor;
    import java.awt.print.PageFormat;
    import java.awt.print.Printable;
    import java.awt.print.PrinterException;
    import java.awt.print.PrinterJob;
    import javax.print.attribute.HashPrintRequestAttributeSet;
    import javax.print.attribute.PrintRequestAttributeSet;
    import javax.print.attribute.standard.Chromaticity;
    import javax.print.attribute.standard.MediaPrintableArea;
    import javax.print.attribute.standard.MediaSizeName;
    import javax.print.attribute.standard.OrientationRequested;
    import javax.print.attribute.standard.PrintQuality;
     
     
    public class MainProg implements Printable
    {
        PrinterJob Druckjob;
        PrintRequestAttributeSet aset;
        
        public static void main(String[] args)
        {       
            MainProg x = new MainProg();
            x.Drucken();
        }
     
        public void Drucken()
        {                       
            Druckjob = PrinterJob.getPrinterJob();
            aset = new HashPrintRequestAttributeSet();
            
            Druckjob.setPrintable(this);
         
        aset.add(MediaSizeName.ISO_A4);
        aset.add(new MediaPrintableArea(20, 20, 170, 257, MediaPrintableArea.MM));
        aset.add(OrientationRequested.PORTRAIT);
        aset.add(PrintQuality.NORMAL);
        aset.add(Chromaticity.MONOCHROME);
                        
            boolean ok = Druckjob.printDialog(aset);
            if(ok)
            {
                try
                {                   
                    Druckjob.print(aset);                   
                }
                catch(Exception ex)
                {
                    ex.printStackTrace();
                }
            }
        }
     
        public int print(Graphics g, PageFormat pageFormat, int pageIndex)
                throws PrinterException
        {
            System.out.println(pageIndex);
            System.out.println("Im print.");
            if(pageIndex > 0)
            {
                System.out.println("Mehr als 1 Seiten");
                return this.NO_SUCH_PAGE;
            }
            System.out.println("Drucke");
            Font font = new Font("Times", Font.PLAIN, 20);
                    
            Graphics2D g2d = (Graphics2D)g;
                    g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
            g2d.setFont(font);
            g2d.setColor(SystemColor.yellow);
            g2d.fillRect(0, 0, (int)pageFormat.getWidth(), (int)pageFormat.getHeight());
            g2d.setPaintMode();
            g2d.setColor(SystemColor.black);
            g2d.drawString("TEST", 50, 50);
            
            return this.PAGE_EXISTS;
        }
    }

    MfG
    hansmueller
     

  2. #2
    hansmueller hansmueller ist offline Mitglied Silber
    Registriert seit
    Sep 2008
    Beiträge
    78
    Das Problem besteht immer noch.
    Hat irgend jemand dazu eine Idee oder Meinung?

    MfG
    hansmueller
     

  3. #3
    hansmueller hansmueller ist offline Mitglied Silber
    Registriert seit
    Sep 2008
    Beiträge
    78
    Hat wirklich niemand dazu eine Idee oder Meinung?

    MfG
    hansmueller
     

  4. #4
    hansmueller hansmueller ist offline Mitglied Silber
    Registriert seit
    Sep 2008
    Beiträge
    78
    Laßt mich bitte an eurer Unwissenheit teilhaben.

    MfG
    hansmueller
     

Ähnliche Themen

  1. Freehand: Seitenrand beim Ausdrucken
    Von konsumi im Forum Vektor-Programme
    Antworten: 1
    Letzter Beitrag: 27.08.05, 18:54
  2. Antworten: 26
    Letzter Beitrag: 22.05.05, 19:25
  3. Antworten: 4
    Letzter Beitrag: 15.01.05, 18:38
  4. Antworten: 1
    Letzter Beitrag: 07.11.04, 17:35
  5. Antworten: 0
    Letzter Beitrag: 07.08.03, 08:20

Stichworte