Gitbook 生成 pdf 中文字体错乱问题解决办法

 
用过 Gitbook 的都知道, Gitbook 会自动生成 pdf 以提供下载, 但十分遗憾的是自动生成的 pdf 对中文的支持并不好, 经常出现字体不一致的现象, 影响阅读, 强迫症更是难以忍受.

示例:

下面针对这一问题提供简单的解决办法: 本地命令行生成 pdf 文件. 当然这种方法有一定局限性, 你需要找到托管在 github 对应的源码仓库且转换过程中不出错. (由于水平有限未能解决在线生成的pdf中文字体错乱问题, 见谅. 也就是说网站自动生成的 pdf 依旧字体错乱, 但是本地生成的pdf文件是没有这个问题的 orz... 如果是 gitbook 上的写作者的话可以本地生成 pdf 上传至网盘提供下载)

Gitbook 项目介绍

GitBook 是一个基于 Node.js 的命令行工具,可使用 Github/Git 和 Markdown 来制作精美的电子书,GitBook 并非关于 Git 的教程。

Gitbook 安装(以下环境是在 OS X 中进行的, 其他环境记得替换命令)

  • 通过 NPM 安装 Gitbook
$ npm install gitbook-cli -g
  • 查看 Gitbook 版本
$ gitbook versions
$ sudo ln -s ~/Applications/calibre.app/Contents/MacOS/ebook-convert /usr/bin

Gitbook 本地生成文档

$ git clone https://github.com/Aaaaaashu/Mac-dev-setup

注意是电子书托管的仓库地址而不是电子书的地址, 有的作者会直接给出, 没有给出的话通过作者 id 在 github 上查找, 注意替换地址. 还有一些没能找到仓库的, 可以去其他网站找一下 pdf.

  • 进入文件夹
$ cd Mac-dev-setup
  • 生成 HTML 文件(非必要)
$ gitbook serve

默认在当前目录下生成包含 html 网页名为 _book 的文件夹, 并启动端口为4000的预览服务器, 可通过 http://localhost:4000 预览.

  • 生成 pdf 文件
$ gitbook pdf

默认在当前目录下生成名为 book.pdf 的文件, 类似的可生成 epub 和 mobi 文件.
这样字体正确的 pdf 文件就生成了, 对比直接从 gitbook 下载的 pdf, 体积变大了.

常见错误

本地命令经常会卡在最后一步, 经常见的如 permission denied, 即没有权限, 记得在前面添加 sudo 或直接启用 admin.
你还可能碰到许多诸如下载失败的错误, 多数情况下是墙引起的, 还请自备翻墙技巧哈.
其他的错误有插件加载失败, 错误信息里有命令提示gitbook install.
还有就是 svg 转换 png 的错误, 不影响阅读情况下可以找到对应的文件删除对应语句. 如果 svg 图片很多的话, 靠删除不能解决问题. 看了些讨论也没能解决, 如果你有解决办法, 请联系我.

写在最后

网上的一些教程由于时间太早, 有些命令已经舍弃了, 如 gitbook 的安装命令, 添加 pdf 依赖等, 还请以官方文档为准.

本文旨在解决从 gitbook 下载的 pdf 中文字体错乱问题, 更多的 gitbook 使用技巧及如何构建电子书可以参考GitBook 简明教程, 和参阅官方文档或自行 Google. 希望能对你有所帮助.

Gitbook地址 || Gitbook项目地址 || 中文文档
参考: Gitbook 使用入门

