2009-07-25 13 views
8

Ich veröffentliche technische Bücher, in gedruckter Form, PDF und Kindle/MOBI, mit EPUB auf dem Weg.Konvertieren von ASCII-Quelldateien in JPEGs

Der Kindle unterstützt keine Monospace-Fonts, die für Quellcodeauflistungen nützlich sind. Die einzige Möglichkeit, Monospace-Schriftarten zu erstellen, besteht darin, den Text (Java-Quelle, HTML, XML usw.) in JPEG-Bilder zu konvertieren. Genauer gesagt muss aufgrund von Paginierungsproblemen eine gegebene Eingabe-ASCII-Datei in Scheiben von jeweils ~ 6 Zeilen aufgeteilt werden, wobei jede Scheibe in ein JPEG umgewandelt wird, so dass Auflistungen einen Bildschirm überspannen können. Das ist ein königlicher Schmerz.

Mein aktueller Mechanismus, das zu tun beinhaltet:

  1. expand Ausführen eines konsistenten 2-Raum Tabgröße, einzustellen, die Rohre zu ...
  2. a2ps, die Rohre zu ...
  3. ein kleiner Perl-Schnipsel eine "%%LanguageLevel: 3\n" Linie, hinzuzufügen, die Rohre zu ...
  4. ImageMagicks convert, nimmt die (E) PS und macht eine JPEG-out es, mit einem geeigneten Hintergrund, um 575x148+5+28 abgeschnitten usw.

Das funktionierte zu 100% der Zeit. Es funktioniert jetzt 95% der Zeit. Der Rest der Zeit, bekomme ich convert: geometry does not contain image Fehler, die ich nicht loswerden kann, zum Teil, weil ich nicht verstehe, was das Problem ist.

Vor diesem Prozess verwendete ich eine Pretty-Print-Engine (source-highlight), um HTML aus dem Quellcode zu holen ... aber dann war das einzige, was ich finden konnte, um HTML in JPEGs zu konvertieren, greift auf eine eingebettete Gecko-Engine zu. Zuverlässigkeit stank, weshalb ich zu meinem aktuellen Mechanismus wechselte.

Also, wenn Sie Sie waren, und Sie mussten Quellenlisten in JPEG-Bilder, in einer automatisierten Art und Weise, wie würden Sie es tun? Bonuspunkte, wenn es einen hübschen Druckprozess bietet (z. B. fett gedruckte Keywords)!

Oder, wenn Sie wissen, was normalerweise convert: geometry does not contain image verursacht, könnte das helfen. Mein derzeitiger Prozess ist hässlich, aber wenn ich ihn zu 100% Zuverlässigkeit zurückbekommen könnte, wäre das im Moment in Ordnung.

Vielen Dank im Voraus!

Antwort

8

Sie könnten html2ps und dann imagemagick konvertieren.

Ein Gedanke: Wenn Ihr Ziel (Kindle?) PNG unterstützt, verwenden Sie dieses anstelle JPEG für dieses Text-Rendering.

+0

Das hält einige Versprechen. Ich bin mir ziemlich sicher, dass ich diesen Weg vorher gegangen bin und aufgegeben habe, aber ich vergesse, warum, und meine ersten Tests deuten darauf hin, dass es funktionieren könnte. Ich werde versuchen, dies morgen oder Montag in Gang zu bringen, um zu bestätigen, dass diese Lösung funktioniert. Vielen Dank! – CommonsWare

+0

Kein Würfel. Den gleichen ImageMagick-Fehler bei etwa der gleichen Häufigkeit erhalten. Muss eine Postscript-Eingabe sein. – CommonsWare

+5

Tatsächlich zeigten weitere Experimente, dass der Fehler nur bei der html2ps-Lösung auftritt, wenn die Quelldatei nachgestellte Leerzeichen hatte, die ein effektiv leeres Bild erzeugten. Also, das funktioniert! Danke vielmals! – CommonsWare

0

Ihre Linux-Distribution kann Pango-View und eine Auswahl an Schriftarten enthalten. Dies funktioniert auf meinem FC6 System:

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

Sie erhalten eine proportionale Schrift identifizieren müssen, die auf Ihrem System installiert ist. Schau dich um /usr/share/fonts/.

Pango unterstützt Unicode.

Lassen Sie das -q während des Experimentierens nicht in einer Datei, sondern in einem Fenster anzeigen.

0

Verwenden Sie kein JPEG. Es ist für Fotos optimiert und macht eine schreckliche Arbeit mit Text und Strichzeichnungen. Verwenden Sie stattdessen gif oder png.Mein Verständnis ist, dass Gif jetzt patentfrei ist, also würde ich das einfach verwenden.

+2

Keine Option auf Kindle - JPEG oder Büste. – CommonsWare

1

html2ps ist ein exzellentes Programm - ich habe es einmal verwendet, um ein 1300-Seiten-Buch zu erstellen, aber es ist übertrieben, wenn Sie nur einfachen Text -> Postscript wollen. Betrachten Sie stattdessen enscript.

1

Da die Frage der Konvertierung von HTML nach JPG beantwortet wurde, werde ich einen Vorschlag zum hübschen Drucker machen. Ich habe Pygments gefunden, um ziemlich fantastisch zu sein. Es unterstützt verschiedene Themen und hat Lexer für so ziemlich jede Sprache da draußen (sie werben dafür, dass es sogar brainfuck hervorhebt). Es gibt ein Befehlszeilentool, das auf den meisten Linux-Distributionen zur Verfügung steht.

Verwandte Themen