# Obsidian Better Export PDF [English](./README.md) | 中文 Better Export PDF 是一个 Obsidian PDF 导出增强插件,与官方的 PDF 导出功能相比,增加了导出预览、导出书签大纲和给 PDF 添加页码等功能。 ## 功能 与官方导出 PDF 功能相比: - 🚀 支持导出预览 - 🎉 支持导出 PDF 带大纲书签 - 🛩️ 支持自定义页边距 - ✨ 支持自定义页眉/页脚(例如:添加页码) - 💥 支持将文档属性添加到 PDF 元数据中 - 🎇 支持导出的 PDF 时,保留文档内链接跳转 - 🎈 多个笔记文件(整个目录或者指定文件)合并打印到一个 PDF 文件中 - 🌸 整个目录中的笔记文件批量导出到单独的 PDF 文件中 - 🍬 支持导出任意尺寸 PDF,可以将所有内容导出为一页 - ... ... ## 安装 在官方商店中搜索 [`Better Export PDF`](obsidian://show-plugin?id=better-export-pdf) 安装。 ### 手动安装 1. 在 [Release](https://github.com/l1xnan/obsidian-better-export-pdf/releases) 页面,下载 zip 包 2. 解压到: `{VaultFolder}/.obsidian/plugins/` 3. 重启 Obdisian,并再插件管理器中启用插件。 或者用 [BRAT Plugin](https://obsidian.md/plugins?id=obsidian42-brat)。 ## 使用 1. 选择导出目标: - 在当前 Markdown 视图的右上角,点击更多选项,选择 `Better Export PDF`; - 打开命令面板,选择 `Better Export PDF: Export Current File to PDF`; - 在文件树中,右键文件夹选择`Export folder to PDF`。 2. 在弹出对话框中,修改相关配置。 3. 点击`Export`,选择导出路径,如果不用修改配置,可以直接按 `Enter` 键,触发导出操作。 ### 设置页眉/页脚 可以通过设置 `Header Template` and `Footer Template` 配置来设置页码, 例如: ```html
/
``` 可以实现类似 `3 / 5` 页码效果。详见[`.printToPDF(options)`](https://www.electronjs.org/docs/latest/api/webview-tag#webviewprinttopdfoptions)。 可以是任何合法的 HTML 片段,例如添加`base64`格式的图片: ```html
``` 可以在`frontMatter`中配置文档级别的页眉/页脚模板: - `headerTemplate` - `footerTemplate` ### 自定义导出样式 如果想进一步定制 PDF 导出样式,可以在`外观>CSS代码片段`中添加自定义的 CSS,例如自定义字体和字号(注意使用 `@media print {}` 包裹,避免影响非打印场景样式): ```css @media print { body { --font-interface-override: "霞鹜文楷" !important; --font-text-override: "霞鹜文楷" !important; --font-print-override: "霞鹜文楷" !important; --font-monospace-override: "霞鹜文楷等宽" !important; --font-text-size: 20px !important; font-family: "思源宋体" !important; } } ``` #### 分页 如果想自定控制分页,在 Markdown 中添加 ```html
``` 然后定义 css代码片段样式 ```css @media print { .break-page { /* 在此元素之前强制分页 */ break-before: page; /* 或者如果你想在元素之后分页,可以使用: */ /* break-after: page; */ /* 防止元素内部被分页打断(可选) */ break-inside: avoid; } } ``` 如果想实现1-3级标题自动分页,可以这样设置: ```css @media print { h1, h2, h3 { break-before: page; } } ``` 详细 CSS相关配置参见:[Printing - CSS | MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Media_queries/Printing),也可以将想要实现的分页效果询问大模型,让大模型给你可行的 CSS 片段。 ### 选择未启用的 CSS 片段 首先,在插件配置中启用 `Select CSS snippets` 选项。这时候在导出 PDF 的弹窗中可以看到 `CSS snippets` 选项,然后你可以选择在 `外观 > CSS 片段` 中没有全局启用的 CSS。 ### 导出背景 默认情况下,导出的 PDF 会删除主题所得带背景色,如果你需要这个背景色,可以`插件设置 > Print background` 配置中打开它。 ### 添加 PDF 元数据 可以通过配置文档的 `frontMatter` 给 PDF 添加元数据,支持的字段项有: - `title` - `author` - `keywords` - `created_at` - `updated_at` - `creator` - `producer` ### 多文件导出 #### 快速导出 侧边栏选择文件夹,右键选择菜单 `Export folder to PDF`,即可将整个文件夹内容导出到一个 PDF 文件中,这样不保证文件导出顺序; #### 自定义导出 新建一个目录笔记,添加如下类似内容,需要添加 `toc: true` 文档属性: ```markdown --- toc: true --- ## 目录 [[笔记1|标题1]] [[笔记2]] [[笔记3]] ``` 这样插件会按照 `当前目录页`、`笔记1`、`笔记2`.. 的顺序导出笔记。导出的 PDF,目录页锚点支持点击跳转。 ### 文件夹批量导出 侧边栏选择文件夹,右键选择菜单 `Export each file to PDF`,即可将整个文件夹每一个文件批量导出为 PDF 文件 ### 导出为一页 导出对话框, **Page Size** 选择 `Custom`,**Margin** 设置为 `None`,根据文档情况自行设置页面尺寸。 --- **注意:** 你可以通过`插件设置 > 限制并发数` 调整多文件导出时渲染阶段的并发数量,以此来减少资源消耗,或者提高速度,默认为 `5`。 ## 效果 ### 导出预览 ![Export preview](./assets/preview0.png) ### 导出效果 ![Export preview](./assets/preview1.png) ## TODO - [ ] 将内部链接内容自动添加到脚注/附录中; - [ ] 支持 pagedjs 美化; - [x] 支持打印预览; - [x] 多个 Markdown 合并打印到一个 PDF 文件中; - [x] 完善默认 `@media print` css 样式; - [x] 支持将文档属性添加到 PDF 元数据中; - [x] 保留文档内链接跳转; ## 赞助 如果这个插件帮到了您,请点击 Star 或者我喝一杯奶茶吧!