Gitbook 生成 pdf 中文字体错乱问题解决办法的更多相关文章

  1. 文章投稿 latex 生成 pdf的字体Embeded问题解决(转自兵马俑BBS)

    此法可以把所有字体转为Embedded,先生成*.ps文件,下载ghostscrip8.51和GSView4.7 安装,用gsview4.7转换*.ps->*.pdf,在gsview中File- ...

  2. sublime Text3中文字体错位问题解决办法

    问题如下: 问题成因: 配置中的默认字体为Consolas,这种字体对中文支持效果不是很好 解决办法: 1.下载 Yahei Consolas Hybrid 字体 2.将下载的Yahei Consol ...

  3. php导出pdf,dompdf中文字体乱码解决办法(特别是代码迁移引起的乱码)

    dompdf\lib\fonts\dompdf_font_family_cache.php记住这个文件里面存放的是字体生成的缓存,迁移时如果覆盖了这个文件会导致乱码而且很难找到出错的地方,相信我... ...

  4. Open Sans字体兼容问题解决办法[font-face]

    参考:http://www.tantengvip.com/2014/11/open-sans/ 1.font-face使用方法 font-face是CSS3中的一个模块,主要是把自定义的Web字体嵌入 ...

  5. openerp 7.0邮件接收中文附件乱码问题解决办法

    openerp 7.0邮件接收中文附件乱码问题解决办法: 修改文件\addons\mail\mail_thread.py #1064 line插入代码: h=email.Header.Header(n ...

  6. python生成word中文字体

    python生成word中文字体 我们今天用python生成word文件,主要是用到了PyRTF包生成rtf文件,由于PyRTF的包中文教程比较少,所以特此记录几篇文章,也希望给大家有一些帮助. 开始 ...

  7. Linux环境下中文字体乱码处理办法

    项目中包含了一项生成JPG图片的功能,该功能需要使用JAVA的Graphics2D动态生成图片中的文字,原来在Windows平台中没有发现问题,但是迁移至Linux平台后发现生成的中文变成了乱码. 百 ...

  8. php+tcpdf生成pdf: 中文乱码

    TCPDF是一个生成PDF的不错的库,可惜,官方对包括中文在内的东亚字体支持不怎么样的.场景:某项目需要根据数据库信息生成pdf格式的发票,考虑采用稳定的tcpdf,虽然还有许多其它选择,但是这个应该 ...

  9. JasperReport4.6生成PDF中文

    Web项目中PDF显示中文 本人无奈使用JasperReport4.6,因为这本书(好像也是唯一的一本国内的介绍JasperReport的书), 选择"文件"→New命令,弹出一个 ...

随机推荐

  1. python 两个队列进行对比

    python 两个队列进行对比 list01 = [1,2,3,4] list02 = [1,3,5] for i01 in list01: is_in_02 = False for i02 in l ...

  2. Android电话拨打权限绕过漏洞(CVE-2013-6272)分析

    原文:http://blogs.360.cn/360mobile/2014/07/08/cve-2013-6272/ 1. CVE-2013-6272漏洞背景 CVE-2013-6272是一个安卓平台 ...

  3. C++变量未进行初始化时的默认值

      对于built-in类型,未初始化的变量的值是undefined value. 对于自定义类型,未初始化变量的值是类型默认构造函数指定的值.  

  4. [Node.js] Level 3 new. Steam

    File Read Stream Lets use the fs module to read a file and log its contents to the console. Use the  ...

  5. 为什么要使用href=”javascript:void(0);”?

    JavaScript中语句最后的分号是可以缺省的,那为何要使用javascript:;而不是javascript:呢? 是习惯还是规范,我疑惑了! 具有代码洁癖的coder们,没事多写一个分号,圣洁的 ...

  6. MFC 小知识总结二

    1 UpdateData 不能及时更新控件内容 原因: UpdateData是通过数据交换实现改变控件显示的.改变了之后必需要调用一次OnPaint才干实现刷新. 因此,若是在一个函数里重复多次调用有 ...

  7. SqlServer 之 用 IP 地址连接数据库报错" 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误 "

    问题描述:       在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (p ...

  8. libcurl 接口调用方式

    http://hi.baidu.com/tracyu1026/item/bb6d5def4292b10b570f1d48 libcurl提供了一组C语言API函数直接调用.首先需要提到的两个函数就是c ...

  9. uva 11181 - Probability|Given(概率)

    题目链接:uva 11181 - Probability|Given 题目大意:有n个人去超市买东西,给出r,每个人买东西的概率是p[i],当有r个人买东西的时候,第i个人恰好买东西的概率. 解题思路 ...

  10. CentOS 下安装MySQL 默认源为5.1版本

    CentOS——默认为安装5.1版本,如果需要安装5.5版本,需要使用remi源 yum install mysql-server –enablerepo=remi   Ubuntu——默认为安装5. ...