Hallo,
ich habe ein PrintRequestAttributeSet() und möchte daraus ein PageFormat haben.
Wenn ich die Api richtig verstehe geht das mit PrinterJob.getPageFormat(PrintRequestAttributeSet).
Aber diese Methode liefert mir anscheinend immer nur ein Standard-PageFormat.
Die Angaben bzgl. des Druckbereichs werden immer ignoriert.
Hier ein kleines Beispielprogramm:
Weiß jemand von euch, wie ich an das richtige PageFormat-Objekt komme?
Kann es sein, daß das MediaPrintableArea aus irgend einem Grund nicht berücksichtigt wird?
Ursprünglich habe ich zuerst mit der Kombination PrinterJob.pageDialog(PageFormat page) und PrinterJob.printDialog() gearbeitet. Den kombinierten Dialog von PrinterJob.printDialog(PrintRequestAttributeSet attributes) finde ich allerdings eleganter und daher wollte ich meine ursprüngliche Druckmethode umstellen. Deshalb sieht das Beispielprogramm vielleicht etwas merkwürdig aus.
MfG
hansmueller
ich habe ein PrintRequestAttributeSet() und möchte daraus ein PageFormat haben.
Wenn ich die Api richtig verstehe geht das mit PrinterJob.getPageFormat(PrintRequestAttributeSet).
Aber diese Methode liefert mir anscheinend immer nur ein Standard-PageFormat.
Die Angaben bzgl. des Druckbereichs werden immer ignoriert.
Hier ein kleines Beispielprogramm:
Java:
import java.awt.Graphics;
import java.awt.print.Book;
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.MediaPrintableArea;
import javax.print.attribute.standard.MediaSizeName;
import javax.print.attribute.standard.OrientationRequested;
public class MainProg
{
PrinterJob Druckjob;
PrintRequestAttributeSet aset;
PageFormat Seitenformat;
Book buch = null;
public static void main(String[] args)
{
MainProg x = new MainProg();
}
public MainProg()
{
Druckjob = PrinterJob.getPrinterJob();
aset = new HashPrintRequestAttributeSet();
aset.add(MediaSizeName.ISO_A4);
// aset.add(new MediaPrintableArea(20, 20, 170, 257, MediaPrintableArea.MM));
aset.add(new MediaPrintableArea(10, 15, 190, 272, MediaPrintableArea.MM));
//aset.add(new MediaPrintableArea(25, 15, 175, 272, MediaPrintableArea.MM));
aset.add(OrientationRequested.PORTRAIT);
// aset.add(PrintQuality.NORMAL);
// aset.add(Chromaticity.MONOCHROME);
//Seitenformat = Druckjob.getPageFormat(aset);//Funktioniert so nicht???
boolean ok = Druckjob.printDialog(aset);
Seitenformat = Druckjob.getPageFormat(aset);//Funktioniert so nicht???
buch = new Book();
buch.append(new IrgendwaszumDrucken(), Seitenformat);
Druckjob.setPageable(buch);
MediaPrintableArea mpa = (MediaPrintableArea)aset.get(MediaPrintableArea.class);
System.out.println(mpa);
System.out.println(Seitenformat.getImageableX());
System.out.println(Seitenformat.getImageableY());
System.out.println(Seitenformat.getImageableWidth());
System.out.println(Seitenformat.getImageableHeight());
/*if (ok)
{
try
{
Druckjob.print(aset);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}*/
}
class IrgendwaszumDrucken implements Printable
{
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException
{
return 0;
}
}
}
Weiß jemand von euch, wie ich an das richtige PageFormat-Objekt komme?
Kann es sein, daß das MediaPrintableArea aus irgend einem Grund nicht berücksichtigt wird?
Ursprünglich habe ich zuerst mit der Kombination PrinterJob.pageDialog(PageFormat page) und PrinterJob.printDialog() gearbeitet. Den kombinierten Dialog von PrinterJob.printDialog(PrintRequestAttributeSet attributes) finde ich allerdings eleganter und daher wollte ich meine ursprüngliche Druckmethode umstellen. Deshalb sieht das Beispielprogramm vielleicht etwas merkwürdig aus.
MfG
hansmueller