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