yazılım gereksinimleri
Aşağıdaki yazılım paketleri hem Windows hem de Linux sistemleri için mevcuttur ve eksiksiz bir çalışma çözümü için gereklidir:
- gvim - Sözdizimi vurgulu kaynak kodunu HTML'ye dışa aktarmak için kullanılır.
- moria - Sözdizimi vurgulama için renk şeması.
- wkhtmltoimage - HTML belgelerini PNG dosyalarına dönüştürmek için kullanılır.
- gawk ve sed - Metin işleme araçları.
- ImageMagick - PNG'yi kırpmak ve kenarlık eklemek için kullanılır.
Genel adımlar
Çözüm nasıl çalışıyor:
- Kaynak kodunu, renk sıçraması ekleyebilecek bir düzenleyiciye yükleyin.
- Kaynak kodu bir HTML belgesi olarak dışa aktarın (gömülü
FONT
etiketlerle).
- Arkaplan özniteliğini HTML belgesinden soyun (saydamlığa izin vermek için).
- HTML belgesini bir PNG dosyasına dönüştürün.
- PNG sınırını kesin.
- Resmin çevresine küçük, 25 piksel kenarlık ekleyin.
- Geçici dosyaları silin.
Komut uzunluğu 80 karakterin altındaki satırları içeren kaynak dosyalar için aynı genişlikte görüntüler oluşturur. Çizgileri 80 karakterden uzun olan kaynak dosyalar, tüm çizgiyi korumak için görüntülerin gerektiği kadar geniş olmasına neden olur.
Kurulum
Bileşenleri aşağıdaki konumlara takın:
- gvim -
C:\Program Files\Vim
- moria -
C:\Program Files\Vim\vim73\colors
- wkhtmltoimage -
C:\Program Files\wkhtml
- ImageMagick -
C:\Program Files\ImageMagick
- Gawk ve Sed -
C:\Program Files\GnuWin32
Not: ImageMagick, convert.exe
Windows convert
komutunun yerini alamayan bir programa sahiptir . Bu nedenle convert.exe
, toplu iş dosyasında (ImageMagick eklenmesi yerine) tam yolun kodlanmış olması gerekir PATH
.
Ortam Değişkenleri
PATH ortam değişkenini şu şekilde ayarlayın :
"C:\Program Files\Vim\vim73";"C:\Program Files\wkhtml";"C:\Program Files\GnuWin32\bin"
Toplu iş dosyası
Kullanarak çalıştırın:
src2png.bat src2png.bat
src2png.bat
Aşağıdaki içerikleri kopyalayarak adlı bir toplu iş dosyası oluşturun :
@ECHO OFF
SET NUMBERS=-c "set number"
IF "%2" == "" SET NUMBERS=
ECHO Converting %1 to %1.html...
gvim -e %1 -c "set nobackup" %NUMBERS% -c ":colorscheme moria" ^
-c :TOhtml -c wq -c :q
REM Remove all background-color occurrences (without being self-referential)
sed -i "s/background-color: #......; \(.*\)}$/\1 }/g" %1.html
ECHO Converting %1.html to %1.png...
wkhtmltoimage --format png --transparent --minimum-font-size 80 ^
--quality 100 --width 3600 ^
%1.html %1.png
move %1.png %1.orig.png
REM If the text file has lines that exceed 80 characters, don't crop the
REM resulting image. (The book automatically shrinks large images to fit.)
REM The 3950 is the 80 point font at 80 characters with padding for line
REM numbers.
SET LENGTH=0
FOR /F %%l IN ('gawk ^
"BEGIN {x=0} {if( length($0)>x ) x=length()} END {print x;}" %1') ^
DO (
SET LENGTH=%%l
)
SET EXTENT=-extent 3950x
IF %LENGTH% GTR 80 SET EXTENT=
REM Trim the image height, then extend the width for 80 columns, if needed.
REM The result is that all images will be resized the same amount, thus
REM making the font size the same maximum for all source listings. Source
REM files beyond the 80 character limit will be scaled as necessary.
ECHO Trimming %1.png...
"C:\programs\ImageMagick\convert.exe" -format png %1.orig.png ^
-density 150x150 ^
-background none -antialias -trim +repage ^
%EXTENT% ^
-bordercolor none -border 25 ^
%1.png
ECHO Removing old files...
IF EXIST %1.orig.png DEL /q %1.orig.png
IF EXIST %1.html DEL /q %1.html
IF EXIST sed*. DEL /q sed*.
İyileştirmeler ve optimizasyonlar memnuniyetle karşılanır.
Not: wkhtmltoimage'in en son sürümü , arka plan rengini geçersiz kılmayı düzgün şekilde ele alır. Dolayısıyla, arkaplan renkleri için CSS'yi çıkarmak için hat teoride artık gerekli değildir.
wkhtmltoimage
ve sayfanın genişliğini ayarlamak yeterli değil? html sayfalarının içeriği tarafından belirlendiğinden yükseklik belirtilemez. imho width gerçekte ihtiyacınız olan tek şey, istediğiniz genişliği inç başına istediğiniz piksel sayısına göre hesaplayabilirsiniz.