2011/11/5 Oliver Rau <[email protected]>
> Hi everybody,
>
> while continuing the development on my application I needed a way to
> insert in image into an Document at any paragraph.
>
> According to the way how OOo does it, this is accomplished by adding a
> draw:frame into the paragraph. That frame will then contain the
> draw:image.
>
> Based on that assumption I stumbled upon the setImage method of the
> Simple APIs Frame class (org.odftoolkit.simple.draw.Frame) which seems
> to do exactly that.
> The problem I'm facing now is that I'm not able to instantiate that
> class due to it's visibility modifiers all being set to protected. The
> only extending class is TextBox, which in my case doesn't seem to be
> the right choice.
>
> Is there any reason why to keep the Frame class with an protected
> modifier for the constructor and the getInstanceof / newFrame methods
> rather than making them public?
>
For OpenOffice and Symphony, if there is nothing content in a Frame,
e.g.image, text box, the Frame can't be seen by user.
So, construct a single Frame object doesn't make sense. Simple ODF is a
high level API, its end user no need to care it. That's why we set Frame
class as protected.
> BTW: does the way I described above to add an image make sense or is
> there a better way?
>
>
Simple ODF can add image to text document, presentation and spreadsheet.
For your application, please reference the following code:
// new image in text document
TextDocument doc = TextDocument.newTextDocument();
Paragraph para = doc.addParagraph("");
Image image = Image.newImage(para, "image_list_item.png");
image.setName("this image");
image.setHyperlink(new URI("http://odftoolkit.org"));
doc.save("imagetest.odt");
// new image in presentation
PresentationDocument pDoc =
PresentationDocument.newPresentationDocument();
Slide slide = pDoc.newSlide(0, "test",
SlideLayout.TITLE_OUTLINE);
Textbox box =
slide.getTextboxByUsage(PresentationDocument.PresentationClass.TITLE).get(0);
box.setImage("image_list_item.png");
pDoc.save("imagep.odp");
// new image in a table
TextDocument sDoc = TextDocument.newTextDocument();
Table table1 = sDoc.addTable(2, 2);
Cell cell1 = table1.getCellByPosition(0, 0);
Image image3 = cell1.setImage("image_list_item.png");
image3.setHorizontalPosition(FrameHorizontalPosition.LEFT);
image3.setHyperlink(new URI("http://odftoolkit.org"));
sDoc.save("imges.odt");
SpreadsheetDocument sheet =
SpreadsheetDocument.newSpreadsheetDocument();
Table table2 = sheet.getTableList().get(0);
Cell cell2 = table2.getCellByPosition(1, 1);
Image image4 = cell2.setImage("image_list_item.png");
sheet.save("imgesheet.ods");
Image aImage4 = cell2.getImage();
>
> Regards
>
> Oliver
>
--
-Devin