Search code examples
blackberryjava-meepub

reading epub file in blackberry


can you tell me a hint to start an Epub reader app for blackberry?

I want the simplest way to do it, is there any browser or UI component that can read & display it?

I want to download it from a server then view it to the user to read it.


Solution

  • couple of days ago, an Epub reader library was added here, I tried to use it, but it has some difficulties, it could open Epubs only from resources, but not from file system, so I decided to download the source and do some adaptation. First, I wrote a small function that opens the Epub file as a stream:

    public static InputStream GetFileAsStream(String fName) {
        FileConnection fconn = null;
        DataInputStream is = null;
        try {
            fconn = (FileConnection) Connector
                    .open(fName, Connector.READ_WRITE);
            is = fconn.openDataInputStream();
    
        } catch (IOException e) {
            System.out.println(e.getMessage());
        return is;
    

    Then, I replaced the call that opens the file in com.omt.epubreader.domain.epub.java, so it became like this:

    public Book getBook(String url)
    {
        InputStream in = ConnectionController.GetFileAsStream(url);
    
        ...
        return book;
    }
    

    after that, I could read the file successfully, but a problem appeared, it wasn't able to read the sections, i.e. the .html files, so I went into a short debug session before I found the problem, whoever wrote that library, left the code that read the .html file names empty, in com.omt.epubreader.parser.NcxParser it was like this:

    private void getBookNcxInfo()
    {
        ...
    
        if(pars.getEventType() == XmlPullParser.START_TAG && 
                        pars.getName().toLowerCase().equals(TAG_CONTENT))
        {
            if(pars.getAttributeCount()>0)
            {
    
            }
        }
    
        ...
    }
    

    I just added this line to the if clause:

    contentDataFileName.addElement(pars.getAttributeValue("", "src"));
    

    and after that, it worked just perfectly.