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!