Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pdf样式好,如何生成? #392

Open
lingr7 opened this issue Apr 19, 2020 · 12 comments
Open

pdf样式好,如何生成? #392

lingr7 opened this issue Apr 19, 2020 · 12 comments

Comments

@lingr7
Copy link

lingr7 commented Apr 19, 2020

从gitbook网站上下载到的教程样式非常好,就是在markdown基础上,适当加了出版物特性比如有分页。
那么这个文档的pdf文件是如何生成的呢?
我尝试了一些gitbook2pdf工具,都没有找到办法生成类似的pdf文件。

@KaiserY
Copy link
Owner

KaiserY commented Apr 19, 2020

以前 gitbook 是开源的 😂
https://github.com/GitbookIO/gitbook

@lingr7
Copy link
Author

lingr7 commented Apr 20, 2020

我试了几种gitbook2pdf的工具,生成效果都不好,开源的gitbook工具的效果不好。比如这样的。
没有代码高亮。抓取gitbook站点很容易失败
image
我自己总结了几种可以将文档生成pdf的办法:
探索markdown2pdf最佳实践 · 语雀
目前我能尝试出的是看云。
看到这个文档是
属性
这样的,烦请赐教这个文件的生成的流程。
如果是LaTex的话,凡是pdf文件,必然有tex源码,可以复现出。但是LaTeX写这种文档成本太高了。

@lingr7
Copy link
Author

lingr7 commented Apr 20, 2020

我疏忽了,各种方法试了一大堆,这个仓库本身开始构建却没有尝试,身在林中看不见树。(¬_¬)智商三岁。

@lingr7
Copy link
Author

lingr7 commented Apr 20, 2020

一次失败的尝试

在这个前提下:制作pdf · GitBook
image.png

image.png

同时左面的目录是不支持跳转的,所有都跳转到第1页,是比较失败的。

image.png

踩坑如下:

左侧导航栏超链接无法跳转->生成的pdf书签不能跳转,未解决。

左侧导航栏超链接无法跳转

gitbook生成的静态网页很像wiki,左侧有电子书的导航栏,很方便。但是,点击链接居然不会跳转。不会跳转的超链接能叫超链接吗?此时,在_book文件夹内,找到gitbook文件夹,在里面找到theme.js打开,用文本搜索工具搜索查找

if(m)for(n.handler&&

注意,文本时压缩过的,不要搜索if(m),那样找不到。

找到后,将 if(m)改成if(false)

再次打开_book下的网页,左侧导航栏超级链接就可以正常跳转了。

Error converting .svg into .png

在后来尝试使用gitbook生成pdf时,又遇到一个问题

error: error while generating page "chapter1/14.md":

Error: Error converting C:\Users\Administrator\AppData\Local\Temp\tmp-47768poGb4f1fkPK_mathjax_46d8639.svg into C:\Users\Administrator\AppData\Local\Temp\tmp-47768poGb4f1fkPK\c6231af5.png

看样子是在生成pdf时,需要把mathjax公式svg图转换为png。刚开始以为是mathjax的问题,换了很多歌mathjax插件版本,后来发现把插件换成katex也有一样的错误提示。

于是想到了可能是svg转png的过程出现问题,于是找到了svgexport 。

svgexport 是一个svg转png的工具,现在版本是0.4.0

搜了一下,发现有一些人遇到同样的问题(不仅限于在gitbook),但是大家都有一个个特点:那就是windows

于是我用svgexport 测试了一下单独的svg图片,发现也是报错。

后来在svgexport 的github的issue里发现问题,svgfile在读取windows下的文件时会有文件地址错误的问题,具体就是window和Linux中文件路径的表示方法是不一样造成的。

该问题目前暂时无解,工具的作者已经提交issue,准备修复这个bug了。

但是,在此之前,可以使用0.3.2版本的svgexport,就可以完美滴解决这个问题。

npm使用淘宝镜像加速安装

解决方案:

cnpm install svgexport@0.3.2 -g

NPM镜像-NPM下载地址-NPM安装教程-阿里巴巴开源镜像站 https://developer.aliyun.com/mirror/NPM?from=tnpm

Gitbook踩坑记录II - 知乎 https://zhuanlan.zhihu.com/p/123870902

Regression 0.4.0: "Error converting __.svg into ___.png" with GitBook · Issue #71 · shakiba/svgexport piqnt/svgexport#71

@me1ting
Copy link

me1ting commented Apr 20, 2020

我也曾经像楼主这样折腾过,分享一点经验。gitbook由于商业策略的变更,开源的gitbook软件已经不再维护,在legacy.gitbook.com上下载的pdf显示还不错,但是如果自己生成pdf,会遇到许多兼容性问题。比如:

  • 字体问题。我使用微软雅黑字体时,遇到粗体被显示为normal的情况。
  • 页边距问题。我使用最新版本calibre时,修改页边距无效,我的解决办法是回滚到2.12.0版本。

pandoc+LaTeX我也使用过,学习成本过高,需要解决的显示问题过多,我最后选择了放弃。

@chuigda
Copy link
Contributor

chuigda commented Aug 27, 2020

现在是 0202 年,根据我的经验,最简单的做法就是用浏览器打开mdbook的生成结果,在mdbook的页面上点击这个按钮
图片

然后你会获得一个所有内容都在一页上的网页。接下来关掉左边侧边栏,然后用浏览器自带的打印工具打印即可。

图片

@aoslee
Copy link

aoslee commented Oct 15, 2020

现在是 0202 年,根据我的经验,最简单的做法就是用浏览器打开mdbook的生成结果,在mdbook的页面上点击这个按钮
图片

然后你会获得一个所有内容都在一页上的网页。接下来关掉左边侧边栏,然后用浏览器自带的打印工具打印即可。

图片

这是我经过了若干次尝试,这种是最好的生成pdf方法.除了没有目录其他都完美

@mokurin000
Copy link
Contributor

mokurin000 commented Oct 28, 2020

mozilla.pdf

这里有我生成好的

@me1ting
Copy link

me1ting commented Jan 8, 2021

mozilla.pdf

这里有我生成好的

mozilla生成的效果还是太丑了,推荐我的trpl-zh-cn-pdf

全书签+一级标题换行等打印效果优化

@eorendel
Copy link

eorendel commented Feb 1, 2021

mozilla.pdf
这里有我生成好的

mozilla生成的效果还是太丑了,推荐我的trpl-zh-cn-pdf

全书签+一级标题换行等打印效果优化

这个不错,谢谢

@KaiserY
Copy link
Owner

KaiserY commented Feb 19, 2022

Rust 程序设计语言 简体中文版.pdf

actions 里集成了一个 pdf,样式还需要再调调,然后 emoji 显示不了 😂

@LiYouliang
Copy link

现在是 0202 年,根据我的经验,最简单的做法就是用浏览器打开mdbook的生成结果,在mdbook的页面上点击这个按钮
图片
然后你会获得一个所有内容都在一页上的网页。接下来关掉左边侧边栏,然后用浏览器自带的打印工具打印即可。
图片

这是我经过了若干次尝试,这种是最好的生成pdf方法.除了没有目录其他都完美

@aoslee 你说【用浏览器打开mdbook的生成结果】,我从_book里打开index.html或者其他html页面都是只有一页,没有你说的【会获得一个所有内容都在一页上的网页】,还是我打开的地方不对?请教

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants