Re: RE: jEditorPane y text/html problema con width y height
Sebastian Gurin <sgurin-nLx/x0uvtyR/[email protected]>
| Newsgroups | gmane.comp.java.javaspain |
|---|---|
| Organization | softpoint |
| Message-ID | <[email protected]> |
On Fri, 22 Aug 2008 18:10:59 -0000 "jimmy_nimo" <jimmy_nimo-/[email protected]> wrote: > 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? > jimmy, aunque nos fuimos de tema, te comento por qué me parece que flyingsaucer y el renderizador de swing se comportan así. flying sawcer renderiza xml + css. <font> es una etiqueta cuya semántica (significado) lo define el estándar html, digamos que es un vestigio de los tiempos en que no se trabajaba con css y no deberías utilizarla (todo lo que puedes indicar con atributos de <font> lo puedes indicar con estilo css, y de hecho es lo que deberías hacer). Prueba utilizando un <span> en lugar de <font> e indicando el estilo del texto con css en lugar de con los atributos de <font>. Si aún quieres utilizar etiquetas html como <font>, flying saucer renderiza html utilizando una hoja de estilo que está en un archivo dentro de los fuentes (se que hasta la puedes especificar dinamicamente, busca en el user manual) Otra herramienta, que no he probado, pero muy relacionada con eltema y que vale la pena mirar es webkit. un saludo y suerte! > > --- 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@...> > > > > > -- Sebastian Gurin <sgurin-nLx/x0uvtyR/[email protected]>