2009-07-25 8 views
8

Je publie des livres techniques, en version imprimée, PDF et Kindle/MOBI, avec EPUB en cours de route.Conversion de fichiers ASCII source en fichiers JPEG

Le Kindle ne prend pas en charge les polices monospace, qui sont plutôt utiles pour les listes de codes sources. La seule façon de faire des polices monospace est de convertir le texte (source Java, HTML, XML, etc.) en images JPEG. Plus précisément, en raison de problèmes de pagination, un fichier ASCII d'entrée donné doit être divisé en tranches de ~ 6 lignes chacune, chaque tranche étant transformée en JPEG, de sorte que les listes peuvent couvrir un écran. C'est une douleur royale.

Mon mécanisme actuel de le faire consiste à:

  1. Exécution expand pour définir une constante taille de l'onglet 2-espace, qui tuyaux à ...
  2. a2ps qui pipes à ...
  3. Un petit extrait Perl pour ajouter une ligne "%%LanguageLevel: 3\n", qui ...
  4. ImageMagick's convert, pour prendre le (E) PS et en faire un JPEG, avec un arrière-plan approprié, recadrée à 575x148+5+28, etc.

Cela avait l'habitude de fonctionner à 100% du temps. Cela fonctionne maintenant 95% du temps. Le reste du temps, j'obtiens des erreurs convert: geometry does not contain image, dont je n'arrive pas à me débarrasser, en partie parce que je ne comprends pas quel est le problème. Avant ce processus, j'avais l'habitude d'utiliser un joli moteur d'impression (source-highlight) pour extraire le HTML du code source ... mais la seule chose que je pouvais trouver pour convertir le HTML en JPEG était d'automatiser grappes d'un moteur Gecko intégré. Fiabilité puant, c'est pourquoi je suis passé à mon mécanisme actuel. Donc, si vous étiez vous, et que vous deviez transformer les listes de sources en images JPEG, de manière automatisée, comment le feriez-vous? Les points bonus s'ils offrent une sorte de processus d'impression (par exemple, des mots-clés en gras)! Ou, si vous savez ce qui provoque généralement convert: geometry does not contain image, cela pourrait aider. Mon processus actuel est moche, mais si je pouvais revenir à 100% de fiabilité, ce serait très bien pour l'instant.

Merci d'avance!

Répondre

8

Vous pourriez envisager de convertir html2ps puis imagemagick.

Une idée: si votre cible (Kindle?) Prend en charge le format PNG, utilisez-la plutôt que JPEG pour ce rendu de texte.

+0

Cela est prometteur. Je suis à peu près sûr que j'ai déjà emprunté ce chemin avant de l'abandonner, mais j'oublie pourquoi, et mes tests préliminaires suggèrent que ça pourrait marcher. Je vais essayer de le faire demain ou lundi pour confirmer que cette solution fonctionne. Merci! – CommonsWare

+0

Pas de dés. Obtenir la même erreur ImageMagick à peu près à la même fréquence. Doit être une entrée en Postscript. – CommonsWare

+5

En fait, d'autres expériences ont montré que l'erreur se produisait uniquement avec la solution html2ps, lorsque le fichier source contenait des espaces qui entraînaient la création d'une image effectivement vide. Donc, cela fonctionne! Merci beaucoup! – CommonsWare

0

Votre distribution Linux peut inclure une vue pango et un assortiment de polices. Cela fonctionne sur mon système FC6:

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

Vous devez identifier une police monospaced qui est installé sur votre système. Regardez autour de /usr/share/fonts/.

Pango prend en charge Unicode. Laissez le -q pendant que vous expérimentez, il s'affichera dans une fenêtre au lieu d'un fichier.

0

N'utilisez pas jpeg. Il est optimisé pour les photos et fait un travail terrible avec le texte et le dessin au trait. Utilisez gif ou png à la place.Ma compréhension est que gif est maintenant sans brevet, donc je voudrais juste utiliser cela.

+2

Aucune option sur Kindle - JPEG ou bust. – CommonsWare

1

html2ps est un excellent programme - je l'ai utilisé pour produire un livre de 1300 pages une fois, mais c'est exagéré si vous voulez juste du texte brut -> postscript. Considérez enscript à la place.

1

Parce que la question de la conversion HTML en JPG a été répondu, je vais offrir une suggestion sur la jolie imprimante. J'ai trouvé Pygments être assez génial. Il prend en charge différents thèmes et a des lexers pour à peu près n'importe quelle langue là-bas (ils annoncent le fait qu'il met même en évidence brainfuck). Il existe un outil de ligne de commande disponible sur la plupart des distributions Linux.

Questions connexes