Impressão de imagens

1 resposta
T

Galera é o seguinte: eu quero imprimir pelo programa imagens jpeg. Estas imagens são provenientes de folhas escaneadas. a classe que estou utilizando é éssa:

public class PrintUtilities implements Printable {
   private Component componentToBePrinted;

   public static void printComponent(Component c) {
     new PrintUtilities(c).print();
   }

   public PrintUtilities(Component componentToBePrinted) {
     this.componentToBePrinted = componentToBePrinted;
     
  }

   public void print() {
    
     PrinterJob p = PrinterJob.getPrinterJob();

     PageFormat pg = p.defaultPage();
     Paper paper = new Paper();
     double margin = 5;
     paper.setImageableArea(margin, margin, paper.getWidth()-margin, paper.getHeight()-margin); 

     pg.setPaper(paper);

        Book b = new Book();
        b.append(this, new PageFormat());
        p.setPageable(b);
        boolean doprint = p.printDialog();
        if (doprint){
            try {
                p.print();
            } catch (PrinterException ex) {
               JOptionPane.showMessageDialog(null, "erro impressão");
            }
        }
   }

   public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
     if (pageIndex > 0) {
       return(NO_SUCH_PAGE);
     } else {
       Graphics2D g2d = (Graphics2D)g;
            
       g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());

       disableDoubleBuffering(componentToBePrinted);
       componentToBePrinted.paint(g2d);
       enableDoubleBuffering(componentToBePrinted);

       return(PAGE_EXISTS);
     }
   }

   public static void disableDoubleBuffering(Component c) {
     RepaintManager currentManager = RepaintManager.currentManager(c);
     currentManager.setDoubleBufferingEnabled(false);
   }

   public static void enableDoubleBuffering(Component c) {
     RepaintManager currentManager = RepaintManager.currentManager(c);
     currentManager.setDoubleBufferingEnabled(true);
   }
 }

Quando eu redimensiono a imagem para um tamanho pequeno eu consigo imprimir. Nos outros casos a impressora imprime um erro (indecifrável por sinal hehe).
Como eu faço para redimensionar a imagem para o tamanho de uma folha a4 e tirar as margens? Quando eu mando imprimir para um arquivo, o arquivo aparece certo como eu quero, mas aí quando mando para impressora não funciona. e se eu mandar pelo arquivo que foi gerado tbem não funciona.
Na caixa de dialogo que é gerada eu nao consigo mudar as margens. Por isso tentei pelo codigo forçar a mudança de margens.
É isso aí… se alguem souber ou tiver uma classe de impressão que imprima imagens certinho…
Vlw galera!

1 Resposta

T

aí galera achei um artigo que explica toda a api. Artigo muito bom. Tirou todas dúvidas que eu tinha e mais as que podiam surgir hehe… ta aí o link da primeira parte

http://www.javaworld.com/javaworld/jw-10-2000/jw-1020-print.html

vlw!

Criado 23 de setembro de 2010
Ultima resposta 24 de set. de 2010
Respostas 1
Participantes 1