背景
将各种语法突出显示的源文件(C,SQL,Java,PHP,批处理,bash)批量转换为高分辨率图像(600dpi),适用于电子书和印刷书籍。
解决方案失败
迄今为止的尝试:
- OpenOffice或LibreOffice-每次源文件更改时,都必须将源代码重新导入文档中。(也就是说,对于数百或数千个源文件,该解决方案无法轻松实现自动化。)
- 文字。无法轻松更改颜色,无法完美渲染输出,不够全面。
- LyX / LaTeX。不完美地呈现输出。
- 从gvim到HTML —从HTMLDOC到PostScript —从GhostScript到PNG。HTMLDOC忽略
font
标签。 - gvim到HTML — html2ps — GhostScript到PNG。不能识别RGB颜色
html2ps
。 - Firefox到PostScript — GhostScript到PNG。令人circuit回曲折。
- gvim到HTML — OmniFormat到任何东西。免费版本不适合批处理;很多广告弹出窗口。
- 色素。无法轻松更改图像分辨率;没有gvim的配色范围。
最近的解决方案
几乎可行的解决方案是:
- gvim到HTML — wkhtmltopdf到PDF。将需要使用ImageMagick进行后处理(wkhtmltoimage不能设置图像分辨率,只能设置页面宽度)。
要求
- Windows和Linux,但可以接受。
- 免费或OSS
- 仅命令行(适用于批处理)
- 轻松更改配色方案
- 支持:PHP,批处理,bash,Java,JavaScript,R,C和SQL
题
还有其他方法可以将语法突出显示的源代码转换为高分辨率(600dpi)的图像?
谢谢!
@戴夫·贾维斯(Dave Jarvis):好吧,告诉我您想要覆盖多大的英寸,我告诉您您需要多少像素。事后用转换来“修剪”结果是一个不错的主意,但是却在某种程度上破坏了“ dpi”的主意。您始终以“我需要填充此x英寸的空间,并且我希望它填充每英寸的z点”开始..根据该公式,您需要像素。
—
akira
@akira:宽度取决于源代码使用的列数。有时宽度为75个字符。有时会是40个字符。因此,75个字符应占用约5.5英寸,而40个字符应略大于该字符的一半。5.5值取决于书籍的页边距,该页边距可能会更改(一次或两次)。顺便说一句,这是需要自动进行的计算,否则解决方案将无法自动化,从而破坏了整个目的。
—
戴夫·贾维斯
@戴夫·贾维斯:是的,我知道你的问题。您对convert感到很幸运,因为在这种情况下,webkit的输出确实具有可伸缩性,因此您可以在之后“调整” PDF的大小。对于一个集成解决方案,我怀疑有人需要某种缩放级别和“浏览器”的宽度
—
akira 2010年
顺便说一句,您用来创建电子书或印刷书的文档格式是什么(乳胶,xsl-fo等)?
—
akira 2010年
wkhtmltoimage
设置页面宽度不够?由于高度是由html内容决定的,因此无法指定高度。imho宽度是您实际需要的全部,您可以根据所需的每英寸多少像素来计算所需的宽度。