10

我出版了印刷版、PDF 和 Kindle/MOBI 的技术书籍,EPUB 即将推出。

Kindle 不支持等宽字体,这对源代码列表很有用。制作等宽字体的唯一方法是将文本(Java 源代码、HTML、XML 等)转换为 JPEG 图像。更具体地说,由于分页问题,​​给定的输入 ASCII 文件需要被分成大约 6 行的切片,每个切片都转换为 JPEG,因此列表可以跨越一个屏幕。这是皇家的痛苦。

我目前的机制包括:

  1. 运行expand以设置一致的 2 空格制表符大小,该大小通过管道传输到...
  2. a2ps, 哪个管道...
  3. 一个小的 Perl 片段,用于添加"%%LanguageLevel: 3\n"一行,该行通过管道传输到...
  4. ImageMagick 的convert, 获取 (E)PS 并制作 JPEG,具有适当的背景,裁剪为575x148+5+28等。

这曾经是 100% 的工作时间。它现在 95% 的时间都在工作。其余时间,我会遇到convert: geometry does not contain image错误,我似乎无法摆脱,部分原因是我不明白问题出在哪里。

在此过程之前,我曾经使用漂亮的打印引擎source-highlight(引擎。可靠性很差,这就是为什么我切换到我目前的机制。

所以,如果你是你,并且你需要以自动化的方式将源列表转换为 JPEG 图像,你会怎么做?如果它提供某种漂亮的打印过程(例如,粗体关键字),则可以加分!

或者,如果您知道通常是什么原因导致convert: geometry does not contain image的,那可能会有所帮助。我目前的流程很丑陋,但如果我能让它恢复到 100% 的可靠性,那现在就好了。

提前致谢!

4

5 回答 5

9

你可以考虑 html2ps 然后 imagemagick 的转换。

一个想法:如果您的目标(Kindle?)支持 PNG,则优先使用它而不是 JPEG 进行文本渲染。

于 2009-07-25T20:05:07.550 回答
1

因为HTML转JPG的问题已经解答了,我就给个漂亮的打印机一个建议。我发现Pygments非常棒。它支持不同的主题,并且具有几乎所有语言的词法分析器(他们宣传它甚至突出了Brainfuck的事实)。有一个命令行工具,它在大多数 Linux 发行版上都可用。

于 2010-06-19T22:31:49.523 回答
1

html2ps 是一个优秀的程序——我曾经用它来制作一本 1300 页的书,但如果你只想要纯文本 -> 后记,它就太过分了。请考虑使用 enscript。

于 2010-05-19T16:46:59.037 回答
0

不要使用jpeg。它针对照片进行了优化,并且在文字和线条艺术方面做得很糟糕。请改用 gif 或 png。我的理解是 gif 现在没有专利,所以我会使用它。

于 2010-05-11T16:16:10.933 回答
0

您的 Linux 发行版可能包含 pango-view 和各种字体。这适用于我的 FC6 系统:

pango-view --font=DejaVuLGCSansMono --dpi=200 --output=/tmp/text.jpg -q /tmp/text

您需要识别系统上安装的等宽字体。环顾四周/usr/share/fonts/

Pango 支持 Unicode。

在您进行试验时不要使用 -q,它将显示在窗口而不是文件中。

于 2009-08-27T21:28:31.510 回答