소프트웨어 요구 사항
다음 소프트웨어 패키지는 Windows 및 Linux 시스템 모두에서 사용 가능하며 완전한 작동 솔루션에 필요합니다.
일반적인 단계
솔루션 작동 방식은 다음과 같습니다.
- 색상을 밝게 추가 할 수있는 편집기에 소스 코드를로드하십시오.
- 소스 코드를 HTML 문서 (내장
FONT
태그 포함) 로 내 보냅니다 .
- 투명성을 허용하기 위해 HTML 문서에서 배경 속성을 제거하십시오.
- HTML 문서를 PNG 파일로 변환하십시오.
- PNG 테두리를 자릅니다.
- 이미지 주위에 작은 25 픽셀의 테두리를 추가하십시오.
- 임시 파일을 삭제하십시오.
스크립트는 길이가 모두 80 자 미만인 행을 포함하는 소스 파일에 대해 모두 동일한 너비의 이미지를 생성합니다. 80 자 이상의 줄을 가진 소스 파일은 전체 줄을 유지하는 데 필요한만큼 이미지를 넓 힙니다.
설치
다음 위치에 구성 요소를 설치하십시오.
- gvim을 -
C:\Program Files\Vim
- 모리아 -
C:\Program Files\Vim\vim73\colors
- wkhtmltoimage -
C:\Program Files\wkhtml
- ImageMagick이 -
C:\Program Files\ImageMagick
- 둔한 및 Sed의 -
C:\Program Files\GnuWin32
참고 : ImageMagick에는 convert.exe
Windows convert
명령을 대체 할 수없는 프로그램 이 있습니다 . 이로 인해 convert.exe
배치 파일에 전체 경로를 하드 코딩해야합니다 (ImageMagick을에 추가하는 대신 PATH
).
환경 변수
PATH 환경 변수 를 다음으로 설정하십시오 .
"C:\Program Files\Vim\vim73";"C:\Program Files\wkhtml";"C:\Program Files\GnuWin32\bin"
배치 파일
다음을 사용하여 실행하십시오.
src2png.bat src2png.bat
src2png.bat
다음 내용을 복사하여 배치 파일을 작성하십시오 .
@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*.
개선 및 최적화를 환영합니다.
참고 : 최신 버전의 wkhtmltoimage 는 배경색 재정의를 올바르게 처리합니다. 따라서 이론적으로 배경색에 대한 CSS를 제거하는 줄은 더 이상 필요하지 않습니다.
wkhtmltoimage
페이지 너비를 설정하는 것이 충분하지 않습니까? 높이는 html 항목의 내용에 따라 결정되므로 지정할 수 없습니다. imho 너비는 실제로 필요한 전부입니다. 원하는 인치당 픽셀 수를 기준으로 필요한 너비를 계산할 수 있습니다.