Konvertierung von ASCII-Quelldateien in JPEG-Dateien

8

Ich veröffentliche technische Bücher, gedruckt, PDF und Kindle / MOBI, mit EPUB unterwegs.

Der Kindle unterstützt keine Monospace-Fonts, die für Quellcode-Listings 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 ASCII-Eingabedatei 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, um dies zu tun, beinhaltet:

  1. Ausführen von expand , um eine konsistente Tabulatorgröße von 2 Leerzeichen festzulegen, die zu ...
  2. pipettiert
  3. a2ps , die zu ...
  4. pumpt
  5. Ein kleines Perl-Snippet zum Hinzufügen einer "%%LanguageLevel: 3\n" -Zeile, die zu ...
  6. pipettiert
  7. ImageMagicks convert , um das (E) PS zu nehmen und ein JPEG daraus zu machen, mit einem passenden Hintergrund, zugeschnitten auf 575x148+5+28 , etc.

Das hat zu 100% funktioniert. Es funktioniert jetzt 95% der Zeit. Der Rest der Zeit, bekomme ich convert: geometry does not contain image Fehler, die ich nicht loswerden kann, teilweise 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 das HTML in JPEGs zu konvertieren, den Bildschirm zu automatisieren -grabs von einer eingebetteten Gecko-Engine. Zuverlässigkeit stank, weshalb ich zu meinem aktuellen Mechanismus wechselte.

Wenn Sie also Sie wären und die Quellenlisten automatisch in JPEG-Bilder umwandeln müssten, wie würden Sie das machen? 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 aktueller Prozess ist hässlich, aber wenn ich ihn wieder auf 100% Zuverlässigkeit bringen könnte, wäre das für den Moment okay.

Vielen Dank im Voraus!

    
CommonsWare 25.07.2009, 19:26
quelle

5 Antworten

8

Sie könnten html2ps und dann imagemagick's convert in Betracht ziehen.

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

    
Will 25.07.2009, 20:05
quelle
1

html2ps ist ein exzellentes Programm - ich habe es einmal benutzt, um ein 1300-seitiges Buch zu erstellen, aber es ist übertrieben, wenn Sie einfach nur Text haben wollen - & gt; Nachschrift. Betrachten Sie stattdessen enscript.

    
Edward Falk 19.05.2010 16:46
quelle
1

Da die Frage der Konvertierung von HTML nach JPG beantwortet wurde, werde ich einen Vorschlag zum hübschen Drucker machen. Ich habe Segmente als ziemlich genial gefunden. 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 verfügbar ist.

    
Felix 19.06.2010 22:31
quelle
0

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

%Vor%

Sie müssen eine auf Ihrem System installierte Schriftart mit einem festen Abstand finden. Schauen Sie sich /usr/share/fonts/ an.

Pango unterstützt Unicode.

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

    
Liudvikas Bukys 27.08.2009 21:28
quelle
0

Benutze 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 benutzen.

    
Edward Falk 11.05.2010 16:16
quelle