Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > imprimir varias hojas en java

es para Imprimir, necesito que cuando llegue a la parte de abajo siga escribiendo el la siguiente pagina, quien escribe de esa forma es el book. por ahora le envio this.. y me imprime todo lo que hay en la ventana, por eso cuando se corre coloca en las dos paginas lo mismo... habría que dejarlo mas genérico osea que cuando llegue a abajo la ultima linea que se dibuja en el graphics si no cabe en esa pagina se
escriba o siga escribiendo en la siguiente pagina... PARA REALIZAR LAS PRUEBAS: se elige .pdf en la seleccion normalemente de impresora y hay sale el documento en .pdf como si se hubiera impreso, (si ya creo uno debe cerrarlo parapoderlo reemplazar si se hace otra prueba).....

package interfaz;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.PrintJob;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.font.FontRenderContext;
import java.awt.font.LineBreakMeasurer;
import java.awt.font.TextLayout;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.text.AttributedCharacterIterator;
import java.text.AttributedString;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.swing.*;


public class PruebaImpresion extends JFrame implements Printable{

private int m_width;
//son para capturar y enviar los textos a el Graphics 2d del metodo print(Graphics,PageFormat,IndicePagina).
private String textoMacro,textoMicro,textoDiagnostico;
private AttributedCharacterIterator iteratorMacro,iteratorMicro,iteratorDiag;
private int start_macro,startmicro,startDiag;
private int endMacro,endMicro,endDiag;

//esta variable es la que se va comparando para acomodar la posición de y
static int inc = 120;

static int margenDerecho=20;

public PruebaImpresion() {
setSize(600,600);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
float tamanioPapelAlto;
float tamanioPapelAncho;
//este es el que imprime todo basicamente es quien da la orden de inprimir
PrinterJob printerJob;
//da formato a las paginas
PageFormat pf;
//libro que hace varias paginas
Book book;
//permiter definir los parametros para el papel
Paper paper;

/**
*Metodo para imprimir
*/
public void imprime(){
printerJob = PrinterJob.getPrinterJob();
pf=printerJob.pageDialog(printerJob.defaultPage());
book= new Book();
/// acase coloca el book o lo que va a colocar en el documento
for (int i = 0; i < 2; i++) {
book.append(this, pf);
}
//aca se inicializa el tamaño del papel
paper= new Paper();
paper.setSize(612.0, 832.0);
double margin=margenDerecho;
paper.setImageableArea(margin, margin, paper.getWidth()-margin, paper.getHeight()-margin);
tamanioPapelAlto= (float)paper.getHeight();
tamanioPapelAncho=(float) paper.getWidth();

System.out.println("tamaño papel alto: "+tamanioPapelAlto +" tamaño papel ancho: "+tamanioPapelAncho);

pf.setPaper(paper);
pf.setOrientation(PageFormat.PORTRAIT);
printerJob.setPageable(book);
printerJob.setJobName(capturarQX());
printerJob.printDialog();
//el metodo que imprime finalmente
try {
printerJob.print();
System.out.println("imprimio");
} catch (PrinterException e) {
e.printStackTrace();
}
}
int cont=0;

/**
*Metodo que dibuja lo que se coloca en las hojas de la impresion
*/

public int print(Graphics g, PageFormat pageFormat, int pageIndex) throws PrinterException {
if (pageIndex > 1){
return NO_SUCH_PAGE;
}
g.setFont(new Font("Arial", Font.BOLD, 10));
g.drawLine(20, 100, 550, 100);
inc=115;
g.drawString("REPORTE DE ANATOMÍA PATOLÓGICA", 200,120);
g.setFont(new Font("Arial", Font.PLAIN, 8));
g.drawString("CD 030 v1:", 500, inc+=20);
g.setFont(new Font("Arial", Font.BOLD, 10));
g.drawString("QX: ", 20, inc+=60);
g.setFont(new Font("Arial", Font.PLAIN, 10));
g.drawString(capturarQX(), 50, inc);
g.setFont(new Font("Arial", Font.BOLD, 10));
g.drawString("FECHA: ", 20, inc+=15);
g.setFont(new Font("Arial", Font.PLAIN, 10));
g.drawString(capturarFecha(), 70, inc);
g.setFont(new Font("Arial", Font.BOLD, 10));
g.drawString("NOMBRE: ", 20, inc+=15);
g.setFont(new Font("Arial", Font.PLAIN, 10));
g.drawString(capturarNombre(), 75, inc);
g.setFont(new Font("Arial", Font.BOLD, 10));
g.drawString("EDAD: ", 20, inc+=15);
g.setFont(new Font("Arial", Font.PLAIN, 10));
g.drawString(capturarEdad(), 70, inc);
g.setFont(new Font("Arial", Font.BOLD, 10));
g.drawString("DX CLINICO: ", 20, inc+=15);
g.setFont(new Font("Arial", Font.PLAIN, 10));
g.drawString(capturarDxClinico(), 100, inc);
g.setFont(new Font("Arial", Font.BOLD, 10));
g.drawString("ENTIDAD: ", 20, inc+=15);
g.setFont(new Font("Arial", Font.PLAIN, 10));
g.drawString(capturarEntidad(), 75, inc);
g.setFont(new Font("Arial", Font.BOLD, 10));
g.drawString("CENTRO: ", 280, inc);
g.setFont(new Font("Arial", Font.PLAIN, 10));
g.drawString(capturarCentro(), 330, inc);
g.setFont(new Font("Arial", Font.BOLD, 10));
g.drawString("DOCUMENTO: ", 20, inc+=15);
g.setFont(new Font("Arial", Font.PLAIN, 10));
g.drawString(capturarDocumento(), 100, inc);
g.setFont(new Font("Arial", Font.BOLD, 10));
g.drawString("ESPECIMEN ENVIADO: ", 20, inc+=15);
g.setFont(new Font("Arial", Font.PLAIN, 10));
g.drawString(capturaEspecimen(), 145, inc);
g.setFont(new Font("Arial", Font.BOLD, 10));
g.drawString("EXAMENES PREVIOS: ", 20, inc+=15);
g.setFont(new Font("Arial", Font.PLAIN, 10));
g.drawString(capturarExamenesPre(), 145, inc);
g.setFont(new Font("Arial", Font.BOLD, 10));
g.drawString("MEDICO TRATANTE: ", 20, inc+=15);
g.setFont(new Font("Arial", Font.PLAIN, 10));
g.drawString(capturarMedicoTra(), 140, inc);
g.setFont(new Font("Arial", Font.BOLD, 10));
g.drawLine(20, inc+=30, 550, inc);

//////////--- DESCRIPCION MACROSCOPICA
g.setFont(new Font("Arial", Font.BOLD, 10));
g.drawString("DESCRIPCION MACROSCOPICA: ", 20, inc+=30);
g.setFont(new Font("Arial", Font.PLAIN, 10));
Graphics2D g2 = (Graphics2D) g;
FontRenderContext frc = g2.getFontRenderContext();

LineBreakMeasurer measurer = new LineBreakMeasurer(iteratorMacro, frc);
measurer.setPosition(start_macro);
float x = margenDerecho, y = (inc);
while (measurer.getPosition() < endMacro){
TextLayout layout = measurer.nextLayout(m_width);
y += layout.getAscent();
float dx = layout.isLeftToRight() ? 0 : m_width - layout.getAdvance();
layout.draw(g2, x + dx, y);
y += layout.getDescent() + layout.getLeading();
}

////////----- DESCRIPCION MICROSCOPICA
g.setFont(new Font("Arial", Font.BOLD, 10));
g.drawString("DESCRIPCION MICROSCOPICA: ", 20, (int) y+30);
g.setFont(new Font("Arial", Font.PLAIN, 10));

Graphics2D g3 = (Graphics2D) g;
// g3.translate(pageFormat.getImageableX()-20, pageFormat.getImageableY());
FontRenderContext frc2 = g3.getFontRenderContext();
LineBreakMeasurer measurer2 = new LineBreakMeasurer(iteratorMicro, frc2);
measurer2.setPosition(startmicro);
while (measurer2.getPosition() < endMicro){
TextLayout layout = measurer2.nextLayout(m_width);
y += layout.getAscent();
float dx = layout.isLeftToRight() ? 0 : m_width - layout.getAdvance();
layout.draw(g3, x + dx, y+30);
y += layout.getDescent() + layout.getLeading();
}

////////----- DIAGNOSTICO
inc=(int)y;
g.setFont(new Font("Arial", Font.BOLD, 10));
g.drawString("DIAGNOSTICO: ", 20, inc+=60);
y=y+20;
Graphics2D g4 = (Graphics2D) g;
// g4.translate(pageFormat.getImageableX()-40, pageFormat.getImageableY());
FontRenderContext frc3 = g4.getFontRenderContext();
LineBreakMeasurer measurer3 = new LineBreakMeasurer(iteratorDiag, frc3);
measurer3.setPosition(startDiag);
while (measurer3.getPosition() < endDiag){
TextLayout layout = measurer3.nextLayout(m_width);
y += layout.getAscent();
float dx = layout.isLeftToRight() ? 0 : m_width - layout.getAdvance();
layout.draw(g4, x + dx, y+40);
y += layout.getDescent() + layout.getLeading();
if(y>=inc+100){
//book.setPage(pageIndex, this, pageFormat);
book.append(this, pageFormat, pageIndex);
y= (float) paper.getWidth()- tamanioPapelAlto;
System.out.println("y:"+y+ " /----- pageIndex: "+pageIndex+" /----- pf.getHeigth: "+pf.getHeight());
//g4.translate(x+dx, y+40);
layout.draw(g4, x + dx, y+40);
pageIndex++;
}
}
System.out.println(inc+ " posicion del texto en y: "+y);
printAll(g);
return PAGE_EXISTS;
}
public String capturarMacro(){
return "Se recibe útero desprovisto de anexos que pesa 100 gramos y mide 8 x 7 x 5 cm, " +
"la superficie externa es lisa"+
"brillante, el cérvix mide 3,5 x 2,5 cm, desprovisto de reborde vaginal, la mucosa exocervical es brillante, el canal"+
"endocervical es permeable. Al corte por el eje mayor la cavidad endometrial es esplazada, a los cortes seriados el"+
"endometrio alcanza un espesor de hasta 0,2 cm y el miometrio de 2 cm. Con múltiples miomas blanco"+
"arremolinados que miden entre 0,7 y 1,5 cm. Sin cambios degenerativos. Se procesan cortes representativos así:"+
"A- Cérvix 1 bloque B- Endomiometrio y miomas 1 bloque.";
}
public String capturarMicro(){
return "Los cortes muestran en A-, cervix con metaplasia escamosa madura endocervical y quistes de Naboth. En B-, se"
+"observa un endometrio de patron secretor y miometrio con multiples focos de adenomiosis junto a neoplasia"+
"mesenquimal benigna formada por haces de musculo liso sin atipia ni mitosis.";
}
public String capturarDiagnostico(){
return " UTERO SIN ANEXOS: - CERVIX: METAPLASIA ESCAMOSA MADURA ENDOCERVICAL. " +
"QUISTES DE NABOTH.- ENDOMETRIO: PATRON SECRETOR. " +
"MIOMETRIO: LEIOMIOMAS INTRAMURALES Y ADENOMIOSIS C.J/A. " +
"-------------------------- -------- ------------------------ -------------------" +
"-----------------------------------------------------------------------------" +
"-----------------------------------------------------------------------------" +
"----------------------------------------- ------------------------ " +
"------------------------------------------------------------------------" +
"--------------- - ----------------------------- ----------------------------" +
"--------------- ------------------------------------------ -------------------" +
"--------------------------------------------------- --------------------------" +
"---------------------------------- ----------------------------------------- ---" +
"------------------------------------------ ---------------------------" +
"------------------------------ --------------------------------- ---------------" +
"--------------------------- ---------------------- ---------------------" +
"------------------------------------ -------------------------------------------" +
"---------------- -------------------------- ----------------------------------" +
"---------------- ----------------------- --------------------------- --------- " +
"-------------------------------------- ---------------------- -------------- a";
}
public String capturarQX(){
return "12345";
}
public String capturarFecha(){
return "20/10/***";
}
public String capturarNombre(){
return "EDSSON DARIO PABON BUSTOS";
}
public String capturarDocumento(){
return "10570*****";
}
public String capturarEdad(){
return "24";
}
public String capturarDxClinico(){
return "dx clinico....";
}
public String capturarEntidad(){
return "NOMBRE DE LA ENTIDAD PACIENTE";
}
public String capturarCentro(){
return "NOMBRE DEL CENTRO PACIENTE";
}
public String capturaEspecimen(){
return "RESECCION";
}
public String capturarExamenesPre(){
return "QX ANTIGUOS";
}
public String capturarMedicoTra(){
return "DR. SALUDCOOP";
}
public void llenarDecripcion(){
textoMacro=capturarMacro();
textoMicro=capturarMicro();
textoDiagnostico=capturarDiagnostico();
m_width = 530;
for (int i = 0; i<3; i++) {
String aux="";
if(i==0){
aux=textoMacro;
AttributedString styledText = new AttributedString(aux);
iteratorMacro = styledText.getIterator();
start_macro = iteratorMacro.getBeginIndex();
endMacro = iteratorMacro.getEndIndex();
}
if(i==1){
aux=textoMicro;
AttributedString styledText2 = new AttributedString(aux);
iteratorMicro = styledText2.getIterator();
startmicro = iteratorMicro.getBeginIndex();
endMicro = iteratorMicro.getEndIndex();
}
if(i==2){
aux=textoDiagnostico;
AttributedString styledText3= new AttributedString(aux);
iteratorDiag = styledText3.getIterator();
startDiag = iteratorDiag.getBeginIndex();
endDiag = iteratorDiag.getEndIndex();
}
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
PruebaImpresion p= new PruebaImpresion();
p.llenarDecripcion();
p.imprime();
}
});
}
}

enero 15, 2013 | Unregistered CommenterEdarpab