Drukowanie a dpi drukarki

0

Witam, mam problem z drukowaniem. Stworzyłem prosty raport, który chce drukować bezpośrednio na drukarce. Wszystko grało do momentu pojawienia się nowej drukarki - gdzie wydruk nie mieści się na kartce - jest dwa razy większy. Mam klasę implementującą interfejs Printeable. W niej metoda print:

@Override
public int print(Graphics g, PageFormat pf, int pi) throws PrinterException {
[...]
Graphics2D g2d = (Graphics2D)g;

    g2d.translate((int) pf.getImageableX(), (int) pf.getImageableY());
    width = (int) pf.getImageableWidth();
    height = (int) pf.getImageableHeight();
    g2d.setClip(0, 0, width, height);

[...]


W przypadku testowania drukarki na PDFPrinterze też widać różnicę w wydruku dla 300dpi i 600dpi. Gdy dla 600dpi jest ok - to 300dpi wydruk jest dwa razy większy i także nie mieści sie na kartce. Sprawę skalowania załatwi g2d.scale( xfactor, yfactor) - ale jak obliczyć właśnie factor - jak znaleźć dpi dla obecnego PrintJob?. Czy miał ktoś podobne problemy jeśli chodzi o drukowanie?

Pozdrawiam...
0

w tych wątkach masz mniej więcej opisane jak się drukuje aby nie być uzależnionym od DPI drukarki (przy tym sposobie możesz też bardzo prosto zrobić np. podgląd)
http://4programmers.net/Forum/C_i_C++/99331-BCB_-_wyskalowanie_podgladu_wydruku
Ile Pixeli to Milimetr?
wprawdzie nie java ale ideę powinieneś uchwycić

0

Pokaż, jak tworzysz PageFormat.

0

ogólnie tak:
[code]
job = PrinterJob.getPrinterJob();
job.setJobName("Wydruk ...");
job.setCopies(1);
job.setPrintable(this);
if (job.printDialog()) {
try {
job.print();
} catch (PrinterException e) {
[...]
}
}
[/code]
rozumiem, że w ten sposób wszystkie właściwości wydruku są ustawiane przez użytkownika w oknie dialogowym wydruku?

1 użytkowników online, w tym zalogowanych: 0, gości: 1