A complete rewrite of fb2mobi
Aims to be faster than python implementation and much easier to maintain. Simpler configuration, zero dependencies, better diagnostics and no installation required.
- no UI: use Libro or MyHomeLib
- no XSL pre-processing (see document.transform configuration instead)
- no XML configuration - use TOML, YAML or JSON format instead
- no "default" external configuration, path to configuration file has to be supplied - always
- no overwriting of configuration parameters from command line, options either specified in configuration file or on command line
- slightly different hyphenation algorithm (no hyphensReplaceNBSP)
- fixes and echancements in toc.ncx generation
- go differs in how it processes images, it is less forgiving than Python's PILLOW and do not have lazy decoding (see use_broken_images configuration option)
- small changes in result formatting, for example:
- chapter-end vignette would not be added if chapter does not have text paragraphs
- html tags unknown to fb2 spec may be dropped depending on context
- page size is calculated based on proper Unicode code points rather than byte size
- ...
- full support for kepub format
- processing of files, directories, zip archives and directories with zip archives - no special consideration is made for
.fb2.zip
files. - flexible output path/name formatting
- fb2c could be build for any platform supported by go language. If mobi or azw3 are required additional limitations are imposed by Amazon's kindlegen
- fb2c has no dependencies and does not require installation or any kind
Download from the releases page and unpack it in a convenient location.
- Starting with v1.60.1 macOS releases for Intel and Apple silicon are build separately. I do not have
kindlegen
for Apple Silicon - not sure if one even exists, so manage your expectations. - Starting with v1.58.0 releases are packed with zip and signed with minisign. Here is public key for verification:
RWTNh1aN8DrXq26YRmWO3bPBx4m8jBATGXt4Z96DF4OVSzdCBmoAU+Vq
Configuration is fully documented here. In order to customize program behavior use "export" command to the directory of your choice and then supply path to your configuration file during program run.
Program has detailed logging configured by default (by default conversion.log in current working directory) - in case of problems, take a look there first.
>>> ./fb2c
NAME:
fb2converter - fb2 conversion engine
USAGE:
fb2c [global options] command [command options] [arguments...]
VERSION:
"program version" ("go runtime version") : "git sha string"
COMMANDS:
convert Converts FB2 file(s) to specified format
synccovers Extracts thumbnails from documents (Kindle only!)
dumpconfig Dumps active configuration (JSON)
export Exports built-in resources for customization
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--config FILE, -c FILE load configuration from FILE (YAML, TOML or JSON). if FILE is "-" JSON will be expected from STDIN (accepts multiple inputs)
--debug, -d prepare archive with details of a current run (may overwrite some log settings) (default: false)
--help, -h show help (default: false)
--version, -v print the version (default: false)
Additional help for any command could be obtained by running ./fb2c help COMMAND-NAME
.
In order to convert all fb2 files in c:\books\to-read
directory and get results in d:\out
directory without keeping original subdirectory structure
sending files to Kindle via e-mail in process execute
fb2c.exe convert --nodirs --stk --to epub c:\books\to-read d:\out
If you want resulting mobi files to be located alongside with original files, do something like
fb2c.exe convert --to mobi c:\books\to-read c:\books\to-read
Windows builds come with full MyHomeLib support. Just make sure that your MyHomeLib\converters
directory does not contain old
fb2mobi
and/or fb2epub
subdirectories and unpack fb2c_win32.zip
or fb2c_win64.zip
there. It is a drop-in replacement and should be functional out of the box in most cases.
fb2mobi.exe
looks forfb2mobi.toml
in its directory (similarlyfb2epub.exe
looks forfb2epub.toml
), so any additional customization is easy.- Do not install MyHomeLib in either
%ProgramFiles%
or%ProgramFiles(x86)%
directory - it is bad idea. Since for regular user accounts In Windows those places are write-protected you will have difficulties copying converters there and converters will have problems creating conversion logs which are enabled by default.
- Starting with version 1.62.0 "Send to Kindle" functionality supported for EPUB files only. This reflects current Amazon intention to completely drop MOBI support on backend. As the result converter drops "transfer" subcommand, disables sending of MOBI files via e-mail and moves support for this from
fb2mobi
tofb2epub
. - Starting with version 1.64.0
--debug
flag produces zip archive with artifacts for debugging either in directory of the converter or if it is inaccessible in temporary directory. Environment variable FB2C_DEBUG set to "Yes" could be used withfb2epub.exe
andfb2mobi.exe
for similar effect. Resulting archive could be shared to facilitate troubleshooting.