使用gitbook 导出 pdf

4,281 阅读3分钟

介绍

gitbook-cli是一个在同一系统上安装和使用多个版本的GitBook的实用程序。它将自动安装所需版本的GitBook来构建一本书。

安装命令

npm install gitbook-cli -g

初始化一本书

  • 初始化一本书的命令是gitbook init,

  • 首先在终端创建一个项目目录,并进入这个目录:

    mkdir book
    cd book
    
  • 然后使用gitbook init来初始化一本书:

    gitbook init
    
  • gitbook init会在空项目中创建README.md和SUMMARY.md两个文件:

    README.md文件是项目的介绍文件。

    SUMMARY.md是gitbook书籍的目录。

    此时README.md 和 SUMMARY.md都是空的,没有任何内容。

  • SUMMARY.md 目录可以参考:

    * [说明](README.md)
    * [项目目录](SUMMARY.md)
    * chat
         * [chat简介](doc/chat/chat简介.md)
    * midjuorney
         * [midjuorney简介](doc/midjuorney/midjuorney简介.md)
    

开始创作

  1. SUMMARY.md 中添加

    * [说明](README.md)
    * [项目目录](SUMMARY.md)
    * chat
         * [chat简介](doc/chat/chat简介.md)
    * midjuorney
         * [midjuorney简介](doc/midjuorney/midjuorney简介.md)
    
  2. 再次执行gitbook init

    image.png vscode 中展示:

    gitbook_init_su2.png

导出pdf

gitbook 可以将内容输出为电子书(ePub,Mobi,PDF)格式

这里主要讲 pdf,命令:

    gitbook pdf ./ ./mybook.pdf
  • pdf: 表示生成pdf格式,还有epub、mobi可选
  • ./ : 表示需要生成书籍的项目根目录
  • ./mybook.pdf : 表示生成书籍的名称
  • 如果你的书籍有多种语言,就会生成多本书籍,书籍的名称会以语言结尾

在项目的根目录下执行哦。

  1. 需要安装ebook-convert

ebook-convert是生成电子书所必需的(epub,mobi,pdf)插件。

  • 点击链接下载: calibre-ebook.com/download
  • 创建软连接:
    sudo ln -s /Applications/calibre.app/Contents/MacOS/ebook-convert /usr/bin
    
    创建后可以在任何目录下执行目录执行ebook-convert命令。
  1. 测试一下ebook-convert

        ebook-convert --version
    
  2. 执行:

gitbook pdf ./ ./mybook.pdf

  1. 查看结果

    gitbook_pdf_su.png

异常总结

gitbook init 出现异常

gitbook_init_error_01.png

错误信息:

TypeError [ERR_INVALID_ARG_TYPE]: The “data” argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received an instance of Promise

问题原因

  • node 版本过高,此时我使用的是19.1。
  • 这里就很郁闷,因为node 不止用在这里,如果卸载,更换版本,可能导致其他应用出现问题。

解决办法

  • 安装nvm.
  • nvm 是一款 Node.js 版本管理工具,允许用户通过命令行快速安装、切换和管理不同的 Node.js 版本。
  • 特别提示: nvm 只适用于 macOS 和 Linux 用户的项目,如果是 Windows 用户,可以使用 nvm-windows 、nodist 或 nvs 替换。
  1. 安装方式

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
    
  2. 常用命令

  • nvm ls # 查看版本安装所有版本
  • nvm ls-remote # 查看远程所有的 Node.js 版本
  • nvm install 17.0.0 # 安装指定的 Node.js 版本
  • nvm use 17.0.0 # 使用指定的 Node.js 版本
  • nvm alias default 17.0.0 # 设置默认 Node.js 版本
  • nvm alias dev 17.0.0 # 设置指定版本的别名,如将 17.0.0 版本别名设置为 dev
  1. 百度后,发现node 12.0.0 使用gitbook init 可以,果断安装
  • nvm install 12.0.0

  • 切换node 版本: nvm use 12.0.0

  • 查看node 版本: node -v

    nvm_install.png

  1. 重新执行gitbook init

    gitbook_init_success.png 完美解决

创建软连接 异常

```bash
    sudo ln -s /Applications/calibre.app/Contents/MacOS/ebook-convert /usr/bin
```

异常信息

ln: /usr/bin/ebook-convert: Operation not permitted

ln_s_error.png

解决问题:

  1. 环境变量配置

    vim ~/.bash_profile

        export EBOOK_PATH=/Applications/calibre.app/Contents/MacOS 
        export PATH=$PATH:$EBOOK_PATH
    
  2. 刷新一下刚刚的配置:

    source ~/.bash_profile

  3. 测试一下ebook-convert指令

导出pdf 异常

pdf ./ ./myBook.pdf --log=debug

异常信息

TypeError: cb.apply is not a function

gitbook_pdf_error.png

问题

不清楚。。。

解决办法

编辑 polyfills.js 文件 注释掉:

```bash
    fs.stat = statFix(fs.stat)
    fs.fstat = statFix(fs.fstat)
    fs.lstat = statFix(fs.lstat)
```

gitbook install 异常

异常信息

Error: Couldn't locate plugins "search-pro, expandable-chapters, edit-link, tbfed-pagefooter, lightbox, favicon, splitter, prism, github, anchor-navigation-ex, page-treeview, back-to-top-button", Run 'gitbook install' to install plugins from registry.

异常原因

缺少插件

解决

gitbook install

installing plugin "lightbox" 异常

异常信息

if (args[ii] == null) throw missingRequiredArg(ii)

installing_lightbox_error.png

解决方案:

npm install gitbook-plugin-lightbox

installing plugin "back-to-top-button" 异常

异常信息

yntaxError: Unexpected token '', "{ "name""... is not valid JSON

installing_back_to_button.png

解决方案

npm install back-to-top-button