Buenas escribo pidiendo ayuda en un codigo que lo que hace es tomar un html mostrarlo en un jedtorpane y al pulsar el boton imprimir lo imprima.
Bueno comento rapido el problema: el asunto es que al darle a imprimir en mi codigo el html no se cuadra dentro de la hoja y sale muy grande (PD: probe pensando que era el html que era muy grande pero por googlechrome e internet explorer se imprime perfecto de tamaño el problema es mi app subo el codigo a ver quien me puede ayudar).
ventana = this; ventana.setName("Prueba Html y TextPane1"); ventana.setSize(800, 600); ventana.setVisible(true); ventana.setResizable(false); ventana.setDefaultCloseOperation(EXIT_ON_CLOSE); ventana.setLocationRelativeTo(null);
ventana.setLayout(null);
ventana.add(boton); ventana.add(scroll); } //accion del boton public void botonAction(ActionEvent e) { System.out.println("Has pulsado el boton imprimir"); PrinterJob job = PrinterJob.getPrinterJob(); PageFormat formaPagina = new PageFormat(); formaPagina.setOrientation(PageFormat.PORTRAIT); //Establecemos la orientación de la página Paper papel = new Paper(); papel.setSize(612,792); //Tamaños oja carta 612pts x792pts formaPagina.setPaper(papel); //Establecemos el tamaño del papel para el trabajo job.setPrintable(this, formaPagina); try { job.print(); } catch (PrinterException ex) { ex.printStackTrace(); } }
@Override public int print(Graphics g, PageFormat pf, int page) throws PrinterException { if (page > 0) { return NO_SUCH_PAGE; } Graphics2D g2d = (Graphics2D) g; g2d.translate(pf.getImageableX(), pf.getImageableY()); System.out.println("alto: "+pf.getImageableX()+" ancho: "+pf.getImageableY()); // imprime el panel(Jeditorpane) panel.printAll(g); return PAGE_EXISTS; } }
Buenas escribo pidiendo ayuda en un codigo que lo que hace es tomar un html mostrarlo en un jedtorpane y al pulsar el boton imprimir lo imprima.
Bueno comento rapido el problema:
el asunto es que al darle a imprimir en mi codigo el html no se cuadra dentro de la hoja y sale muy grande (PD: probe pensando que era el html que era muy grande pero por googlechrome e internet explorer se imprime perfecto de tamaño el problema es mi app subo el codigo a ver quien me puede ayudar).
package pruebapanehtml1;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
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.net.URL;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
/**
*
* @author Venespana
*/
public class PruebaPaneHtml1 extends JFrame implements Printable {
//Componentes
private JEditorPane panel;
private JScrollPane scroll;
private JButton boton;;
JFrame ventana;
public static void main(String[] args) {
new PruebaPaneHtml1();
}
public PruebaPaneHtml1() {
initComp();
}
//cargo todos los componentes
private void initComp() {
panel = new JEditorPane();
scroll = new JScrollPane(panel);
scroll.setBounds(0, 50, 795, 525);
panel.setVisible(true);
panel.setEditable(false);
panel.setContentType("text/html");
//cargo el html
try {
URL url = new URL("file://localhost/G:\\Programacion\\Programas Java\\Programas\\Ines Tejada Diseños Exclusivos\\Data\\FacturaPagos.html");
panel.setPage(url);
} catch (Exception e) {
System.out.println(e);
}
boton = new JButton("boton");
boton.setVisible(true);
boton.setBounds(350, 10, 100, 35);
boton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
botonAction(e);
}
});
ventana = this;
ventana.setName("Prueba Html y TextPane1");
ventana.setSize(800, 600);
ventana.setVisible(true);
ventana.setResizable(false);
ventana.setDefaultCloseOperation(EXIT_ON_CLOSE);
ventana.setLocationRelativeTo(null);
ventana.setLayout(null);
ventana.add(boton);
ventana.add(scroll);
}
//accion del boton
public void botonAction(ActionEvent e) {
System.out.println("Has pulsado el boton imprimir");
PrinterJob job = PrinterJob.getPrinterJob();
PageFormat formaPagina = new PageFormat();
formaPagina.setOrientation(PageFormat.PORTRAIT); //Establecemos la orientación de la página
Paper papel = new Paper();
papel.setSize(612,792); //Tamaños oja carta 612pts x792pts
formaPagina.setPaper(papel); //Establecemos el tamaño del papel para el trabajo
job.setPrintable(this, formaPagina);
try {
job.print();
} catch (PrinterException ex) {
ex.printStackTrace();
}
}
@Override
public int print(Graphics g, PageFormat pf, int page) throws PrinterException {
if (page > 0) {
return NO_SUCH_PAGE;
}
Graphics2D g2d = (Graphics2D) g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
System.out.println("alto: "+pf.getImageableX()+" ancho: "+pf.getImageableY());
// imprime el panel(Jeditorpane)
panel.printAll(g);
return PAGE_EXISTS;
}
}
el html es el siguiente:
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
</head>
<table width="650" cellspacing="1" align="center">
<tr>
<th bgcolor="#FFFFFF" align="left" width="600" rowspan="2"></th>
<td align="center" width="200">
<table width="200" cellspacing="1" align="right" bgcolor="#75BDFF">
<tr>
<th bgcolor="#75BDFF" align="center" width="200">Factura N°:</th>
</tr>
<tr>
<td bgcolor="#75BDFF" align="center" width="200">1000002</td>
</tr>
</table>
</td>
</tr>
</table>
<p></p>
<table border="1" BORDERCOLOR="black" bgcolor="black" width="650" cellspacing="1" align="center">
<tr>
<th bgcolor="#75BDFF" align="center">Razon Social:</th>
<td bgcolor="#FFFFFF" align="center" colspan ="5">ujgfuyguy trtrt trtertet tret</td>
</tr>
<tr>
<th bgcolor="#75BDFF" align="center">Direccion:</th>
<td bgcolor="#FFFFFF" align="center" colspan ="5"></td>
</tr> <tr>
<th bgcolor="#75BDFF" align="center">Telefono:</th>
<td bgcolor="#FFFFFF" align="center" colspan ="5"></td>
</tr> <tr>
<th bgcolor="#75BDFF" align="center" width="150">Fecha:</th>
<td bgcolor="#FFFFFF" align="center" width="250" colspan="1">16/09/2013</td>
<th bgcolor="#75BDFF" align="center" width="100">C.I./R.I.F.:</th>
<td bgcolor="#FFFFFF" align="center" width="150" colspan="1">544</td>
</tr>
<tr>
<th bgcolor="#75BDFF" align="center" width="150">N° de Cheque(s)</th>
<td bgcolor="#FFFFFF" align="center" width="250" colspan="1"></td>
<td bgcolor="#FFFFFF" align="center" width="250" colspan="2"></td>
</tr>
<tr>
<th bgcolor="#75BDFF" align="center" width="150">Monto Cheque</th>
<td bgcolor="#FFFFFF" align="center" width="250" colspan="1"></td>
<td bgcolor="#FFFFFF" align="center" width="250" colspan="2"></td>
</tr>
<tr>
<th bgcolor="#75BDFF" align="center" width="150">Banco(s):</th>
<td bgcolor="#FFFFFF" align="center" width="250" colspan="1"></td>
<td bgcolor="#FFFFFF" align="center" width="250" colspan="2"></td>
</tr>
<tr>
<th bgcolor="#75BDFF" align="center" width="150">Efectivo:</th>
<td bgcolor="#FFFFFF" align="center" width="250" colspan="1"></td>
<td bgcolor="#FFFFFF" align="center" colspan="2"></td>
</tr>
</table>
<center> CONCEPTOS: </center>
<table border="1" BORDERCOLOR="black" bgcolor="black" width="650" cellspacing="1" align="center">
<tr>
<th bgcolor="#75BDFF" align="center" width="40">CANTIDAD</th>
<th bgcolor="#75BDFF" align="center" width="250">DESCRIPCION</th>
<th bgcolor="#75BDFF" align="center">UNITARIO</th>
<th bgcolor="#75BDFF" align="center">TOTAL</th>
</tr>
<tr height="100">
<td bgcolor="#FFFFFF" align="center">
</td>
<td bgcolor="#FFFFFF" align="center">
</td>
<td bgcolor="#FFFFFF" align="center">
</td>
<td bgcolor="#FFFFFF" align="center">
</td>
</tr>
<tr>
<th bgcolor="#75BDFF" align="center" colspan="2">SUBTOTAL</th>
<th bgcolor="#FFFFFF" align="center" colspan="2">0.00</th>
</tr>
<tr>
<th bgcolor="#75BDFF" align="center" colspan="2">IVA (12%)</th>
<th bgcolor="#FFFFFF" align="center" colspan="2">0.00</th>
</tr>
<tr>
<th bgcolor="#75BDFF" align="center" colspan="2">TOTAL GENERAL</th>
<th bgcolor="#FFFFFF" align="center" colspan="2">0.00</th>
</tr>
</table>
</html>
De ante mano Gracias por su ayuda