0

我正在尝试将图像添加到 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) {
        }
    }
}
4

2 回答 2

1

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

此行正在创建新文件:

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

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

public void insertImage( FileOutputStream evidenceDocument , File saveLocation )
于 2012-05-05T06:04:55.580 回答
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。

于 2013-03-12T09:05:16.040 回答