java - 使用 Flying Saucer 将html转换为图像

标签 java html flying-saucer

使用 Flying Saucer ,我使用下面的代码成功地将 html 转换为图像

//doc - html source code as org.w3c.dom.Document

Java2DRenderer renderer = new Java2DRenderer(doc, width, height); 

         BufferedImage img = renderer.getImage();

        ByteArrayOutputStream os = new ByteArrayOutputStream();
        ImageIO.write(img, "jpg", os);

但是我在上面的代码中遇到了问题,比如它没有在 html 中正确呈现字体。

此外,如果给出的是中文、日文或其他非 Ascii 字符,则图像没有以正确的内容呈现(字符如下方框所示)。

enter image description here

但是实际的html内容是

<div ><ul><li><dl><dt><a href="http://jcs2014.com/ja/about/">イベントについて</a><br></dt><dd><ul><li><a href="http://jcs2014.com/ja/about/support.html">サポーター&amp;フレンズ</a><br></li></ul></dd></dl><dl><dt><a href="http://jcs2014.com/ja/event/">イベント・セミナー一覧</a><br></dt></dl></li></ul><div><br></div></div>

同样在我的情况下,任何语言都会出现,但都使用 unicode 编码。如何解决这个问题。

请帮忙。

最佳答案

    String html = "<div ><ul><li><dl><dt><a href=\"http://jcs2014.com/ja/about/\">イベントについて</a><br></dt><dd><ul><li><a href=\"http://jcs2014.com/ja/about/support.html\">サポーター&amp;フレンズ</a><br></li></ul></dd></dl><dl><dt><a href=\"http://jcs2014.com/ja/event/\">イベント・セミナー一覧</a><br></dt></dl></li></ul><div><br></div></div>"

    //Read it using Utf-8 - Based on encoding, change the encoding name if you know it

    InputStream htmlStream = new ByteArrayInputStream(html.getBytes("UTF-8"));  
    Tidy tidy = new Tidy();      
    org.w3c.dom.Document doc = tidy.parseDOM(new InputStreamReader(htmlStream,"UTF-8"), null);

    Java2DRenderer renderer = new Java2DRenderer(doc, width, height); 
    BufferedImage img = renderer.getImage();
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    ImageIO.write(img, "jpg", os);

This solves my issue. On reading html stream using UTF-8 solves the issue.

关于java - 使用 Flying Saucer 将html转换为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32449519/

相关文章:

java - 从 Minecraft 安装中提取项目、配方元数据

html - 在无法访问整个 html/css 工作表的情况下覆盖 Favicon 和标题

html - 在投资组合中自动调整照片大小

javascript - 使用外部数据库在多个站点上更新 html 和 css

java - FlyingSaucer R8 兼容的最高 Itext 是多少?

java - 如何使用 Flying Saucer 项目创建 TOC 或索引?

java - glassfish 的内存泄漏

java - 在 Java 中,嵌套类与其外部类之间的关系是什么?

java - 如何测试与 Web 服务的连接?

java - 带有西里尔字符的 HTML 到 PDF