2 Stimmen

Java. Drucken eines hochauflösenden Bildes ohne Skalierung

Ich habe eine Liste von java.awt.Image und jede von ihnen hat eine Auflösung von 300 DPI. Ich möchte sie drucken und wenn ich anfange, diese Bilder zu drucken (mit javax.PrintService API), wird nur ein Teil eines Teils des Bildes gedruckt, weil Javas Druck/3D-Klassen standardmäßig 72 DPI verwenden (im Vergleich zu den 300 DPI meiner Bilder). Aber wenn ich Bilder mit 72 DPI verwende (mit derselben Auflösung wie der Java-Standard), werden alle Bilder ordnungsgemäß gedruckt (wenn das gesamte Bild gedruckt wird, nicht nur ein Teil davon).

Frage: Wo kann ich die Druckauflösung meiner Bilder einstellen, um sie an den Druckbereich anzupassen?

Ich habe versucht, PrintRequestAttributeSet.add( new PrinterResolution(300, 300, ResolutionSyntax.DPI)) festzulegen, aber dies hatte keinen Effekt.

Derzeit skaliere ich meine Bilder, um sie an den Druckbereich anzupassen, aber nach dem Skalieren verliere ich an Qualität, sodass das gedruckte Dokument nicht lesbar ist.

7voto

Tomasz Punkte 385

Sie können drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer) verwenden.

Die Parameter dx1, dy1, dx2 und dy2 definieren die Grenzen, in die Ihr Bild passen muss. Sie müssen einige Berechnungen durchführen. Dies sollte das hochwertige Bild an diesen Koordinaten drucken (ohne es zu skalieren).

class MyPrintable implements Printable {
  public int print(Graphics g, PageFormat pf, int pageIndex) {
    if (pageIndex != 0) return NO_SUCH_PAGE;

    Graphics2D g2 = (Graphics2D) g;
    g2.printImage(....);
    return PAGE_EXISTS;
  }
}

Dann

PrinterJob pj = PrinterJob.getPrinterJob();
...
PageFormat pf = ...;
...
pj.setPrintable(new MyPrintable(), pf);

Sie müssen immer noch die Auflösung wie zuvor einstellen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X