将图像附加到RTF文档

时间:2012-05-05 06:02:18

标签: java itext rtf

我正在尝试将图像添加到rtf文档中。我能够将图像添加到文档中,但我无法附加任何图像。这意味着当添加第二个图像时,将删除第一个图像。我认为无论何时执行代码,都会创建一个新的rtf文档。

public class InsertToWord {

    com.lowagie.text.Document doc = null;
    FileOutputStream evidenceDocument;
    String fileName = "evidenceDocument.rtf";
    settings obj = null;

    InsertToWord() {
        obj = new settings();
        doc = new com.lowagie.text.Document();

    }

    public void insertImage(File saveLocation) {

        try {
            evidenceDocument = new FileOutputStream(obj.getFileLocation() + fileName);
            RtfWriter2.getInstance(doc, evidenceDocument);
            doc.open();
            com.lowagie.text.Image image = com.lowagie.text.Image.getInstance(saveLocation.toString());
            image.scaleAbsolute(400, 300);
            doc.add(image);
            doc.close();
        } catch (Exception e) {
        }
    }
}

2 个答案:

答案 0 :(得分:1)

在你的insertImage()方法中,你确实在创建一个新文件并覆盖旧文件。

这一行正在创建新文件:

evidenceDocument = new FileOutputStream(obj.getFileLocation()+fileName);

您可以将FileOutputStream作为参数传递给方法,然后将所有行一起删除:

public void insertImage( FileOutputStream evidenceDocument , File saveLocation )

答案 1 :(得分:0)

此代码是我用来将图像添加到RTF格式并且工作正常的代码:

public void actionPerformed(ActionEvent arg0) {

        JFileChooser fileChooser = new JFileChooser();
        int option = fileChooser.showOpenDialog(null);
        File file = fileChooser.getSelectedFile();

        if (option == JFileChooser.APPROVE_OPTION) {

            try {

                BufferedImage image = ImageIO.read(file);
                image = Scalr.resize(image, 200);
                document = (StyledDocument) textPane.getDocument();
                javax.swing.text.Style style = document.addStyle("StyleName", null);
                StyleConstants.setIcon(style, new ImageIcon(image));
                document.insertString(document.getLength(), "ignored text", style);


            }

            catch (Exception e) {
                e.printStackTrace();
            }

        }

        if (option == JFileChooser.CANCEL_OPTION) {

            fileChooser.setVisible(false);

        }

    }// End of Method

textPane变量是JTextPane。