Update nikiroo-utils, bugfixes:
[nikiroo-utils.git] / src / be / nikiroo / fanfix / output / Epub.java
index f27391b4c1e7b6583304bdcb4b05ff45e2ac1850..2c47dcbcad68c5d12c2626f22b0771a867eabcd3 100644 (file)
@@ -1,10 +1,11 @@
 package be.nikiroo.fanfix.output;
 
+import java.io.BufferedWriter;
 import java.io.File;
-import java.io.FileWriter;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URL;
+import java.io.OutputStreamWriter;
 
 import javax.imageio.ImageIO;
 
@@ -14,14 +15,14 @@ import be.nikiroo.fanfix.bundles.StringId;
 import be.nikiroo.fanfix.data.Chapter;
 import be.nikiroo.fanfix.data.MetaData;
 import be.nikiroo.fanfix.data.Paragraph;
-import be.nikiroo.fanfix.data.Story;
 import be.nikiroo.fanfix.data.Paragraph.ParagraphType;
+import be.nikiroo.fanfix.data.Story;
 import be.nikiroo.utils.IOUtils;
 import be.nikiroo.utils.StringUtils;
 
 class Epub extends BasicOutput {
        private File tmpDir;
-       private FileWriter writer;
+       private BufferedWriter writer;
        private boolean inDialogue = false;
        private boolean inNormal = false;
        private File images;
@@ -30,7 +31,7 @@ class Epub extends BasicOutput {
        public File process(Story story, File targetDir, String targetName)
                        throws IOException {
                String targetNameOrig = targetName;
-               targetName += getDefaultExtension();
+               targetName += getDefaultExtension(false);
 
                tmpDir = File.createTempFile("fanfic-reader-epub_", ".wip");
                tmpDir.delete();
@@ -44,6 +45,7 @@ class Epub extends BasicOutput {
                File data = new File(tmpDir, "DATA");
                data.mkdir();
                new InfoText().process(story, data, targetNameOrig);
+               InfoCover.writeInfo(data, targetNameOrig, story.getMeta());
                IOUtils.writeSmallFile(data, "version", "3.0");
 
                super.process(story, targetDir, targetNameOrig);
@@ -58,7 +60,7 @@ class Epub extends BasicOutput {
        }
 
        @Override
-       public String getDefaultExtension() {
+       public String getDefaultExtension(boolean readerTarget) {
                return ".epub";
        }
 
@@ -119,7 +121,9 @@ class Epub extends BasicOutput {
        protected void writeChapterHeader(Chapter chap) throws IOException {
                String filename = String.format("%s%03d%s", "chapter-",
                                chap.getNumber(), ".xml");
-               writer = new FileWriter(new File(tmpDir + "/OPS", filename));
+               writer = new BufferedWriter(new OutputStreamWriter(
+                               new FileOutputStream(new File(tmpDir + File.separator + "OPS",
+                                               filename)), "UTF-8"));
                inDialogue = false;
                inNormal = false;
                try {
@@ -194,7 +198,7 @@ class Epub extends BasicOutput {
                        writer.write("          <div class='blank'></div>");
                        break;
                case BREAK:
-                       writer.write("          <hr/>");
+                       writer.write("          <hr class='break'/>");
                        break;
                case NORMAL:
                        writer.write("          <span class='normal'>");
@@ -204,7 +208,7 @@ class Epub extends BasicOutput {
                        break;
                case IMAGE:
                        File file = new File(images, getCurrentImageBestName(false));
-                       Instance.getCache().saveAsImage(new URL(para.getContent()), file);
+                       Instance.getCache().saveAsImage(para.getContentImage(), file);
                        writer.write("                  <img class='page-image' src='images/"
                                        + getCurrentImageBestName(false) + "'/>");
                        break;