尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何用 calibre 把电子书转换为带页眉页脚和可打印目录的 PDF

如何用 calibre 把电子书转换为带页眉页脚和可打印目录的 PDF 如何用 calibre 把电子书转换为带页眉页脚和可打印目录的 PDF【免费下载链接】calibreThe official source code repository for the calibre ebook manager项目地址: https://gitcode.com/GitHub_Trending/ca/calibre把电子书转成 PDF 后如果要打印通常需要三样东西每页带页码和书名/作者的页眉页脚、书末一份列出各节页码的目录以及电子阅读时的跳转结构。calibre 的转换系统对这三点都有对应支持页眉页脚模板、可打印目录printable Table of Contents和默认生成的 PDF Outline。本文基于 manual/conversion.rst 中 “Converting to PDF” 及相关章节给出从确认目录、配置模板到验证结果的完整路径操作界面是 calibre 转换对话框的PDF Output部分命令行等价做法在文末。前提已安装 calibreGUI 或ebook-convert均可用电子书已加入书库或已有本地文件。输入格式优先选 HTML/EPUB 这类结构清晰的格式以 PDF 作为输入时限制较多见文末“限制与边界”。先让文档有可用的目录可打印目录和页眉中的_SECTION_变量都依赖文档自身的目录。manual 明确说明_SECTION_的名字“taken from the metadata Table of Contents in the document (the PDF Outline)”如果文档没有目录该变量会被替换为空文本。所以第一步是确认目录能被正确生成。calibre 生成目录的规则见 manual/conversion.rst 的 Table of Contents 章节输入文档元数据里已有目录时calibre 直接使用它否则基于正文内容自动生成优先加入“检测到的章节”章节检测由Structure detection部分的 XPath 控制默认表达式匹配含 chapter/book/section/part 字样的h1/h2或classchapter的标签检测到的章节数未达到Chapter threshold时再从正文超链接补充数量由Number of links控制设为 0 则不加入链接也可以跳过自动检测用Level 1,2,3 TOC直接指定多级目录的 XPath例如Level 1 TOC: //h:h1、Level 2 TOC: //h:h2TOC Filter是一个正则按条目标题过滤生成结果例如Next|Previous可删掉所有标题为 Next 或 Previous 的条目。如果自动生成的目录不准manual 给了手工路线转换到 EPUB 或 AZW3 时勾选 Table of Contents 部分的Manually fine-tune the Table of Contents after conversion转换完成后会启动 ToC Editor点击正文位置即可添加目录条目也可以在Preferences - Interface - Toolbars里把ToC Editor加到主工具栏对已有书籍单独使用。注意一个边界PDF 作为输入格式时“Links and Tables of Contents are not supported”也就是说从 PDF 转 PDF 时文档原有的目录和链接无法被提取可打印目录和_SECTION_可能拿不到内容。在 PDF Output 中配置页眉页脚选中书库中的书籍打开转换对话框Convert books页眉页脚相关设置都在PDF Output部分。manual 说明模板就是渲染在页眉/页脚位置的 HTML 代码片段calibre 会自动替换其中的变量。先决定页面大小这是 manual 列为转 PDF 时“第一个也是最重要的设置”默认页面大小是 U.S. Letter可在PDF Output部分改为其他标准尺寸或完全自定义的尺寸如果 PDF 是给某个特定设备看的可以开启“使用输出 profile 的页面大小”选项。以下是 manual 给出的模板示例可按需组合使用页脚居中显示绿色页码_PAGENUM_自动替换为当前页码footerdiv stylemargin: auto; color: green_PAGENUM_/div/footer奇数页显示标题、偶数页显示作者右对齐justify-content: flex-end使文本右对齐header stylejustify-content: flex-end div classeven-page_AUTHOR_/div div classodd-pagei_TITLE_/i/div /header标题在左、作者在右字号小于正文header stylejustify-content: space-between; font-size: smaller div_TITLE_/div div_AUTHOR_/div /header在页眉显示当前小节名取自文档目录headerdiv_SECTION_/div/header如果一页上出现多个小节使用该页的第一个小节_TOP_LEVEL_SECTION_变量则取当前顶级小节名。模板里还可以写 JavaScript。例如让页码从 4 而不是 1 开始footer div/div scriptdocument.currentScript.parentNode.querySelector(div).innerHTML (_PAGENUM_ 3)/script /footer除_PAGENUM_、_TITLE_、_AUTHOR_、_SECTION_、_TOP_LEVEL_SECTION_外manual 还列出这些变量_TOTAL_PAGES_PDF 总页数、_TOP_LEVEL_SECTION_PAGES_当前顶级小节总页数、_TOP_LEVEL_SECTION_PAGENUM_当前页在顶级小节内的页码、_WIDTH_PIXELS_和_HEIGHT_PIXELS_页眉/页脚区域的像素宽高。最后一步别漏manual 的 note 提示开启页眉页脚后要在PDF Output部分把页面上下边距设为足够大的值否则正文会与页眉页脚重叠。在 PDF 末尾生成可打印目录PDF Output部分提供 “Add a Table of Contents at the end of the PDF that lists page numbers” 选项对应源码选项pdf_add_toc见 src/calibre/ebooks/conversion/plugins/pdf_output.py。开启后calibre 会在 PDF 末尾插入一份列出每个小节页码的目录。manual 指出它主要用于打印场景如果 PDF 是在电子设备上看PDF Outline 本身就能提供章节跳转且默认就会生成可打印目录不是必须的。生成目录的外观可以用 Look feel 部分的Extra CSS设置定制。manual 列出了默认使用的 CSS可以直接复制后修改.calibre-pdf-toc table { width: 100% } .calibre-pdf-toc table tr td:last-of-type { text-align: right } .calibre-pdf-toc .level-0 { font-size: larger; } .calibre-pdf-toc .level-1 td:first-of-type { padding-left: 1.4em } .calibre-pdf-toc .level-2 td:first-of-type { padding-left: 2.8em }另外注意并非所有输出格式都支持多级目录manual 的建议是先用 EPUB 输出验证多级Level 1,2,3 TOC设置是否生效再切换到目标格式。用 ebook-convert 完成同样的转换manual/conversion.rst 开头说明转换对话框里的所有设置也都能通过ebook-convert命令行使用。PDF 输出选项名定义在 src/calibre/ebooks/conversion/plugins/pdf_output.py命令行参数是选项名的连字符形式calibre 转换选项的通用写法手册示例命令中的--level1-toc、--page-breaks-before同为该形式。下面的命令一次完成页面尺寸、页眉页脚与可打印目录的配置book.epub是待转换的输入文件book.pdf是输出文件名按实际情况替换ebook-convert book.epub book.pdf \ --paper-size a4 \ --pdf-header-template header stylejustify-content: space-betweendiv_TITLE_/divdiv_AUTHOR_/div/header \ --pdf-footer-template footerdiv stylemargin: auto; color: green_PAGENUM_/div/footer \ --pdf-add-toc其中--paper-size的可选值包括a0–a6、b0–b6、legal、letter默认letter即 U.S. Letter。页边距对应--pdf-page-margin-top/--pdf-page-margin-bottom等参数源码中默认推荐值为 72pt由于页眉页脚需要上下边距足够大可按需显式加大。如果输入文档的标题不是h1可参照 manual 中Level 1 TOC的 XPath 写法追加--level1-toc参数来指定目录层级。验证转换结果打开生成的 PDF每页页眉页脚内容应与模板一致——页码是真实页码而非_PAGENUM_字样标题/作者被替换为书籍元数据书末出现列出各节页码的目录。在电子阅读器或 PDF 查看器中确认 PDF Outline 存在并可跳转到各章节默认生成。如果页眉里的_SECTION_显示为空说明文档没有目录回到“先让文档有可用的目录”一节处理输入文档。怀疑设置没有生效时可以查看实际使用的参数点击转换对话框右下角的旋转图标双击对应的转换任务转换日志顶部会列出本次转换实际使用的设置。calibre 还会按书记住上次转换所用的设置再次转换同一本书时优先使用这些单独保存的设置可用对话框里的Restore defaults恢复默认。需要调试中间产物时使用转换对话框的 debug 选项并指定一个输出文件夹转换过程中 calibre 会把各阶段的 XHTML 写入子文件夹其中processed是传给输出插件之前的 XHTML适合排查 PDF 输出阶段的问题。限制与边界PDF 是“worst formats to convert from”之一manual 原话。如果输入 PDF 本身带页眉页脚这些文字会混入正文应当先用转换对话框的Search and replace面板正则匹配旁边有 magic wand 向导输入表达式后点 Test 可高亮预览匹配结果删除未清除的页眉页脚还会干扰段落展开line unwrapping。PDF 输入的具体限制包括不支持复杂多栏和图片为主的文档、不能提取矢量图和表格、不支持原生的链接与目录、嵌入非 Unicode 字体会产生乱码。pdf_page_numbers选项可以给每页底部加页码但指定了页脚模板时模板优先于该选项见 src/calibre/ebooks/conversion/plugins/pdf_output.py 中该选项的说明所以有页脚模板时不必再开它。本文路径以 GUI 转换对话框为主要操作方式calibre 的版本更新可能调整界面文案以你本地版本的对话框实际内容为准。【免费下载链接】calibreThe official source code repository for the calibre ebook manager项目地址: https://gitcode.com/GitHub_Trending/ca/calibre创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表