9
21
2017
16

使用 Prince 转换 HTML 文档给 Kindle 阅读

ZeroMQ 的指南文档很长很长。我想放在 Kindle 里,上下班的时候看,长知识又不伤眼。

首先尝试 Push to Kindle。就是本博客每篇文章下边都有的那个链接里的东西。试了好几次终于成功了。然而,章节标题看不出来跑哪儿去了也就算了,代码去哪儿了?注意格式啊!

于是换浏览器,HTML 转 PDF。顺手按 F12,把每个标题右边的导航链接删掉了。然后打印~代码格式没有坏哦~然而,还是有很多代码没显示出来,倒是显示了一堆其它语言代码的链接……继续 F12 改样式表修了。这些都是小问题,最大的问题是,在我不断地调整页面大小的时候,我的火狐每次「准备……」的过程都特别漫长,那个负责转换的子进程吃很多很多 CPU,还卡死了所有它负责的标签页……终于,在等待近半小时它还没准备好的时候,我失去了耐心,杀掉了那个火狐子进程,换 Prince 了。这次我体会到多进程架构的好处了:页面卡了,换个标签页打开,分配到另外的子进程的时候就可以正常使用了。

Prince 是个非常不错的 HTML 转 PDF 软件。免费版本会有个它自己的图标放第一页右上角,没啥问题,打印的时候也不会出现。要是你非要去掉它的话,也可以找个 PDF 编辑工具删掉它。

然后是确定页面大小。因为代码的行都比较长,我决定横屏阅读,也就是「landscape」模式。然后拿尺子量了一下,差不多是 9cm×12cm。维基百科告诉我 Kindle Paperwhite 是6英寸的屏幕,但是我没有弄明白它的长和宽到底是多少,所以还是动手测量了。因为 Kindle 上字显示小一些也挺清晰的,所以我把短边乘以了二(好像并不合理啊,因为已经是 landscape 了,应该两边同步放大才对;不过其实我一开始想的是一页占两屏……)。

然后再加上针对 ZeroMQ 文档的修改,得样式表如下:

td + td {
  display: none;
}

.collapsible-block-folded {
  display: none;
}

.collapsible-block-unfolded {
  display: block !important;
}

.collapsible-block + br + span {
  display: none;
}

body {
  font-family: serif !important;
}

@page {
  size: 18cm 12cm landscape;
  margin: 0;
}

然后让我们的王子干活啦:

prince -s zguide.css zguide.html -o zguide.pdf

因为需要反复尝试,所以我已经把 ZeroMQ 那个巨大的 HTML 下载到本地了。

最终成果在这里。因为页边距为零,所以在一般的阅读器里看起来挺难看的,但是在 Kindle 里就挺适合了~

Category: Linux | Tags: kindle prince
6
10
2010
0

多篇Word课件打印,我这样省纸

我需要六个共21页Word文档的课件以供开卷考试时使用。可是打印成21页也太浪费了!字号可不需要那么大,于是使用Ooo调整字号,结果令我郁闷的是,除了大部分文字位于左边而右边很多空白之外,我发现项目符号依旧是很大的字号。这样可不行。而且,一个个文件处理太没效率——我马上就要去应考了啊!考虑过LaTeX,结果因为不会调字体而放弃。于是想起了前些天发现的Google Docs使用的prince。于是开始工作——

首先把Word转成txt。我使用的是wvText这个位于wv包的工具。只能一个个文件转,不过我使用的是shell脚本(因为要手动给那些Word排序),这个就没关系了。然后把内容cat到一起,成为一个大的纯文本文件。然后打开这个文件,用Vim删去空行,然后在利用正则表达式\v第.章|^(一|二|三|四|五|六|七|八|九|十)加上Vim的宏给标题前空一行免得到时候不好找答案。prince是处理HTML的,所以还要把它改成HTML。这个手动就可以了,写上head标签,meta指明编码,正文前后加上<pre>标签,再写点样式表:

pre {
  font-size: 11px;
  font-family: 'Adobe Song Std';
  -moz-column-count: 2;
  -moz-column-gap: 20px;
  -webkit-column-count: 2;
  -webkit-column-gap: 20px;
  column-count: 2;
  column-gap: 20px;
  white-space: pre-wrap;
}

这里用到了我最近学到的多栏布局的CSS,prince认识它。然后使用prince转成PDF,打开一看效果灰常不错,而且只有六页了!

注意,CSS里的white-space是必须的,不然不会自动折行,左栏的过长文字会叠加到右栏。

PS: prince共享版会在每个生成的文件的第一页的右上角加个图标,但打印时并没有打印出来。

Category: 未分类 | Tags: shell prince

Mastodon | Theme: Aeros 2.0 by TheBuckmaker.com