X-Git-Url: http://git.nikiroo.be/?p=fanfix.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Foutput%2FEpub.java;h=fc2dc8c982127210c308d6a9dc70a20b667162eb;hp=64797d395f1442d0d49220f4072bb7df832e9634;hb=HEAD;hpb=276f95c6ca9a79d2fc6879877b240cefb4ceb598 diff --git a/src/be/nikiroo/fanfix/output/Epub.java b/src/be/nikiroo/fanfix/output/Epub.java index 64797d3..fc2dc8c 100644 --- a/src/be/nikiroo/fanfix/output/Epub.java +++ b/src/be/nikiroo/fanfix/output/Epub.java @@ -36,7 +36,7 @@ class Epub extends BasicOutput { 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()) { @@ -46,51 +46,54 @@ class Epub extends BasicOutput { 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; } @@ -133,8 +136,11 @@ class Epub extends BasicOutput { // 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 @@ -239,8 +245,7 @@ class Epub extends BasicOutput { 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(" page image"); break; @@ -351,11 +356,10 @@ class Epub extends BasicOutput { 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)); @@ -433,8 +437,9 @@ class Epub extends BasicOutput { builder.append("\n "); 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 "); } @@ -479,8 +484,8 @@ class Epub extends BasicOutput { 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(""); builder.append("\n");