diff --git a/manual/faq.rst b/manual/faq.rst index dc51912961..72e1f89532 100644 --- a/manual/faq.rst +++ b/manual/faq.rst @@ -18,7 +18,7 @@ What formats does calibre support conversion to/from? calibre supports the conversion of many input formats to many output formats. It can convert every input format in the following list, to every output format. -*Input Formats:* AZW, AZW3, AZW4, CBZ, CBR, CB7, CBC, CHM, DJVU, DOCX, EPUB, FB2, FBZ, HTML, HTMLZ, LIT, LRF, MOBI, ODT, PDF, PRC, PDB, PML, RB, RTF, SNB, TCR, TXT, TXTZ +*Input Formats:* AZW, AZW3, AZW4, CBZ, CBR, CB7, CBC, CHM, DJVU, DOCX, EPUB, FB2, FBZ, HTML, HTMLZ, KEPUB, LIT, LRF, MOBI, ODT, PDF, PRC, PDB, PML, RB, RTF, SNB, TCR, TXT, TXTZ *Output Formats:* AZW3, EPUB, DOCX, FB2, HTMLZ, OEB, LIT, LRF, MOBI, PDB, PMLZ, RB, PDF, RTF, SNB, TCR, TXT, TXTZ, ZIP @@ -34,7 +34,7 @@ It can convert every input format in the following list, to every output format. What are the best source formats to convert? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In order of decreasing preference: LIT, MOBI, AZW, EPUB, AZW3, FB2, FBZ, DOCX, HTML, PRC, ODT, RTF, PDB, TXT, PDF +In order of decreasing preference: LIT, MOBI, AZW, EPUB, KEPUB, AZW3, FB2, FBZ, DOCX, HTML, PRC, ODT, RTF, PDB, TXT, PDF I converted a PDF file, but the result has various problems? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/src/calibre/ebooks/conversion/plugins/epub_input.py b/src/calibre/ebooks/conversion/plugins/epub_input.py index ea4298d2c0..8089cc3443 100644 --- a/src/calibre/ebooks/conversion/plugins/epub_input.py +++ b/src/calibre/ebooks/conversion/plugins/epub_input.py @@ -33,7 +33,7 @@ class EPUBInput(InputFormatPlugin): name = 'EPUB Input' author = 'Kovid Goyal' description = _('Convert EPUB files (.epub) to HTML') - file_types = {'epub'} + file_types = {'epub', 'kepub'} output_encoding = None commit_name = 'epub_input' @@ -261,6 +261,7 @@ class EPUBInput(InputFormatPlugin): from calibre.ebooks import DRMError from calibre.ebooks.metadata.opf2 import OPF from calibre.utils.zipfile import ZipFile + is_kepub = file_ext.lower() == 'kepub' try: zf = ZipFile(stream) zf.extractall(os.getcwd()) @@ -283,6 +284,15 @@ class EPUBInput(InputFormatPlugin): if opf is None: raise ValueError(f'{path} is not a valid EPUB file (could not find opf)') + if is_kepub and not self.for_viewer: + log('Removing Kobo markup...') + from calibre.ebooks.oeb.polish.container import Container + from calibre.ebooks.oeb.polish.kepubify import unkepubify_container + container = Container(os.getcwd(), opf, log) + unkepubify_container(container) + container.commit() + del container + opf = os.path.relpath(opf, os.getcwd()) parts = os.path.split(opf) opf = OPF(opf, os.path.dirname(os.path.abspath(opf)))