最近想把自己写的一个gitbook转成pdf分享出去,突然发现最新的gitbook版本已经不支持导出PDF了。于是在网上找了好久终于被我发现了三个将gitbook转换成pdf的方式,现分享给大家。我使用的是mac系统,如果是其他系统大家可以查找相应的方案。

gitbook自带的npm模块gitbook

npm gitbook的最新版本是3.2.3,最新更新时间是1年前,官方估计已经放弃这个模块了。不过还好,这个模块还能够使用。 具体步骤如下:

  1. 安装npm

    通常来说,安装好nodejs后会自动安装相应的npm。

    brew install nodejs
  2. 安装gitbook

    npm install gitbook -g
    npm install gitbook-cli -g
  3. 安装calibre

    直接到官网下载: https://download.calibre-ebook.com/

    安装好calibre之后,需要将 /Applications/calibre.app/Contents/MacOS/ebook-convert 链接到/usr/local/bin/ebook-convert

    ln -s /Applications/calibre.app/Contents/MacOS/ebook-convert  /usr/local/bin/ebook-convert
  4. 生成PDF

    在所有的一切都准备好之后就可以运行下面的命令生成pdf了。

    gitbook pdf

注意,calibre要下载3.*版本,否则在gitbook pdf 的过程中会卡住。别问我是怎么知道的,我被这个问题坑了好久。

使用vscode的插件Markdown PDF

vscode是一个非常强大的文本编辑工具,我们可以可以使用它的Markdown PDF插件来将markdown来转换成pdf。

它有一个markdown-it-include的功能,可以将一个markdown文件中引入的其他markdown文件包含进来。

考虑下面的文件结构:

├── [plugins]
│ └── README.md
├── CHANGELOG.md
└── README.md

如果我们新建一个md文件,其内容如下:

README Content

:[Plugins](./plugins/README.md)

:[Changelog](CHANGELOG.md)

导出为PDF之后,其内容如下:

Content of README.md

Content of plugins/README.md

Content of CHANGELOG.md

这样就可以通过一个文件来包含多个md文件。当然这样也有一个缺点就是引入的文件缺少层级概念也无法生成标签。

使用CommandBox GitBook Exporter

第三种方式就是使用forgebox的GitBook Exporter工具了。

方法如下:

  1. 安装CommandBox

    brew install commandbox
  2. 在box中安装gitbook-exporter

    box install gitbook-exporter
  3. 在gitbook控制页面台中,导出你要生成的gitbook的信息:

    Advanced->Danger Zone->Export

  4. 导出PDF和html

    CommandBox> gitbook export sourcePath=/path/to/ExportFolder

使用上面的命令可以同时导出pdf和html,其优点就是比使用官方gitbook命令导出的文件要小很多,缺点就是pdf中文会出现乱码(暂时没有找到解决方法)

好了,三种方法都教给大家了,感觉去试一下吧。

更多教程请参考 flydean的博客

新版gitbook导出pdf的更多相关文章

  1. .Net导出pdf文件,C#实现pdf导出

    最近碰见个需求需要实现导出pdf文件,上网查了下代码资料总结了以下代码.可以成功的实现导出pdf文件. 在编码前需要在网上下载个itextsharp.dll,此程序集是必备的.楼主下载的是5.0版本, ...

  2. JS导出PDF插件(支持中文、图片使用路径)

    在WEB上想做一个导出PDF的功能,发现jsPDF比较多人推荐,遗憾的是不支持中文,最后找到pdfmake,很好地解决了此问题.它的效果可以先到http://pdfmake.org/playgroun ...

  3. ITextSharp导出PDF表格和图片(C#)

    文章主要介绍使用ITextSharp导出PDF表格和图片的简单操作说明,以下为ITextSharp.dll下载链接 分享链接:http://pan.baidu.com/s/1nuc6glj 密码:3g ...

  4. JAVA导出pdf实例

    一.直接导出成PDF   Java代码 1. import java.io.FileNotFoundException; 2. import java.io.FileOutputStream; 3.  ...

  5. 利用ITextSharp导出PDF文件

    最近项目中需要到处PDF文件,最后上网搜索了一下,发现ITextSharp比较好用,所以做了一个例子: public string ExportPDF() { //ITextSharp Usage / ...

  6. iText导出pdf、word、图片

    一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或 ...

  7. Itext导出PDF,word,图片案例

    iText导出pdf.word.图片 一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生 ...

  8. Ireport 报表导出 Poi + ireport 导出pdf, word ,excel ,htm

    Ireport 报表导出 Poi + ireport 导出pdf, doc ,excel ,html 格式 下面是报表导出工具类reportExportUtils 需要导出以上格式的报表 只需要调用本 ...

  9. Spring Boot 系列教程18-itext导出pdf下载

    Java操作pdf框架 iText是一个能够快速产生PDF文件的java类库.iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的.它的类库尤其与java Servlet有很好 ...

随机推荐

  1. 为何关键字static在面试中频频被问?

    关键字static的神奇妙用在今天的学习中,我了解到关键字static的作用,下面我来给大家分享一下.①static 修饰局部变量只改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束生 ...

  2. javascript 3d网页 示例 ( three.js 初探 七)

    1 完整代码下载 https://pan.baidu.com/s/1JJyVcP2KqXsd5G6eaYpgHQ 提取码 3fzt (压缩包名: 2020-4-5-demo.zip) 2 图片展示 3 ...

  3. Java进行二元操作类型转换

    当对两个数值进行二元操作时,先要将两个操作数转换为同一种类型,然后再进行计算. 如果两个操作数中有一个是double类型,另一个操作数就会转换为double类型. 否则,如果其中一个操作数是float ...

  4. ubuntu安装fastdfds

    ubuntu安装fastdfds 安装fastdfds依赖 cd   /user/local       wget https://github.com/happyfish100/libfastcom ...

  5. 《民国奇探》的弹幕有点逗比,用 Python 爬下来看看

    电视剧<民国奇探>是一部充斥着逗比风的探案剧,剧中主要角色:三土.四爷.白小姐,三土这个角色类似于<名侦探柯南>中的柯南但带有搞笑属性,四爷则类似于毛利小五郎但有大哥范且武功高 ...

  6. MODIS系列之NDVI(MOD13Q1)二:modis数据相关信息

    1.MODIS数据的特点 (1)全球免费:NASA对MODIS数据实行全球免费接收的政策(TERRA卫星除MODIS外的其他传感器获取的数据均采取公开有偿接收和有偿使用的政策),这样的数据接收和使用政 ...

  7. String 对象-->概念和创建

    1.String 对象 String 对象用于处理文本(字符串). String 对象创建方法: new String(). 语法: var txt = new String("string ...

  8. CH5701 开车旅行(倍增dp+set)

    传送门 解题思路: 一道比较有趣的题,解题工作主要分为两块: ①找出k(k=0表示小A先走,k=1表示小B先走,下面同理)从点i出发下一个到达的点to[k][i]; 一开始偷懒用了vector(偷懒一 ...

  9. leetcode c++做题思路和题解(1)——常规题总结

    常规题总结 0. 目录 两数之和 1. 两数之和 耗时4ms(98.82%),内存6.2m. 两数之和--寻找中值向两边扩散法 1.1 思路 思路很简单,就是先找数组中target/2的前后两个值,然 ...

  10. fiddler composer post请求

    必加部分:Content-Type: application/json