Aqui está:
public class JRSOC {
public JRSOC() {
initComponents();
initComponentes();
}
private void initComponentes() {
// omitido - apenas ajusta apresentação de alguns componentes
}
public boolean Imprimir(String serie, int numero, int qtd, String solicitante, String retirou) {
boolean retorno = false;
// Converte mm em pntos considerando 72 pontos por polegada
final double cm = 2.834646D;
final double w = 210.0 * cm;
final double h = 297.0 * cm;
PrinterJob trabImpressao = PrinterJob.getPrinterJob();
Book livro = new Book();
PageFormat pagFormato = new PageFormat();
Paper papel = new Paper();
papel.setSize(w, h);
papel.setImageableArea(18.0, 20.0, w, h);
pagFormato.setOrientation(PageFormat.PORTRAIT);
pagFormato.setPaper(papel);
numero++;
DecimalFormat df = new DecimalFormat("00000");
mudaNumero(serie, numero, solicitante, retirou);
trabImpressao.setJobName(" RSO(" + lblNumeroFrente.getText() + " até "
+ serie + " " + df.format((numero + qtd) - 1));
if (trabImpressao.printDialog() == true) {
try {
for (int i = 0; i < qtd; i++) {
livro.append(new multPrint(serie, numero + i, 'F', qtd, solicitante, retirou), pagFormato);
livro.append(new multPrint(serie, numero + i, 'V', qtd, solicitante, retirou), pagFormato);
trabImpressao.setPageable(livro);
retorno = true;
//trabImpressao.print();
}
trabImpressao.print();
} catch (PrinterException ex) {
return false;
}
}
return retorno;
}
private class multPrint implements Printable {
String serie;
int numero;
char lado;
int qtd;
String solicitante;
String retirou;
public multPrint(String serie, int numero, char lado, int qtd, String solicitante, String retirou) {
this.serie = serie;
this.numero = numero;
this.lado = lado;
this.qtd = qtd;
this.solicitante = solicitante;
this.retirou = retirou;
}
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
if (pageIndex > (qtd * 2)) {
return Printable.NO_SUCH_PAGE;
}
Graphics2D g2 = (Graphics2D) graphics;
g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
switch (lado) {
case 'F':
mudaNumero(serie, numero, solicitante, retirou);
pnlFrente.paint(g2);
break;
case 'V':
mudaNumero(serie, numero, solicitante, retirou);
pnlVerso.paint(g2);
break;
}
return Printable.PAGE_EXISTS;
}
}
private void mudaNumero(String serie, int numero, String solicitante, String retirou) {
DecimalFormat df = new DecimalFormat("00000");
CodBarras barras = new CodBarras();
lblNumeroFrente.setText(serie + " " + df.format(numero));
lblNumeroVerso.setText(serie + " " + df.format(numero));
lblCodBarras.setIcon(barras.ImgIconCodBarras(serie + df.format(numero)));
lblNovidades17.setText(" RSO solicitado por " + solicitante
+ " e enviado via " + retirou);
}
private void initComponents() {
// omitido - apenas ajusta apresentação de alguns compenentes
}
// Declaração das variáveis
...
// Fim da declaração
}
A classe toda é muito grande mas a parte omitida é apenas ajuste de componentes