我出版打印版、PDF 版和 Kindle/MOBI 版的技术书籍,EPUB 正在制作中。
Kindle 不支持等宽字体,这对源代码列表很有用。制作等宽字体的唯一方法是将文本(Java 源代码、HTML、XML 等)转换为 JPEG 图像。更具体地说,由于分页问题,给定的输入 ASCII 文件需要分成每片约 6 行,每片变成 JPEG,因此列表可以跨越一个屏幕。这是皇家的痛苦。
我目前的机制包括:
- 运行
expand
以设置一致的 2 空格制表符大小,通过管道传输到... a2ps
,通过管道传输到...- 添加
"%%LanguageLevel: 3\n"
行的小 Perl 片段,该行通过管道传输到... - ImageMagick 的
convert
,获取 (E)PS 并制作 JPEG,具有适当的背景,裁剪为575x148+5+28
等。
过去 100% 的时间都有效。它现在 95% 的时间都有效。其余时间,我会收到 convert: geometry does not contain image
错误,我似乎无法摆脱这种错误,部分原因是我不明白问题出在哪里。
在此过程之前,我曾经使用 pretty-print 引擎 (source-highlight
) 从源代码中获取 HTML...将 HTML 转换为 JPEG 是为了自动从嵌入式 Gecko 引擎抓取屏幕。可靠性很差,这就是我改用当前机制的原因。
那么,如果您是您,并且需要以自动化方式将源列表转换为 JPEG 图像,您会怎么做?如果它提供某种 pretty-print 过程(例如,粗体关键字),则可加分!
或者,如果您知道通常导致 convert: geometry does not contain image
的原因,这可能会有所帮助。我目前的流程很丑陋,但如果我能让它恢复到 100% 的可靠性,那现在就没问题了。
提前致谢!
最佳答案
你可能会考虑 html2ps 然后 imagemagick 的转换。
一个想法:如果您的目标(Kindle?)支持 PNG,那么在此文本渲染中优先使用它而不是 JPEG。
关于html - 将源 ASCII 文件转换为 JPEG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1182850/