java PrinterJob nicht drucken auf Papier passen
ich stecke derzeit beim drucken einer jpeg-Datei mit den default-Drucker. In meinem Programm, wenn ich wählen Sie ein Bild aus einem Ordner, die ich brauche, um es zu drucken mit dem Drucker default Einstellungen (Papierformat, Ränder, Ausrichtung).
Derzeit habe ich diese:
PrintService printService = PrintServiceLookup.lookupDefaultPrintService();
final BufferedImage image = ImageIO.read(new File("car.jpg"));
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setPrintService(printService);
printJob.setPrintable(new Printable(){
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException{
if (pageIndex == 0) {
graphics.drawImage(image, 0, 0, (int)pageFormat.getWidth(), (int)pageFormat.getHeight(), null);
return PAGE_EXISTS;
else return NO_SUCH_PAGE;
}
}
printJob.print();
Die Standard-Einstellungen für meinen Drucker jetzt für Größe: 10 x 15 cm (4 x 6 in)
aber wenn ich mein Programm auf drucken, um das Bild, es zeigt nur einen kleinen Abschnitt des Papiers.
Bitte helfen Sie mir.
BEARBEITEN
danke an alle für Ihre Hilfe, ich konnte die Antwort zu finden, geschrieben von einem anderen Benutzer auf Randloser Druck
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stellen Sie sicher, dass Sie sind, Erstens, die übersetzung der
Graphics
Kontext zu passen in Inder imagable Bereich...Nächste, stellen Sie sicher, dass Sie die
imageableWidth
undimageableHeight
desPageFormat
und nicht die
width
/height
Eigenschaften. Viele dieser Dinge übersetzt aus verschiedenen Kontexten...Den
getImageableWidth/Height
gibt die Seite Größe im Rahmen der Seite OrientierungDrucken ziemlich viel, meint eine dpi von 72 (kein stress, der Druck-API verarbeiten kann viel höhere Auflösungen, aber die Kern-API übernimmt 72dpi)
Dies bedeutet, dass eine Seite von 10x15cm übersetzen sollten, um
283.46456664x425.19684996
Pixel. Sie können diese Informationen überprüfen, indem Sie mit einemSystem.out.println
- und Abladen der ErgebnissegetImageableWidth/Height
auf der Konsole.Wenn Sie mit verschiedenen Einstellungen, ist es möglich, dass Java hat, überschreiben die Standard-Eigenschaften der Seite
Zum Beispiel...
Haben Sie zwei Möglichkeiten...
Sie könnte...
Zeigen die
PrintDialog
und sicherzustellen, dass die richtigen Einstellungen ausgewählt sindOder Sie könnten...
Nur manuelles festlegen der Papier/Seite Werte manuell...
PageFormat
width, height, pageFormat.getImageableX/Y
aber das würde nur bewegen Sie das Bild unter dem weißen Raum. Ist das ein fester Speicherplatz, der wird immer da sein, oder gibt es eine Möglichkeit, kleiner?fill
(-Befehl) Aussehen? Ich bin neu in Java und begierig, zu lernen!Es sieht aus wie Sie sind, drucken Sie das Bild mit Abmessungen auf der Grundlage der PageFormat, anstatt das eigentliche Bild mit den Abmessungen, Ihre Methode drawImage () - Methode sollte in etwa so Aussehen