本文最后更新:2012-02-20,使用calibre版本0.8.40。
最近因为开发盛大锦书Bambook的SNB格式的calibre插件,更多的使用了calibre和研究了它的实现,也在论坛上看很多对calibre使用上的问题。干脆在这里写上一贴,把常见问题(尤其是中文相关的问题)做一总结。本文会不定期更新。
- 什么是calibre?
calibre是一个一站式的电子书籍管理软件,提供电子书籍管理、元信息整理、格式转换、阅读设备书籍同步、新闻下载等功能。可以近似把它类比为电子书界的iTunes。它使用Python开发,是一个跨平台的自由软件。
calibre不是一个电子书下载软件,它只能从网上下载书籍的信息,但不能下载书籍本身。calibre不是电子书制作工具,虽然它提供格式转换功能,且在转换过程中提供一些定制功能,但这些功能非常有限,并不能用于精细控制和从头制作电子书。
- calibre的优缺点
优点是功能全,可定制化程度高,可以折腾。缺点是体积庞大、速度慢、BUG较多(不过修得很快)。
- 中文TXT文件转换成别的格式后全部变为乱码
因为Windows上大部分中文TXT文件是用System Codepage编码的,而calibre默认用UTF-8编码解析。解决方法是:可以把文件转成UTF-8编码后再放入calibre转换格式;也可以在calibre的转换对话框(在主界面上选一个文件,点“转换书籍”,或按C键)中左边选择“外观”,然后在右侧的“输入字符编码”中填入“gbk”或“gb18030”,calibre就可以正常转换格式了。必要的时候也可以在也“首选项”->“常规选项“中的”外观“设置组中做全局的设置。
- 中文文档转换后内容全部变成拼音
在calibre的转换对话框中左边选择“外观”,去掉“转换unidcode字符到ASCII”的选项。
- 自动生成的封面图片中的中文字符变成问号
calibre自带并硬编码了一些字体文件,这些字体中不包含中文字符,渲染出来的图片就只能显示成问号了。解决方案是:打开首选项->优化调整->设置在生成默认封面时所使用的字体,分别修改generate_cover_foot_font和 generate_cover_title_font的值来改变封面标题和页脚的字体。比如:generate_cover_title_font=”c:\\windows\\fonts\\simhei.ttf”就可以改用黑体。修改后需要重启calibre才可以生效。如果电脑上没有 simhei.ttf这个字体,也可以换成任意路径下的任意字符文件。
对于0.7.25以前版本的用户:用中文字体替换掉英文字体:在calibre安装目录下找到resources\fonts \liberation目录,用中文字体(比如文泉驿微米黑)替换掉里面的LiberationMono-Regular.ttf和LiberationSerif-Bold.ttf即可(删除原来的字体文件,把中文字体文件放进去并改名成这两个名字)。
还有一个解决方案是直接安装Generate Cover插件,用它可以更精细的定制生成的封面样式。可以在首选项->插件->获取新的插件中直接在线安装。
- “保存到磁盘”和“发送到设备”后中文文件名变为拼音
为了保证在各个平台各种文件系统下文件都可以正常的保存,calibre的作者采用了把非英语字符转为英语字符的方式来解决多语言文件名,中文就变成拼音了。对于“保存到磁盘”,可以去掉“首选项”->“保存图书到磁盘”->“将非英语字符转换为对应英语字符”的选项来强制calibre以原始字符保存文件名。不过这个功能有Bug,对于有些字符,保存后会乱码。对于“发送到设备”,目前没有解决方案。不过总的来说,只有极少数阅读器设备(如iRiver Story)的书架是用文件名而不是用图书元信息来显示的,所以对大部分阅读器而言即使用拼音文件名也不会带来太多的不便。
- 什么叫“排序作者”?
老外的名字常常是名在前,姓在后,而称呼他们的时候又常常要用姓。比如Bill Gates,我们通常称呼他为Gates,这样如果直接用Bill Gates来排序所有的作者,就会不太好找。为了解决这个问题,常常就把“作者”字段设为“Bill Gates”,把“排序作者”字段设为“Gates, Bill”,这样就又好看又好找了。对于中文书籍的作者字段来说,其实是基本不存在这个问题的,直接把两个字段设成相同的就可以了。所以“排序作者”的实际含义是“用于排序的作者名字表示方式”,只不过这个词实在不知道有什么好的翻译方式,就只好用了这个生硬而难以理解的直译。
同理,还有“排序标题”也是类似的意思,就是“用来排序的标题”。
- 元数据字段太少,可以自定义增加吗?
在“首选项”中的“增加栏目“中添加自定义字段。添加后在书籍列表中就会出现相应的列,在编辑元数据对话框中会多出”自定义元数据“的页面。
- 书籍在calibre的书库中保存时,能不能不要用拼音文件名?
不能,calibre的作者不会针对这个问题有任何的改变。因为calibre就是这么设计的,它希望你通过它的界面去操作它所管理的文件,并不希望你直接去碰它的书库目录,而且用拼音保存可以有最好的跨平台和跨文件系统的支持。
- 用calibre抓取新闻时常常抓不下来
你可以提交一个Bug报告给calibre项目或我,附上抓新闻的任务的日志。这类问题需要一个个有针对性的分析。不过有一点要提醒的是:在国内因为众所周知的原因,有些网站和RSS提供商是无法访问的,Google Reader也可能会间歇性的无法访问,你可能要先设法排除一下是不是这个原因引起的新闻抓取失败。
- 任何阅读书籍或书籍格式转换任务都失败。日志中有UnicodeDecodeError字样的错误
可能是由于Windows的用户名中包含非英文字符,导致临时文件目录路径中包含非英文符。 calibre在处理非英文临时文件目录时有问题,这个Bug我正在分析与处理中。
暂时的解决方案是:在“我的电脑”上右键点击“属性”,然后选择“高级”,再点“环境变量”,在变量TEMP和TMP上面点“编辑”,把原来的默认值%USERPROFILE%\Local Settings\Temp改为不包含非中文字符的路径,比如C:\Temp。
如果您有任何有关calibre的问题,可以下面留言提出,我会尽量解答并挑选有代表性的放入正文。我也会不定期更新本文,添加更多常见的问题和calibre的使用技巧。
我按照您说的。 在calibre上改的能看了。生成的epub,中文可以正常显示了。但放到Nook上,还一样是问号。。。
@xinwen
Nook对中文的支持不太好,如果epub没有内嵌字体或字体路径有问题就会出来问号。
我没有Nook设备,所以无法帮您测试,只能帮您找到几篇网上的文章,供参考:
http://www.by-smart.com/html/2/2-474.html
http://www.by-smart.com/html/2/2-475.html
这两篇文章分析的比较深入,也提供了一些解决方案,就是比较复杂难懂。
http://www.cnepub.com/discuz/thread-19471-1-1.html
这里说了一个在calibre上可能可行的方案。
看起来Nook中文显示问号的问题是一个比较常见的问题,您也可以自己再找找相关的资料,找到适合您的解决方案。
因为Windows上大部分中文TXT文件是用System Codepage编码的,而calibre默认用UTF-8编码解析。解决方法是:可以把文件转成UTF-8编码后再放入calibre转换格式;也可以在calibre的转换对话框中左边选择“外观”,然后在右侧的“输入字符编码”中填入“gbk”或“gb18030”,calibre就可以正常转换格式了。
但是在软件中找平到“外观“及其内容?
@楼上
就是在转换操作的对话框中(在主界面上选一个文件,点“转换书籍”,或按C键),左边可以选“外观”设置组,右边进行设置。也可以在“首选项”->“常规选项“中的”外观“设置组中做全局的设置。
今天转换一本TXT文本,确发现转换后文字重叠。不知是何原因?
@楼上
把TXT转成什么格式?在什么设备上阅读?如果可以的话,请把转换前后的文件发到我的邮箱。
我按您的建议, 可以转换中文小说了。 谢谢!
calibre中如何分别控制行距?全文中只能有一种行距吗?
@fatbrain
只能有一种行距。要不就只能自己定义CSS了,不过这样也很受限于calibre生成的html中预定义好的一些元素。你可以用“调整ePub“功能把epub文件解开,然后看里面的html和css,如果有可以调整的余地,就在转换对话框中的“外观”中添加一些额外的CSS。
感谢楼主的文章,我是最近才发现calibre这个软件,非常激动啊,哈,找了好久才找到这么好的个人图书管理软件。
几个问题请教:
1 元数据字段太少,可以自定义增加吗:比如:TITLE 需要分为 英文书名和中文译名,作者需分为:原作者和译者,增加语言等等
2 增加一本书之后,软件自己解析的作者往往是错误的,在元数据里修改之后,又会生成一个新的文件夹路径,同时拷贝一份新的电子书文档,感觉比较浪费硬盘空间,可否修改
3 显示界面书籍信息的排序是否可以调整?
再次感谢楼主的文章,同时感谢Caliber的作者
@徐胜
1. 在“首选项”中的“增加栏目“中添加自定义字段。添加后在书籍列表中就会出现相应的列,在编辑元数据对话框中会多出”自定义元数据“的页面。
2. 没有重现您说的问题,修改元数据后书籍会移到新的目录中。请告诉你可以重现问题的calibre版本和步骤。
3. 点击书籍列表的标题字段就可对书籍按指定字段排序。似乎不支持随意调整排列顺序。
使用calibre 生成的mobi 文件统一不能使用add to collection 这个功能,其他的mobi文件倒是可以
@atpking
可以详述一下问题和重视步骤么?Add to collection这个功能我不太了解,是针对Kindle的吗?您可以直接去calibre网站提交ticket,也可以在这里描述一下问题,我代为提交ticket。
您好,将一个背单词的pdf文档转换为epub,原本好端端的音标文件成了乱七八遭的大写英文字母,音标不能认了,请问您有什么好的解决建议吗?
@liu
对于PDF文件,我的建议就是最好不要转,似乎还没有什么软件可以完美的转换PDF格式的。
音标的问题,要看pdf文件里内部原来存的是什么东西,可能是unicode字符,也可能是内嵌了特殊的字体,还有可能是图片。按你说的音标变成大写字母的话,很可能是因为pdf中的音标是用特殊字体来显示的。如果可能,请发一个有问题的pdf文件到我的邮箱,我分析分析看看具体的原因。
请问,如何用这款软件生成参考文献格式或者是和endnote、bibtex等文献管理工具进行配合?感谢
请问,把书加入calibre的时候,能不能让它不转为拼音保存啊?
@vxzhong
不能,这个软件就是这么设计的,它希望让自己成为电子书管理的唯一入口,而不需要你去管理物理文件,所以从设计上它就希望你根本不要管它内部是怎么存储电子书文件的。
這個轉檔程式很好用
但是我想問假如轉檔轉太久是出了什麼問題(40分以上還停在1%)
我是用txt轉epub
我有很多都轉得過但是就幾本轉40-50分都沒有轉過停在1%
請大大幫我解決我的疑問 謝謝
calibre 把书籍发送到nook color上面以后,用FBreader找电子书相当困难,是否可以让calibre发送到一个nook color上的特定的文件夹里面?谢谢!能否回复到我邮箱。
@steven L
请把有问题的文件发给我看看。联系方式见本页面右侧。
已知calibre转某些大文件时效率极低下,而且会占大量内存,但这个问题一时半会儿不好解决。
@jonathan
我没有Nook Color,不好试验。但从calibre的设置来看,发送到Nook Color后应该会按{author_sort}/{title} – {authors}的格式来存放文件。如果这个方式不是你要的,可以到首选项->插件->Nook Color插件->定制插件中修改。
你好 现在我有批量的文件 因为标题排序的原因 导出为epub的时候 文件名和我设计的有很大的偏差 请问我怎么样批量处理排序标题或排序作者的问题呢!
楼主你好 我最近用calibre订阅中文新闻 但是订阅下载发现出标题之外的所有中文内容都是乱码 请问能有方法解决这个问题吗 叩谢!
@楼主
请告诉我你订的是哪个频道,也可以发一份乱码的文件给我看看。
Hi:
有个关于kindle的问题。通过软件calibre新闻抓取的有section 。直接用确定键就可以进入到目录,很好用。我非常需要这个功能!
可是我自己转的,就没有这个,只是普通的百分比进度条。
也给你发了邮件(有截图和mobi文件),期待收到你的回复^o^
很喜欢这个软件,请问可不可以支持标记已读、未读、正在读的插件?
@citywalker
邮件收到,研究中……有消息会通知你。
@书鱼知小
可以直接给书标上Tag,这样就可以很方便的分类了浏览了。也可以用“首选项”中“增加栏目“功能添加一个阅读进度的栏位。
请问,我的Kindle Touch用Calibre倒入后中文书名也是拼音,有解决方法么?
您好,
非常抱歉浪费您的宝贵时间。我在使用Calibre管理我的Kindle Touch的时候遇到两个问题希望向您请教:
1/ 当我在Calibre的书库中修改了一部分电子书的metadata,比如:把中文作者姓名前加上英文名用于排序,类似的对库中的书籍metadata数据进行了修改;如果这些书在修改前已经被传送到了Kindle上,如果要让Kindle上的书籍metadata同样被修改,是不是需要把书从Kindle中完全删除后重新传送?有没有办法只同步metadata?因为如果不全部删除而直接重新传送的话,Kindle上将会出现重复。
2/ 如果希望在Calibre中创建Collections,应该如何创建?如何才能让这个Collections和Kindle上手动创建的Collections同步?
如蒙解惑,感激不尽!可否回复到我的邮箱中?
已邮件回复。
简单的回答是:不能,不能。
你好 请教一下我通过Calibre修改Metadata后在Kindle Touch 书名还是显示问号的问题? 具体如这个帖子所示。
http://bbs.duokan.com/forum/thread-56095-1-1.html
奇怪的是世界通史和另外两本显示问号的书在Calibre里面的metadata设置都是一样的 语言都是中文。 唯一的区别是世界通史我是以前弄的或者说是别人弄好的。。
不知道这个和我操作系统语言的设置有没有关系。 我的操作系统都是英文。
多谢你的帮助!
我已经解决了 解决办法就是吧那个Mobi电子书用calibre convert 一次,从Mobi 到Mobi就可以了 这样新产生的Mobi电子书的metadata就正确了。
谢谢博主了
解决这个问题可以用你说的原格式转换一次的方式,不过这样速度比较慢,而且有可能会影响书的排版效果。建议可以把书“保存到磁盘”,因为那时会更新书籍中的元信息,然后再重新加入书库并发送到设备。
按理说calibre在把书发送到Kindle时是会更新Kindle上显示的书籍元信息的,但似乎也听说过这个功能在Kindle Touch上是不工作的。由于我没有Kindle设备,所以没办法进一步做实验验证了。抱歉。
谢谢回复 不过速度还挺好的 比存到磁盘上面再加入书库还简单些 直接原格式转换一次之后会把原来那个改名叫做Original 直接删掉之后再把新转换的发送到Kindle Touch就没有问题了
我觉得calibre在把书加入到库之后还是没改电子书那个文件的信息 只是自己加了另外一个文件来存储metadata信息 再传送的时候都传过去 但是Kindle不识别那个额外的文件 还是以电子书本身文件的metadata信息为准。。我试过Kindle Touch 和 Kindle 4, 都有这问题。 以前的Kindle 2 装多看也是这问题 只是duokan系统可以自己修改书名和作者 而且能输入中文 就没有那么烦人了。
经过这两天折腾把那个问题解决了之后发现Calibre真是好东西,获取新闻的功能配合amazon的个人文档服务 真是无敌了