在JTextPane中显示和保存图像

时间:2017-11-29 07:28:20

标签: java jtextpane imageicon htmleditorkit

我需要像Word一样编写一个编辑器。它需要支持编辑文件,插入和删除图像以及其他一些东西 我选择JTextPane来做这些事情 我像这样使用imageIcon加载并显示图像:

BufferedImage img = ImageIO.read(file);
ImageIcon icon = new ImageIcon(img);
insertIcon(new ImageIcon(img));

我现在面临的问题是如何将图像保存到文件中?我使用HTMLDocument和HTMLEditorKit来实现save方法,主要逻辑如下:

public void saveAs() {
    doc = (HTMLDocument) getStyledDocument();
    File newFile = new File(path);
    FileWriter fw = new FileWriter(newFile);
    kit.write(fw, doc, 0, doc.getLength());
    fw.close();
}

Kit和doc是我的Page类中的私有成员(从JTextPane派生的页面)。 在saveAs方法执行后,保存的文件不包括图像:

<html>
   <head>

  </head>
   <body>
     <p style="margin-top: 0">
      hello world
     </p>
    <p style="margin-top: 0">
       <p $ename="icon">
    </p>
   </body>
</html>

从HTML文件中我们可以看到image path没有编码到那里,我想知道如何实现saveAs方法来支持保存图像?
非常感谢!

1 个答案:

答案 0 :(得分:0)

实际上,您插入的图标不是HTML的一部分,因此不会保存。要以HTML格式执行此操作,您需要参考图像网址插入<IMG>标记。

可以是file://... some path here ... yourImage.jpg

如果你需要以某种方式嵌入图像HTMLEditorKit是不够的。

没有简单的方法来嵌入图像。

您可以看到我尝试执行此操作in RTF

但一般来说,你应该自己编写代码。