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. [CSS3] Parent relative and child absoulte

    如果在一个容器中的子元素使用了position:absolute, 那么他可能会跑出父元素的框架范围. 如果想限定子元素在付元素的框架范围,可以在父元素上加position:relative; 对于一 ...

  2. (回溯法)和为n的所有不增正整数和式分解算法

    题目: 利用递归算法输出正整数和为n的所有不增的正整数和式.例如当n=5时,不增的和式如下: 5=5 5=4+1 5=3+2 5=3+1+1 5=2+2+1 5=2+1+1+1 5=1+1+1+1+1 ...

  3. ArcGIS Pro体验02——启动、创建工程

    所有的猜测都是眼睛看到的,自己想到的,可能不一定正确哈. 任务界面十分简洁,左上是创建新工程,右上是账户名称,左上是关于. 可以直接创建一个工程,Blank应该是无类型,最后保存再选择:Global ...

  4. ls命令(转)

    原文:http://www.cnblogs.com/peida/archive/2012/10/23/2734829.html ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下l ...

  5. Php优化方案

    1.尽量静态化: 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍. 当然了,这个测试方法需要在十万级以上次执行,效果才明显. 其实静态方法和非静态方法的 ...

  6. ipa 打包遇到的坑

    1.xcode 打包 并上传至 appstore 审核 2.预留邮箱 收取 appstore 的审核结果 3.审核通过以后,通过 iTunes Connect 上传正式文件至 appstore     ...

  7. Oracle常用标准表

    一.INV(库存) 子库存:mtl_secondary_inventories 事物处理:mtl_material_transactions mmt 事务处理来源类型:mtl_txn_source_t ...

  8. linux上传下载文件rz,sz

    [一般用于SecureCRT ssh中使用] █ 法一:直接用yum安装lrzsz(推荐) yum install lrzsz -y 注意:rhel安装完系统后 直接可使用 rz sz █ 法二:源文 ...

  9. S3 服务(Simple Storage Service简单存储服务) 简介(与hdfs同一级)

    图1  spark 相关 亚马逊云存储之S3(Simple Storage Service简单存储服务) (转 ) S3是Simple Storage Service的缩写,即简单存储服务.亚马逊的名 ...

  10. 机器学习的敲门砖:手把手教你TensorFlow初级入门

    摘要: 在开始使用机器学习算法之前,我们应该首先熟悉如何使用它们. 而本文就是通过对TensorFlow的一些基本特点的介绍,让你了解它是机器学习类库中的一个不错的选择. 本文由北邮@爱可可-爱生活  ...