[ 
https://issues.apache.org/jira/browse/ODFTOOLKIT-341?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13477295#comment-13477295
 ] 

Anders Sjöström commented on ODFTOOLKIT-341:
--------------------------------------------

Sorry for my late reply Rob. I can confirm that the program doesn't crash any 
more. 

However, when I open the file in Apache Open Office, the file will open 
properly, but lacking height/width attributes unfortunately the image frame 
will default to a ridiculously small size, something I did neglect to mention.

And I have checked, ImageIO will only work on bitmapped image formats, which 
this is not.

Since SVG is a vector format, it doesn't have an absolute size. The size is 
more about fitting it nicely into the page, which would be hard to figure out 
from the image file itself. IMO the ideal is if the image is by default 
maximized according to the paper size, but without change the ratio between 
height and width. Which in turn still requires parsing information from the 
file itself. And always maximizing might not be every ones ideal solution, 
since all vector images will fill up to a page each. So I can accept if the 
default size is not set according to my wishes, but it would have been nice if 
I could set och change the size at will.


I tried to use Image.newImage(paragraph, uri) instead of 
TextDocument.newImage(uri), thinking that it would give me easy access to the 
Frame so that I could set the height/width attributes myself. This works fine 
for a png file. Unfortunately Image.newImage() on the svg file gives an 
exception too.

Paragraph para = outputOdt.addParagraph("Hello World.");
Image image = Image.newImage(para, uri);

java.lang.NullPointerException
        at 
org.odftoolkit.simple.draw.Image.configureInsertedImage(Image.java:282)
        at org.odftoolkit.simple.draw.Image.newImage(Image.java:184)
        at odfgenerator.main(odfgenerator.java:16)


This is the complete program I was trying to run this time (which works for png 
files):

public class odfgenerator { 
  public static void main(String[] args) throws Exception { 
    TextDocument outputOdt; 
    outputOdt = TextDocument.newTextDocument(); 
    Paragraph para = outputOdt.addParagraph("Hello World."); 

    //URI uri = new URI("file:///C:/Users/myuser/Desktop/simple.png"); 
    URI uri = new URI("file:///C:/Users/myuser/Desktop/simple.svg"); 

    Image image = Image.newImage(para, uri);
    Frame frame = image.getFrame();
    DrawFrameElement drawframe = frame.getDrawFrameElement();
    drawframe.setSvgHeightAttribute("10cm");
    drawframe.setSvgWidthAttribute("10cm");
    
    outputOdt.save("C:/Users/myuser/Desktop/HelloWorld.odt"); 
  } 
} 

Do you think that it would be possible to find a solution where I could somehow 
set the height/width for SVG images? Perhaps I should write a new issue about 
this?

                
> newImage() generates java.lang.NullPointerException when using an svg image
> ---------------------------------------------------------------------------
>
>                 Key: ODFTOOLKIT-341
>                 URL: https://issues.apache.org/jira/browse/ODFTOOLKIT-341
>             Project: ODF Toolkit
>          Issue Type: Bug
>          Components: simple api
>    Affects Versions: 0.8
>         Environment: Windows 7 Home 32 bit
> JRE 7 32 bit
> Eclipse Indigo SR2
> odf-toolkit 0.5 
> and also tried odf-toolkit SVN revision 1395734 (built with Maven on Ubuntu): 
> simple-odf-0.8-incubating-SNAPSHOT, odfdoom-java-0.8.9-incubating-SNAPSHOT
>            Reporter: Anders Sjöström
>            Assignee: Rob Weir
>         Attachments: simple.svg
>
>
> I'm trying to create an odt file, and insert text and svg images, with 
> limited success.
> Inserting a png image is no problem, but when I change the line to insert an 
> svg image I get an exception.
> This is the minimum program to demonstrate my problem:
> import java.net.URI;
> import org.odftoolkit.simple.TextDocument;
> public class odfgenerator {
>       public static void main(String[] args) throws Exception {
>               TextDocument outputOdt;
>               outputOdt = TextDocument.newTextDocument();
>               outputOdt.addParagraph("Hello World.");
>               //URI uri = new 
> URI("file:///C:/Users/myuser/Desktop/simple.png");
>               URI uri = new URI("file:///C:/Users/myuser/Desktop/simple.svg");
>               outputOdt.newImage(uri);
>               outputOdt.save("C:/Users/myuser/Desktop/HelloWorld.odt");
>       }
> }
> If I run my program (in Eclipse) I get:
> okt 08, 2012 11:30:57 EM org.odftoolkit.simple.Document newImage
> SEVERE: null
> java.lang.NullPointerException
>       at 
> org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage.configureInsertedImage(OdfDrawImage.java:123)
>       at 
> org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage.newImage(OdfDrawImage.java:147)
>       at org.odftoolkit.simple.Document.newImage(Document.java:830)
>       at odfgenerator.main(odfgenerator.java:12)
> I delete HelloWorld.odt before every run, just to make sure. The odd thing is 
> that despite the exception, HelloWorld.odt is still created, with the svg 
> file inside the Pictures directory, and the content.xml has an draw:image tag 
> with xlink:href="Pictures/simple.svg". The odt file can be opened with Apache 
> Open Office without problem, and will display the picture.
> Changing the URI to point to an png file instead results in the program 
> terminating normally without any errors. The resulting file can also be 
> opened with Apache Open Office without problems.
> simple.svg is a very simple svg file created with Inkskape containing two 
> boxes, and saved as "plain svg".
> Am I doing anything wrong or is this a bug?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to