I built a method that recursively adds the contents of a folder to a zip document with an epub file extension, which is basically what epub does except for one thing:
the first document in the archive must have the name "mimetype", the type must be specified by application / epub + zip and it must begin with an offset of byte 38. Is there a way to add the mimetype type to the archive with an offset of 38?
The method I built almost works. He creates an epub that can be read by most e-books, but he does not check. EpubCheck reports this error:
mimetype contains wrong type (application/epub+zip expected)
This is a problem that does not exist in the original test epub, but appears in the reconstructed epub. And I double checked that the contents of the file with the unpacked / modified mimetype is correct.
The method is too much to post here. But this is what I use to add the mimetype file to the archive:
out = new ZipOutputStream(new FileOutputStream(outFilename)); FileInputStream in = new FileInputStream(mimeTypePath); out.putNextEntry(new ZipEntry("mimetype")); int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } out.closeEntry(); in.close(); out.close();
source share