Visualizzazione dei risultati da 1 a 10 su 15

Hybrid View

  1. #1
    allora, per le dimensioni al momento hi fatto questo:
    codice:
    public class PrintImage implements Printable {
    
        private double x;
        private double y;
        private double width;
        private int orientation;
        private BufferedImage image;
    
        public PrintImage(PrinterJob printJob, BufferedImage image) {
            PageFormat pageFormat = printJob.defaultPage();
            this.x = pageFormat.getImageableX();
            this.y = pageFormat.getImageableY();
            this.width = pageFormat.getImageableWidth();
            this.orientation = pageFormat.getOrientation();
            this.image = image;
        }
    
        @Override
    public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
            if (pageIndex == 0) {
                int pWidth = 0;
                int pHeight = 0;
                if (orientation == PageFormat.PORTRAIT) {
                    pWidth = (int) Math.min(width, (double) image.getWidth());
                    pHeight = pWidth * image.getHeight() / image.getWidth();
                } else {
                    pHeight = (int) Math.min(width, (double) image.getHeight());
                    pWidth = pHeight * image.getWidth() / image.getHeight();
                }
                graphics.drawImage(image, (int) x, (int) y, pWidth, pHeight, null);
                return PAGE_EXISTS;
            } else {
                return NO_SUCH_PAGE;
            }
        }
    }
    ho fatto qualche test, e non ho avuto problemi.
    ma sempre con una sola immagine.

    per quanto riguarda la seconda domanda, una immagine a pagina.
    non ho necessità di stampare varie immagini su una pagina!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da fermat Visualizza il messaggio
    ma sempre con una sola immagine.
    È il tuo PrintImage che deve ricevere e tenersi innanzitutto la lista di immagini.

    Quote Originariamente inviata da fermat Visualizza il messaggio
    per quanto riguarda la seconda domanda, una immagine a pagina.
    non ho necessità di stampare varie immagini su una pagina!
    Benissimo, allora N immagini --> N pagine.

    Tieni presente che il sistema di printing può invocare il print del Printable in modo molto "arbitrario" (c'è tutta la spiegazione nel javadoc di Printable). Quindi la implementazione del Printable deve stare più "passiva" possibile. Ti viene chiesta la pagina x: l'indice x è valido nella lista di immagini? Sì, ok stampi. No, la pagina non esiste.

    Infine:
    Non ho ovviamente provato il tuo codice ma "ad occhio":

    pWidth = (int) Math.min(width, (double) image.getWidth());

    non mi pare corretto (idem l'altro). Il primo width è nell'unità (di default) di 1/72 inch mentre image.getWidth() è in "pixel". Stai facendo un min tra patate e carote ....

    Inoltre non è correttissimo che prendi il PageFormat (nel costruttore) PRIMA del printDialog(). Perché nella dialog l'utente può cambiare il formato pagina.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.