gpt4 book ai didi

java - 无法创建 ePub

转载 作者:搜寻专家 更新时间:2023-11-01 09:09:40 24 4
gpt4 key购买 nike

我正在尝试在 android 中创建一个 ePub 文件。下面是我的源代码。

但是我在

得到了 NullPointerException

epubWriter.write(book, out);

我已将 cover.pngtest1.html 放在 assets 文件夹中。

关于*.css,mimetype,META-INF/container.xml,OEBPS/*.opf,*.otf 文件?

他们是否必须构建 ePub 文件?

我可以创建一个文件,但我猜它的格式不正确,因为当我从设备中提取该文件并尝试在 Calibre 中查看它时,它不会通过提供打开跟随错误

口径,版本 0.8.38
错误:无法打开电子书:文件不是 zip 文件

我绝对是 ePub 开发的初学者,所以任何帮助/建议都将不胜感激。

创建EPub.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();
}
}
}

LogCat

 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);

最佳答案

我希望您正在使用 siegmann 库来创建 ePub。

需要包含2个lib文件(强制)

  1. epublib-core-latest.jar
  2. slf4j-android-1.6.1-RC1.jar

http://www.siegmann.nl/epublib/android 下载两个 jar

示例代码

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();
}


}
}

关于java - 无法创建 ePub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9188749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com