2009-07-25 146 views
8

我用EPUB發佈技術書籍,印刷版,PDF和Kindle/MOBI。將源ASCII文件轉換爲JPEG

Kindle不支持等寬字體,這對於源代碼清單很有用。執行等寬字體的唯一方法是將文本(Java源代碼,HTML,XML等)轉換爲JPEG圖像。更具體地說,由於分頁問題,​​給定的輸入ASCII文件需要分成每行〜6行的切片,每個切片變成JPEG,因此列表可以跨越屏幕。這是一場皇家的痛苦。

我目前的機制來做到這一點涉及到:

  1. 運行expand設置一致的二維空間標籤尺寸,其中管道...
  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)從源代碼中獲取HTML ......但是我發現將HTML轉換爲JPEG的唯一辦法是自動化屏幕截圖,從嵌入式壁虎引擎中抓取。可靠性惡化,這就是爲什麼我切換到我目前的機制。

因此,如果你是你,並且你需要以源代碼自動生成JPEG圖片,你會怎麼做?如果它提供某種漂亮的打印過程(例如,粗體顯示的關鍵字),則可獲得獎勵積分!或者,如果您知道通常導致convert: geometry does not contain image的原因,那可能會有所幫助。我目前的過程很醜陋,但如果我能夠將其恢復到100%的可靠性,那現在就好了。

在此先感謝!

回答

8

你可能會考慮html2ps,然後imagemagick的轉換。

一個想法:如果您的目標(Kindle?)支持PNG,則在此文本呈現中優先使用JPEG。

+0

這有一定的承諾。我很確定我之前走了這條路,並放棄了它,但我忘記了爲什麼,而且我的初步測試表明它可能行得通。我會在明天或週一試着讓這個解決方案起作用。謝謝! – CommonsWare 2009-07-25 20:49:20

+0

沒有骰子。以相同的頻率獲取相同的ImageMagick錯誤。必須是一個Postscript輸入的東西。 – CommonsWare 2009-07-25 21:42:16

+5

實際上,進一步的實驗表明,只有當html2ps解決方案出現錯誤時,源文件纔會有空白,導致創建一個有效的空圖像。所以,這個工程!非常感謝! – CommonsWare 2009-07-25 23:04:31

0

您的Linux發行版可能包含pango-view和各種字體。 這工作我FC6系統:

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

你需要確定安裝在您系統上的等寬字體。環顧/usr/share/fonts/

Pango支持Unicode。

在試驗過程中忽略-q,它會顯示到窗口而不是文件。

0

請勿使用jpeg。它針對照片進行了優化,並且在文字和線條藝術方面做得很糟糕。改爲使用gif或png。我的理解是gif現在是免專利的,所以我只會使用它。

+2

Kindle上沒有選項 - JPEG或胸圍。 – CommonsWare 2010-05-11 17:20:01

1

html2ps是一個優秀的程序 - 我曾用它來製作一本1300頁的書,但如果你只是想要純文本 - > postscript,它就會過度。請考慮enscript。

1

由於將HTML轉換爲JPG的問題已得到解答,因此我會在漂亮的打印機上提供建議。我發現Pygments非常棒。它支持不同的主題,並有幾乎任何語言的詞法分析器(他們宣稱它甚至突出顯示brainfuck)。有一個命令行工具,它在大多數Linux發行版上都可用。