si lo stavo guardando:
codice:
private void printImage(Graphics2D g2d, PageFormat pageFormat, BufferedImage image) {
    int imageWidth = image.getWidth();
    int imageHeight = image.getHeight();
    double areaX = pageFormat.getImageableX();
    double areaY = pageFormat.getImageableY();
    double areaWidth = pageFormat.getImageableWidth();
    double areaHeight = pageFormat.getImageableHeight();
    g2d.translate(areaX, areaY);

    // Verifica se gli orientamenti di area e immagine non coincidono
if (areaWidth > areaHeight ^ imageWidth > imageHeight) {
        g2d.translate(areaWidth, 0);
        g2d.rotate(Math.PI / 2);   // ruota di +90 gradi

        // inverte le lunghezze
areaHeight = pageFormat.getImageableWidth();
        areaWidth = pageFormat.getImageableHeight();
    }

    double scale = Math.min(areaWidth / imageWidth, areaHeight / imageHeight);

    g2d.scale(scale, scale);
    g2d.drawImage(image, 0, 0, null);
}

però io non vorrei ruotare la pagina.
vorrei farla sempre rientrare nelle dimensioni anche se larghezza > altezza.
non so me mi sono spiegato bene!