fundo
O lote converte vários arquivos de origem destacados em sintaxe (C, SQL, Java, PHP, lote, bash) em imagens de alta resolução (600 dpi), adequadas para um eBook e livro impresso.
Soluções com falha
Até agora, várias tentativas:
- OpenOffice ou LibreOffice - É necessário reimportar o código fonte no documento toda vez que o arquivo fonte for alterado. (Ou seja, a solução não pode ser facilmente automatizada para centenas ou milhares de arquivos de origem.)
- enscript. Não é possível alterar facilmente as cores, renderiza imperfeitamente a saída, não é abrangente.
- LyX / LaTeX. Renderiza imperfeitamente a saída.
- gvim para HTML - HTMLDOC para PostScript - GhostScript para PNG. HTMLDOC ignora
font
tags. - gvim para HTML - html2ps - GhostScript para PNG. As cores RGB não são reconhecidas por
html2ps
. - Firefox para PostScript - GhostScript para PNG. Obnoxiously tortuoso.
- gvim para HTML - OmniFormat para qualquer coisa. Versão gratuita inadequada para processamento em lote; muitos pop-ups de publicidade.
- pigmentos. Não é possível alterar facilmente a resolução da imagem; não possui a variedade de esquemas de cores do gvim.
Solução mais próxima
A solução que quase funciona é:
- gvim para HTML - wkhtmltopdf para PDF. Exigirá pós-processamento com o ImageMagick ( wkhtmltoimage não pode definir a resolução da imagem, apenas a largura da página).
Exigências
- Windows e Linux, mas qualquer um é aceitável.
- Grátis ou OSS
- Somente linha de comando (adequada para processamento em lote)
- Mude facilmente o esquema de cores
- Suporte: PHP, lote, bash, Java, JavaScript, R, C e SQL
Questão
Existem outras maneiras de converter o código-fonte destacado em sintaxe em uma imagem de alta resolução (600 dpi)?
Obrigado!
gvim
syntax-highlighting
imagemagick
ghostscript
Dave Jarvis
fonte
fonte
wkhtmltoimage
e definir a largura da página não é suficiente? a altura não pode ser especificada, pois é determinada pelo conteúdo do material html. imho width é tudo o que você realmente precisa, você pode calcular a largura necessária com base em quantos pixels por polegada deseja.Respostas:
Requisitos de Software
Os seguintes pacotes de software estão disponíveis para sistemas Windows e Linux e são necessários para uma solução completa e funcional:
Etapas gerais
Aqui está como a solução funciona:
FONT
tags incorporadas ).O script gera imagens com a mesma largura para arquivos de origem que contêm linhas com menos de 80 caracteres. Os arquivos de origem com linhas com mais de 80 caracteres resultam em imagens com a largura necessária para manter toda a linha.
Instalação
Instale os componentes nos seguintes locais:
C:\Program Files\Vim
C:\Program Files\Vim\vim73\colors
C:\Program Files\wkhtml
C:\Program Files\ImageMagick
C:\Program Files\GnuWin32
Nota: O ImageMagick possui um programa chamado
convert.exe
, que não pode substituir oconvert
comando do Windows . Por esse motivo, o caminho completo paraconvert.exe
deve ser codificado no arquivo em lotes (em vez de adicionar o ImageMagick aoPATH
).variáveis ambientais
Defina a variável de ambiente PATH para:
Arquivo em lote
Execute-o usando:
Crie um arquivo em lotes chamado
src2png.bat
, copiando o seguinte conteúdo:Melhorias e otimizações são bem-vindas.
Nota: A versão mais recente do wkhtmltoimage manipula corretamente a substituição da cor do plano de fundo. Portanto, a linha para remover o CSS para cores de segundo plano não é mais necessária, em teoria.
fonte
lendo a página de manual de
wkhtmltoimage
:se isso não ajudar: a criação de uma solução simples com o Qt e o Webkit (incluído) é bastante direta.
fonte
dpi
opção não está disponível na versão do Windows.Você também pode usar a linha de comando do Open Office para Html-> PDF:
http://www.oooninja.com/2008/02/batch-command-line-file-conversion-with.html
fonte
wkhtmltoimage
. Além disso, sua solução é teórica. Se você criar um arquivo em lotes de trabalho que reproduza exatamente os resultadossrc2png.bat
conforme indicado na resposta correta (com imagens de plano de fundo transparentes) e converta HTML em menos tempo do que o usowkhtmltoimage
enquanto é uma solução totalmente automática, recomendamos que você publique seus resultados como alternativa . Além disso, qual seria a vantagem de substituir owkhtmltoimage
OpenOffice?