2012-02-08 6 views
2

android에서 ePub 파일을 만들려고합니다. 아래는 내 소스 코드입니다.ePub를 만들 수 없습니다.

하지만 내가 자산 폴더에 cover.pngtest1.html을 넣었습니다

epubWriter.write(book, out);

에서 NullPointerException을 얻고있다.

무엇 *.css에 대한, mimetype, META-INF/container.xml, OEBPS/*.opf, *.otf 파일?

ePub 파일을 만들어야하나요?

내가 파일을 만들 수 있어요하지만 그건 내가 장치에서 해당 파일을 끌어와 구경에서 볼하려고 할 때 추측 적절한 형식이 아닌

, 그것은 다음과 같은 오류

를 제공함으로써 열리지 않는

calibre, version 0.8.38 ERROR: Could not open ebook: File is not a zip file

전적으로 ePub 개발 초보자이므로 도움/제안을 보내 주시면 감사하겠습니다.

CreateEPub.java

public class CreateEPub extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     AssetManager assetManager = getAssets(); 

     try { 
      Book book = new Book(); 
      book.getMetadata().addTitle("Epub test book 1"); 
      book.getMetadata().addAuthor(new Author("Joe", "Tester")); 
      InputStream is = assetManager.open("cover.png"); 
      book.getMetadata().setCoverImage(new Resource(is, "cover.png")); 
      // Add Chapter 1 
      InputStream is1 = assetManager.open("test1.html"); 
      book.addSection("Introduction", new Resource(is1, "chapter1.html")); 

      EpubWriter epubWriter = new EpubWriter(); 
      epubWriter.write(book, new FileOutputStream("test1_book1.epub")); 
      Log.v("ePub", "Created"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

로그 캣

java.lang.NullPointerException 
at org.kxml2.io.KXmlSerializer.attribute(KXmlSerializer.java:473) 
at nl.siegmann.epublib.epub.PackageDocumentMetadataWriter.writeMetaData(PackageDocumentMetadataWriter.java:93) 
at nl.siegmann.epublib.epub.PackageDocumentWriter.write(PackageDocumentWriter.java:45) 
at nl.siegmann.epublib.epub.EpubWriter.writePackageDocument(EpubWriter.java:112) 
at nl.siegmann.epublib.epub.EpubWriter.write(EpubWriter.java:53) 
at com.createepub.CreateEPub.onCreate(CreateEPub.java:91) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:4627) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
at dalvik.system.NativeStart.main(Native Method) 

CreateEPub 라인 (91)가 참조하는 epubWriter.write(book, out);

+0

가능한 [Android에서 EPub 파일 만들기] (http://stackoverflow.com/questions/9174375/create-epub-file-in-android) –

+0

예. 죄송합니다 : (... – GAMA

답변

3

에 나는 당신의 ePub를 만들기위한 siegmann lib 디렉토리를 사용하는 희망 . (필수) 2 개 라이브러리 파일

  1. epublib 코어-latest.jar
  2. SLF4J-안드로이드 1.6.1-RC1.jar

다운로드 모두 항아리에서을 포함

필요 http://www.siegmann.nl/epublib/android

샘플 코드

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 

import nl.siegmann.epublib.domain.Author; 
import nl.siegmann.epublib.domain.Book; 
import nl.siegmann.epublib.epub.EpubWriter; 
import android.app.Activity; 
import android.os.Bundle; 



public class EpubAppActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Book b = new Book(); 
     b.getMetadata().addTitle("test epub book"); 
     b.getMetadata().addAuthor(new Author("author name")); 

     EpubWriter w = new EpubWriter(); 

     FileOutputStream fos; 
     try { 

      File file = new File(getApplicationContext().getExternalFilesDir(null), "test.epub"); 
      if(!file.exists()){ 
       file.createNewFile(); 
      } 
      fos = new FileOutputStream(file); 
      w.write(b, fos); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     }catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 


    } 
} 
+0

ur reply에 대한 Thnx. 제안 된 코드를 시도하면 버전 0.8.38이 표시됩니다. 오류 : eBook을 열 수 없습니다 :이 EPUB의 척추에 유효한 항목이 없습니다 .' ... 무엇이 문제일까요? – GAMA

+0

epub 책을 여는 방법 도구를 사용하고 있습니까? – Prasad

+0

예. 'Calibre'를 사용하고 있습니다 .Ebub 파일을 다운로드하고'Calibre'에서 열었습니다. 이 코드로 만든 파일을 열려고해도 작동하지 않습니다. – GAMA