ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

calibre E-book Viewer 完全指南:从日常翻页到源码级定制

calibre E-book Viewer 完全指南:从日常翻页到源码级定制 calibre E-book Viewer 完全指南从日常翻页到源码级定制【免费下载链接】calibreThe official source code repository for the calibre ebook manager项目地址: https://gitcode.com/GitHub_Trending/ca/calibrecalibre 内置的 E-book Viewer 是官方源码仓库GitHub_Trending/ca/calibre中功能最完整的电子书阅读组件支持打开全部主流电子书格式并提供分页/流动双模式、书签、高亮注释、全文搜索、朗读、词典查询与深度界面定制等能力。本篇指南以官方用户手册 manual/viewer.rst 为主线结合src/calibre/gui2/viewer/下的真实源码实现展开讲解读完你既能熟练使用每项阅读功能也能理解其底层工作原理并学会为自己的电子书编写针对该阅读器的专属 CSS。启动 E-book Viewer在 calibre 主界面中选中书库中的任意一本书并点击工具栏的View按钮即可在 E-book Viewer 中打开该书。除此之外阅读器也可以脱离主程序独立启动Windows从开始菜单启动 E-book ViewermacOS将其固定到 Dock 后从 Dock 启动Linux使用桌面菜单中的启动器或在终端运行命令ebook-viewer。从源码结构看独立启动入口位于 src/calibre/gui2/viewer/main.py其中option_parser()负责解析命令行参数而仓库根目录下的 develop/ebook-viewer 是开发环境中的可执行脚本。打开一本书时阅读器会通过 convert_book.py 的prepare_book()将书籍预处理到本地缓存目录book_cache_dir()后续再次打开同一本书可直接命中缓存加快加载速度。页面导航与双阅读模式翻页的三种方式在书中翻页可以通过以下任意方式完成用鼠标点击页面左侧或右侧页边距区域按spacebar、page up、page down或方向键在触摸屏上点按文本或左右滑动。阅读器控件工具栏可通过以下方式调出在文本上点击鼠标右键按Esc或Menu键在触摸屏上点按屏幕顶部 1/3 区域。Paged 与 Flow 两种模式阅读器存在两种内容布局模式Paged分页模式内容像纸质书一样按页呈现方向键上下翻动时整屏切换Flow流动模式文本像网页浏览器中那样连续滚动。切换方式有两种通过阅读器控件中的Preferences → Page layout设置或直接按快捷键CtrlM。在源码 toolbars.py 中可以看到阅读模式按钮update_mode_action()会实时同步界面状态而在 web_view.py 中模式切换最终通过bridge消息通道驱动渲染层完成布局重建。书签与阅读位置记忆自动记忆阅读位置当你在书中读到一半关闭阅读器时它会自动记住当前阅读位置下次打开这本书时直接回到上次停下的地方对应 ui.py 中的save_state()/restore_state()与initial_cfi_for_current_book()逻辑。手动书签点击阅读器控件中的Bookmarks按钮或按CtrlB可添加书签。对于 EPUB 格式书籍书签实际被写回 EPUB 文件本身见 annotations.py 的save_annots_to_epub()。这意味着你可以添加书签后把文件发给朋友对方打开时能看到你留下的书签。若不想让书签写入文件可在阅读器偏好设置的Miscellaneous部分关闭该行为。书签面板还支持导入、导出与排序这些功能由 bookmarks.py 中的export_bookmarks()、import_bookmarks()等方法实现。目录Table of Contents导航如果当前书籍定义了目录点击控件中的Table of Contents按钮即可打开目录列表点击任意章节标题即可跳转到对应内容。目录面板还内置了搜索框实现按关键词定位目录条目并支持在当前阅读章节与目录树节点之间自动联动高亮相关实现集中在 toc.py。按位置精确导航电子书不像纸质书有固定页码因此 calibre 提供了一套不依赖页面的位置Location体系通过控件中的Go to → Location可以输入位置信息精确跳转在Go to → Location中可以将当前位置复制为一条calibre://URL 到剪贴板粘贴到其他程序或文档中点击该 URL 会在 calibre E-book Viewer 中打开对应书籍并定位到该位置点击书内链接如脚注跳转后可使用控件左上角的Back与Forward按钮回退/前进行为与浏览器一致。位置体系底层由 CFICanonical Fragment Identifier驱动源码中goto_cfi()、get_current_cfi()web_view.py负责跳转与取回当前 CFIui.py 的cfi_changed()则持续跟踪阅读进度。Reference mode引用模式点击控件中的Reference mode按钮开启引用模式后每个段落开头都会显示一个由章节号 段落号组成的唯一编号。你可以用这个编号与朋友讨论书籍时无歧义地指代某处内容也可以在Go to function跳转功能快捷键CtrlG、;、:中输入该编号直接定位。该模式在 toolbars.py 中对应toggle_reference_mode动作界面状态通过update_reference_mode_action()与渲染层同步。高亮与注释创建高亮在阅读器中选中文本后选区旁会弹出一个小工具条点击其中的高亮按钮即可创建高亮你还可以为高亮添加笔记并更改高亮颜色。触摸屏上长按单词即可选中并弹出工具条进入高亮模式后可通过触摸友好的选择手柄调整选区将手柄拖到屏幕顶部或底部边缘可边选边滚动。Shift点击或右键点击可扩展选区尤其适合跨多页连续选择。浏览与管理高亮点击控件中的Highlights按钮快捷键CtrlH可打开独立面板按章节列出书中全部高亮在 calibre 主界面中右键点击 View 按钮并选择 Browse annotations可浏览整个书库中所有书的高亮与笔记高亮面板支持按颜色样式过滤、编辑笔记、删除与导出highlights.py 中的export()、apply_filters()等。与 Content server 浏览器阅读器同步如果你使用 calibre Content server 的浏览器内置阅读器可以在阅读器偏好Preferences → Miscellaneous中输入 Content server 阅读器的用户名使桌面阅读器与浏览器阅读器同步注释使用特殊值*可同步匿名用户。源码层面同步用户参数以sync_annots_user贯穿 annotations.py 与 integration.py最终把注释写回书库或书籍文件。Read aloud朗读点击控件中的Read aloud按钮即可开始朗读当前书籍文本正在朗读的单词或句子会高亮显示。语音合成使用Piper神经 TTS 引擎或操作系统自带的文本转语音服务点击朗读时出现的工具条上的齿轮图标可切换后端与语音。你还可以把Read aloud按钮加入选区工具条阅读器偏好 →Selection behavior这样选中一段文字后即可直接朗读该段落。该功能在 tts.py 中实现支持播放、暂停、继续、变速slower/faster等控制。注意浏览器中的文本转语音支持很不完整且 bug 较多因此浏览器阅读器中朗读效果取决于底层浏览器对 TTS 的支持程度。全文搜索按CtrlF或通过控件打开搜索框。搜索输入框下方的搜索模式决定了搜索行为共有四种模式Contains包含默认模式。在全文任意位置搜索输入文本忽略所有标点、重音和空格。例如搜索Pena会匹配penal、pen a、pen.a和Peña。勾选Case sensitive区分大小写后重音、空格和标点不再被忽略。Whole words整词按整词搜索。例如pena会匹配Peña但不会匹配Penal。与 Contains 相同除非勾选区分大小写否则忽略重音与标点。Nearby words邻近词搜索彼此靠近的整词。例如calibre cool会匹配calibre与cool出现在六十个字符以内的所有位置。要改变间距在词列表末尾追加数字如calibre cool awesome 120表示三个词出现在 120 字符以内。注意邻近词搜索不忽略标点与重音。Regex正则表达式将搜索文本解释为正则表达式。正则语法可参考 manual/regexp.rst 正则表达式教程。源码印证search.pyContains 模式的核心是text_to_regex()——它把输入中的空白映射为\s、把引号字符映射为字符类quote_map并允许零宽不可见字符软连字符等穿插在字符之间整词模式为每个词加\b边界第 138–142 行邻近词模式由words_and_interval_for_near()解析默认间隔常量即default_interval60并以. {1,interval}作为词间连接正则第 101–111、149–159 行未勾选区分大小写时编译正则附加IGNORECASE标志regex_flags。Hints mode纯键盘点击链接阅读器提供Hints mode提示模式允许不使用鼠标点击文本中的链接。按AltF后当前屏幕上的所有链接都会被标上一个数字或字母直接按对应按键即可点击该链接按Esc取消 Hints mode 且不选中任何链接。若屏幕上的链接超过 35 个部分链接会分配多个字母此时需依次输入第一个和第二个字母或输入第一个字母后按Enter来激活输入出错可按Backspace撤销。定制阅读体验即时字号调节使用控件中的Font size或快捷键Ctrl、Ctrl-也可以按住Ctrl键滚动鼠标滚轮。颜色与页面布局颜色在阅读器偏好Colors部分修改每屏显示页数及页边距在Preferences → Page layout中调整快捷键Ctrl]/Ctrl[增减页数CtrlAltC设为自动通过Headers and footers可在页眉/页脚显示自定义信息例如剩余阅读时间、当前章节标题、书内位置等。高级样式Styles更深入的定制在Styles设置中完成可以指定显示在文本下方的背景图片也可以提供一个应用于所有书籍的自定义样式表用来改变段落样式、文本对齐等。Profiles配置档按AltP可快速创建并切换到不同的配置档profiles让多套阅读偏好字号、配色、布局等一键切换。配置档的存取由 config.py 的load_viewer_profiles()/save_viewer_profile()管理菜单生成与切换在 toolbars.py 中完成。处理不可重排内容Non re-flowable content部分书籍包含无法在页边界断行的超宽内容如表格或pre标签。遇到这类内容时应按CtrlM切换到flow mode阅读或者在偏好Styles中添加以下 CSS强制pre标签内的文本自动换行code, pre { white-space: pre-wrap }词典查询与自定义查询源查询单词在书中双击触摸屏长按要查询的单词然后点击形似图书馆的查询按钮即可在查询面板中查看释义。面板内置了 Google dictionary、Wordnik 等查询源lookup.py 中的google_dictionary及special_processor机制即用于处理这类内置源。自定义查询源除内置查询源外你可以添加自己的查询源打开Lookup面板点击Add sources点击Add输入名称和 URL 模板URL 中的占位符{word}会在查询时被替换为选中的单词还可以将某个查询源限制到特定书籍语言仅当书籍语言匹配时才启用该源。利用这一点可以把阅读器指向任何按词生成 URL的在线词典甚至指向本机运行的 HTTP 服务。例如模板http://127.0.0.1:8000/{word}会查询本地运行的词典服务适合离线阅读或使用无在线版本的词典。复制文本与图片用鼠标拖动选中文本或图片内容后点击右键并选择Copy即可复制到剪贴板复制的内容可以以纯文本和图片形式粘贴到其他应用中。图片放大查看双击触摸屏长按图片即可在独立窗口中按原始尺寸查看也可以右键点击图片并选择View image。与纸版同步某些具有对应纸质版的电子书会包含标记每个纸质页起始位置的元数据。对于这类书通过控件中的Go to按钮可直接跳转到指定纸质版页码在阅读器设置中把Pages from paper edition添加到页眉或页脚即可在阅读时显示当前位置对应的纸质版页码。键盘快捷键大全阅读器与 calibre 其他部分一样提供了大量键盘快捷键且全部可以在阅读器Preferences中自定义。默认快捷键如下表快捷键功能Home, CtrlArrowUp, CtrlArrowLeft滚动到多文件书籍中当前文件的开头CtrlHome滚动到全书开头CtrlEnd滚动到全书结尾End, CtrlArrowDown, CtrlArrowRight滚动到多文件书籍中当前文件的结尾ArrowUp向后滚动flow 模式平滑滚动paged 模式整屏滚动ArrowDown向前滚动flow 模式平滑滚动paged 模式整屏滚动ArrowLeft向左滚动flow 模式小幅paged 模式一页ArrowRight向右滚动flow 模式小幅paged 模式一页PageUp, ShiftSpacebar整屏向后滚动PageDown, Spacebar整屏向前滚动CtrlPageUp滚动到上一章节CtrlPageDown滚动到下一章节AltArrowLeft后退BackAltArrowRight前进ForwardCtrlT切换目录面板CtrlS朗读Read aloudAltP创建/切换设置配置档profilesAltf键盘模式点击链接CtrlC复制到剪贴板AltC复制当前位置到剪贴板CtrlShiftC以 calibre:// URL 形式复制当前位置/、Ctrlf、Cmdf开始搜索F3, Enter查找下一个ShiftF3, ShiftEnter查找上一个CtrlPlus, MetaPlus增大字号CtrlMinus, MetaMinus减小字号Ctrl0恢复默认字号Ctrl]增加每屏页数Ctrl[减少每屏页数CtrlAltC每屏页数设为自动F11, CtrlShiftF切换全屏CtrlM切换 Paged/Flow 布局模式CtrlW切换滚动条显示CtrlX切换 Reference modeCtrlB显示/隐藏书签CtrlAltB新建书签CtrlN, CtrlE显示书籍元数据CtrlAltF5, CtrlAltR重新加载书籍CtrlShiftArrowRight按词向前扩展选区CtrlShiftArrowLeft按词向后扩展选区ShiftArrowRight按字符向前扩展选区ShiftArrowLeft按字符向后扩展选区ShiftArrowDown按行向前扩展选区ShiftHome扩展到行首ShiftEnd扩展到行尾CtrlA全选ShiftArrowUp按行向后扩展选区CtrlShiftArrowDown按段落向前扩展选区CtrlShiftArrowUp按段落向后扩展选区Esc, MenuKey显示阅读器控件CtrlComma, CtrlEsc, MetaEsc, MetaComma显示阅读器偏好设置CtrlG, ;, :跳转到指定位置CtrlSpacebar切换自动滚动AltArrowUp自动滚动加速AltArrowDown自动滚动减速CtrlI显示/隐藏 Inspector开发者检查器CtrlL显示/隐藏词典查询面板CtrlQmacOS 为CmdQ退出CtrlP将书籍打印为 PDFprinting.py 的print_book()CtrlF11切换工具栏显示CtrlH切换高亮面板CtrlD在编辑器中编辑当前书籍为 calibre E-book Viewer 设计书籍如果你的书是自制的 EPUB可以针对 calibre 阅读器做精细化适配。阅读器会在根元素上设置is-calibre-viewerclass因此可以编写仅对该阅读器生效的 CSS 规则。此外它还会在body元素上设置以下 classclass含义body.calibre-viewer-dark-colors使用深色配色方案时设置body.calibre-viewer-light-colors使用浅色配色方案时设置body.calibre-viewer-paginated处于分页paged模式时设置body.calibre-viewer-scrolling处于流动flow/非分页模式时设置body.calibre-footnote-container显示弹出式脚注时设置最后阅读器还把配色方案以 CSS 变量形式暴露给书籍内容--calibre-viewer-background-color当前背景色--calibre-viewer-foreground-color当前前景文字色--calibre-viewer-link-color仅在定义了链接颜色的配色主题中提供。利用这些变量书籍样式可以自动跟随阅读器的明暗主题切换例如让正文颜色始终与阅读器背景保持高对比度从而获得一致、舒适的阅读体验。小结从启动方式、双布局模式、书签/位置/引用体系到高亮注释、朗读、四模式全文搜索、纯键盘链接、词典自定义源再到全套可自定义快捷键与面向书籍作者的 CSS 适配接口calibre E-book Viewer 把阅读这件事做成了一个高度工程化的子系统。若想进一步深入可直接阅读 src/calibre/gui2/viewer/ 下的search.py、web_view.py、annotations.py、bookmarks.py等模块官方手册 manual/viewer.rst 与正则教程 manual/regexp.rst 则是理解其全部能力的权威参考。【免费下载链接】calibreThe official source code repository for the calibre ebook manager项目地址: https://gitcode.com/GitHub_Trending/ca/calibre创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表