RE: jEditorPane y text/html problema con width y height
"jimmy_nimo" <jimmy_nimo-/[email protected]>
| Newsgroups | gmane.comp.java.javaspain |
|---|---|
| Message-ID | <[email protected]> |
Sebastian gracias en efecto he usado flying para esto en el 99% de los casos y funciona perfecto y estoy usando es un bufferedImage directamente y despues a archivo y me funciona en e 100% de los casos menos cuando tienes un texto MUY largo en un solo font y tiene que ser recortado es por width del div (como el html que te muestro abajo) con la funcion que te mostre que corre en stand alone con una simple llamada al main y usando ese html que te mostre veras a lo que me refiero intente jEditorPane porque el en este casi si respeta ese interlineado no se porque no funciona :( alguna idea? --- En [email protected], Sebastian Gurin <sgurin@...> escribió: > > jimmy: flying sawcer es 100% css. Yo me la jugaría por probar con objetos html con posicionamiento absoluto, y especificar w y h así: > > <div style="position: absolute; width: wpx; height: hpx; top:0px; left:0px"> > contenido</div> > > esto renderizado por flying sawcer deberá hacer que el div quede en el pixel 0,0 del jpanel (xhtmlpanel creo que se llama), por lo que basta tomar un screenshot del rectangulo 0,0,w,h. Eso si, vas a tener problemas si utilizas bordes css, por ejemplo "border solid 10px blue" ya que en la espec css el borde no forma parte del contenido ni de la caja (los bordes gruesos se salen para afuera)... > > creo que lo ateior también funciona con la renderización html que viene con swing. > > si quieres renderizar 100% igual que el browser, también me ha funcionado, pero utilizando swt, no swing, hacerle un screenshot al Componente browser de dicho toolkit, utilizando la misma tecnica que te comenté atras > > suerte! > > > > On Fri, 22 Aug 2008 12:58:03 -0000 > "jimmy_nimo" <jimmy_nimo@...> wrote: > > > no, quiero tomar una imagen del html que estoy renderizando y que sea > > del tamaño correcto, > > > > leer html > > renderizarlo a imagen > > guardar imagen > > > > y si, tambien lo he intentando con flyingsawcer aqui esta el codigo > > con flyingsawcer: > > > > public static String Nueva(String archivo, String ruta) throws > > CaidaException > > { > > String address = archivo; > > String fin=null; > > // render > > try { > > > > BufferedImage buff = null; > > > > buff = Graphics2DRenderer.renderToImage(address, 1); > > fin=ruta+"temp.png"; > > File f = new File(fin); > > > > ImageIO.write(buff, "png", f); > > } catch (Exception e) { > > Logs.add("Error en creacion de imagen"+e.toString(), 3); > > throw new CaidaException("Error en creacion de imagen"+e.toString()); > > > > } > > return fin; > > } > > > > > > el problema es que en este caso en especifico (aun no entiendo porque) > > el interlineado de Flying saucer es incorrecto (coloca un interlineado > > 2 veces mas grueso que el que deberia ser) > > > > estoy haciendo pruebas con los 2, con Flying tengo el interlineado y > > con jEditorPane el problema que tengo al menos lo tengo ubicado es que > > la etiqueta <div style="width:348px; "> no la respeta, alguna posible > > solucion? > > > > --- En [email protected], Sebastian Gurin <sgurin@> escribió: > > > > > > a ver, según te entiendo estñás renderizando html en un panel y > > luego dibujando directamente una imágen en el mismo panel. No entendi > > muy bien qué es lo que quieres hacer, pero me asombra que, si estas > > gastando en renderizar html en swing, no metas la imagen dentro del > > documento html en lugar de dibijarla directamente en el panel. > > > > > > para renderizar html, te recomiendo flyingsawcer > > (xhtmlrenderer.dev.java.net) que respeta el estándar css2 al 100% y > > por ahí tu error viene porque la renderización html de swing no lo hace... > > > > > > un saludo > > > > > > On Fri, 22 Aug 2008 11:14:37 -0000 > > > "jimmy_nimo" <jimmy_nimo@> wrote: > > > > > > > Hola y ante todo gracias por leerme y por tener esta comunidad, espero > > > > poder ser de ayuda en ella. > > > > > > > > se que debe ser comun pero llegue a ustedes porque tengo un problema, > > > > si alguien me puede ayudar le estare tremendamente agradecido > > > > > > > > > > > > Estoy trabajando en un proyecto donde interrelacionan muchos sistemas, > > > > una de las interrelaciones es a traves de archivos html, donde un > > > > sistema (en flex) escribe el html y java lo tiene que renderizar y > > > > poderlo usar como imagen > > > > > > > > anexo coloco un ejemplo de un html > > > > html: > > > > > > > > <body bgcolor="#FFFFFF"><div style="width:348px; "> > > > > <div style="text-align:left; margin-top:0;margin-bottom: 0"> > > > > <font style="letter-spacing: 0px; letter-spacing: 0px; color: > > > > #000000; font-size: 10px; font-family: Arial; ">Estoy escribiendo un > > > > texto bien largo al pie de una foto, para ver como se comporta con los > > > > interlineados respecto al tamaño origen del mismo, a ver si se quedan > > > > muy espaciados o no o para poder estudiar mejor como se va a comporar > > > > a posteriori. es importante ver como esta quedando el espacio entre > > > > las lineas de texto para despues saber porque ha pasado todo esto. > > > > vaya rollo que estoy metiendo. añado para que me cuadre la > > foto</font> > > > > </div> > > > > </div></body> > > > > > > > > > > > > Yo estoy usando un jEditorPane para renderizar la imagen del html y el > > > > hace todo bien (tipos de letras y size, align, etc) pero no los > > > > tamaños, primero coloco el codigo para ver si es esto. > > > > > > > > public static BufferedImage create(String texto, int width, int > > height) { > > > > BufferedImage image = null; > > > > > > > > JEditorPane pane = new JEditorPane(); > > > > Kit kit = new Kit(); > > > > pane.setEditorKit(kit); > > > > pane.setEditable(false); > > > > pane.setMargin(new Insets(0,0,0,0)); > > > > pane.setEditable(false); > > > > > > > > try { > > > > > > > > pane.setContentType("text/html"); > > > > > > > > > > > > pane.setPage("http://localhost/"+texto); > > > > image = new BufferedImage(width, height, > > BufferedImage.TYPE_INT_RGB); > > > > Graphics g = image.createGraphics(); > > > > Container c = new Container(); > > > > SwingUtilities.paintComponent(g, pane, c, 0, 0, width, height); > > > > g.dispose(); > > > > } catch (Exception e) { > > > > System.out.println(e); > > > > } > > > > return image; > > > > } > > > > > > > > si uso width igual al del div que tengo (348) corta la imagen > > > > resultante, si le coloco tamaño 450 lo toma completo pero necesito que > > > > sea del tamaño exacto como en el html (que se vea como se ve en > > > > firefox, mismos tamaños) alguien me puede dar alguna idea? > > > > > > > > > > > > > > > > > -- > > > Sebastian Gurin <sgurin@> > > > > > > > > > > > > -- > Sebastian Gurin <sgurin@...> >