String targetNameOrig = targetName;
targetName += getDefaultExtension(false);
- tmpDir = File.createTempFile("fanfic-reader-epub_", ".wip");
+ tmpDir = Instance.getInstance().getTempFiles().createTempDir("fanfic-reader-epub");
tmpDir.delete();
if (!tmpDir.mkdir()) {
super.process(story, targetDir, targetNameOrig);
- // "Originals"
- File data = new File(tmpDir, "DATA");
- data.mkdir();
- BasicOutput.getOutput(OutputType.TEXT, isWriteInfo(), isWriteCover())
- .process(story, data, targetNameOrig);
- InfoCover.writeInfo(data, targetNameOrig, story.getMeta());
- IOUtils.writeSmallFile(data, "version", "3.0");
-
- // zip/epub
- File epub = new File(targetDir, targetName);
- IOUtils.zip(tmpDir, epub, true);
-
- OutputStream out = new FileOutputStream(epub);
+ File epub = null;
try {
- ZipOutputStream zip = new ZipOutputStream(out);
+ // "Originals"
+ File data = new File(tmpDir, "DATA");
+ data.mkdir();
+ BasicOutput.getOutput(OutputType.TEXT, isWriteInfo(),
+ isWriteCover()).process(story, data, targetNameOrig);
+ InfoCover.writeInfo(data, targetNameOrig, story.getMeta());
+ IOUtils.writeSmallFile(data, "version", "3.0");
+
+ // zip/epub
+ epub = new File(targetDir, targetName);
+ IOUtils.zip(tmpDir, epub, true);
+
+ OutputStream out = new FileOutputStream(epub);
try {
- // "mimetype" MUST be the first element and not compressed
- zip.setLevel(ZipOutputStream.STORED);
- File mimetype = new File(tmpDir, "mimetype");
- IOUtils.writeSmallFile(tmpDir, "mimetype",
- "application/epub+zip");
- ZipEntry entry = new ZipEntry("mimetype");
- entry.setExtra(new byte[] {});
- zip.putNextEntry(entry);
- FileInputStream in = new FileInputStream(mimetype);
+ ZipOutputStream zip = new ZipOutputStream(out);
try {
- IOUtils.write(in, zip);
+ // "mimetype" MUST be the first element and not compressed
+ zip.setLevel(ZipOutputStream.STORED);
+ File mimetype = new File(tmpDir, "mimetype");
+ IOUtils.writeSmallFile(tmpDir, "mimetype",
+ "application/epub+zip");
+ ZipEntry entry = new ZipEntry("mimetype");
+ entry.setExtra(new byte[] {});
+ zip.putNextEntry(entry);
+ FileInputStream in = new FileInputStream(mimetype);
+ try {
+ IOUtils.write(in, zip);
+ } finally {
+ in.close();
+ }
+ IOUtils.deltree(mimetype);
+ zip.setLevel(ZipOutputStream.DEFLATED);
+ //
+
+ IOUtils.zip(zip, "", tmpDir, true);
} finally {
- in.close();
+ zip.close();
}
- IOUtils.deltree(mimetype);
- zip.setLevel(ZipOutputStream.DEFLATED);
- //
-
- IOUtils.zip(zip, "", tmpDir, true);
} finally {
- zip.close();
+ out.close();
}
} finally {
- out.close();
+ IOUtils.deltree(tmpDir);
+ tmpDir = null;
}
- IOUtils.deltree(tmpDir);
- tmpDir = null;
-
return epub;
}
// OPS/images
if (story.getMeta() != null && story.getMeta().getCover() != null) {
File file = new File(images, "cover");
- Instance.getCache().saveAsImage(story.getMeta().getCover(), file,
- true);
+ try {
+ Instance.getInstance().getCache().saveAsImage(story.getMeta().getCover(), file, true);
+ } catch (Exception e) {
+ Instance.getInstance().getTraceHandler().error(e);
+ }
}
// OPS/* except chapters
break;
case IMAGE:
File file = new File(images, getCurrentImageBestName(false));
- Instance.getCache().saveAsImage(para.getContentImage(), file,
- nextParaIsCover);
+ Instance.getInstance().getCache().saveAsImage(para.getContentImage(), file, nextParaIsCover);
writer.write(" <img alt='page image' class='page-image' src='images/"
+ getCurrentImageBestName(false) + "'/>");
break;
private void generateNcx(Chapter chap, StringBuilder builder, int navPoint) {
String name;
if (chap.getName() != null && !chap.getName().isEmpty()) {
- name = Instance.getTrans().getString(StringId.CHAPTER_NAMED,
- chap.getNumber(), chap.getName());
+ name = Instance.getInstance().getTrans().getString(StringId.CHAPTER_NAMED, chap.getNumber(),
+ chap.getName());
} else {
- name = Instance.getTrans().getString(StringId.CHAPTER_UNNAMED,
- chap.getNumber());
+ name = Instance.getInstance().getTrans().getString(StringId.CHAPTER_UNNAMED, chap.getNumber());
}
String nnn = String.format("%03d", (navPoint - 2));
builder.append("\n <!-- Images -->");
if (story.getMeta() != null && story.getMeta().getCover() != null) {
- String format = Instance.getConfig()
- .getString(Config.IMAGE_FORMAT_COVER).toLowerCase();
+ String format = Instance.getInstance().getConfig()
+ .getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER)
+ .toLowerCase();
builder.append("\n <item id=\"cover\" href=\"images/cover."
+ format + "\" media-type=\"image/png\"/>");
}
author = meta.getAuthor();
}
- String format = Instance.getConfig()
- .getString(Config.IMAGE_FORMAT_COVER).toLowerCase();
+ String format = Instance.getInstance().getConfig()
+ .getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER).toLowerCase();
builder.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
builder.append("\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">");