我发布技术书籍,印刷版,PDF版和Kindle / MOBI版,途中还有EPUB。
Kindle不支持等宽字体,这对源代码列表很有用。执行等宽字体的唯一方法是将文本(Java源,HTML,XML等)转换为JPEG图像。更具体地说,由于分页问题,给定的输入ASCII文件需要被分成每行约6行的片段,每个片段变成JPEG,因此列表可以跨越屏幕。这是一种皇室痛苦。
我目前的机制包括:
expand
以设置一致的2空格标签大小,其中包含... a2ps
,它管道...... "%%LanguageLevel: 3\n"
行,用于管道... convert
,获取(E)PS并使用适当的背景制作JPEG,裁剪为575x148+5+28
等。那曾经100%的时间都在工作。它现在95%的时间都有效。剩下的时间里,我得到convert: geometry does not contain image
个错误,我似乎无法摆脱,部分原因是因为我不明白这个问题是什么。
在此过程之前,我曾经使用漂亮的打印引擎(source-highlight
)从源代码中获取HTML ...但是我唯一能找到的将HTML转换为JPEG的方法就是从嵌入式Gecko引擎中自动屏幕抓取。可靠性发臭,这就是我改用现有机制的原因。
所以,如果你是你,并且你需要以自动方式将源列表转换为JPEG图像,你会怎么做?奖励积分,如果它提供某种漂亮的打印过程(例如,粗体关键字)!
或者,如果您知道通常导致convert: geometry does not contain image
的原因,那可能会有所帮助。我目前的流程很难看,但如果我能恢复到100%的可靠性,那现在就好了。
提前致谢!
答案 0 :(得分:8)
您可以考虑使用html2ps,然后使用imagemagick的转换。
一个想法:如果您的目标(Kindle?)支持PNG,请使用优先于JPEG的文本渲染。
答案 1 :(得分:1)
html2ps是一个优秀的程序 - 我用它来制作一本1300页的书,但是如果你只想要纯文本那就太过分了 - >后记。请考虑使用enscript。
答案 2 :(得分:1)
由于已经回答了将HTML转换为JPG的问题,我将在漂亮的打印机上提出建议。我发现Pygments非常棒。它支持不同的主题,并且几乎可以使用任何语言的词法分析器(它们宣传它甚至突出显示brainfuck)。有一个命令行工具,它可以在大多数Linux发行版上使用。
答案 3 :(得分:0)
您的Linux发行版可能包含pango-view和各种字体。 这适用于我的FC6系统:
pango-view --font=DejaVuLGCSansMono --dpi=200 --output=/tmp/text.jpg -q /tmp/text
您需要识别系统上安装的等宽字体。环顾/usr/share/fonts/
。
Pango支持Unicode。
在您进行实验时不要使用-q,它会显示在窗口而不是文件中。
答案 4 :(得分:0)
不要使用jpeg。它针对照片进行了优化,并且在文本和线条艺术方面做得非常糟糕。请改用gif或png。我的理解是gif现在没有专利,所以我会用它。