KTUGFaq

KTUG FAQ

로그인:
비밀번호:
가입
A king's castle is his home.
FrontPage › GhostScriptUtilities
PostScript / GhostScript / 유틸리티

GhostScript는 다양한 유틸리티를 함께 제공한다. 그 가운데 자주 쓰이는 것을 살펴보자. GhostScript 유틸리티는 gs 또는 gswin32c를 이용한 배치 명령어 형태로 사용된다.

목차

1 PS, EPS, PDF
1.1 ps2pdf
1.2 pdf2ps
1.3 eps2eps
1.4 ps2ps
1.5 ps2epsi
1.6 pdfopt
1.7 ps2ascii
2 PS Font 관련
2.1 font2c
2.2 pfb2pfa
3 응용
3.1 (E)PS 파일을 JPEG 그림으로 변환하기
3.2 PDF(JPG) 파일의 bounding box 얻기

1 PS, EPS, PDF

1.1 ps2pdf

#> ps2pdf [options] input.[e]ps [output.pdf]
PS 또는 EPS를 PDF로 바꾸어줌.

이 스크립트는 대략 다음과 같이 하는 것이다.
#> gs -q -dSAFER -dNOPAUSE -dBATCH -dDEVICE#pdfwrite -sOutputFile#output.pdf -c .setpdfwrite -f input.ps
명령행에서 =을 받아들이지 않는 경우 #을 사용한다. gs는 윈도에서는 gswin32c이다.

이 스크립트는 DVIPDFMx가 컴파일 과정에서 EPS 그림을 처리하기 위해서도 사용하는데, 이 때의 명령은 다음과 같다. 이 내용은 dvipdfmx.cfg 또는 config(DVIPDFm)에 D 지시자로 설정되어 있다.
D "gs -q -dNOPAUSE -dBATCH -sPAPERSIZE=a4 -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 \
   -dAutoFilterGrayImages=false -dAutoFilterColorImages=false -dGrayImageFilter=/FlateEncode \ 
   -dColorImageFilter=/FlateEncode -dUseFlateCompression=true -sOutputFile=%o %i -c quit"

1.2 pdf2ps

#> pdf2ps [options] input.pdf output.ps

이 스크립트는 다음과 동일하다.
#> gs -q -dNOPAUSE -dBATCH -dSAFER -sDEVICE#pswrite -sOutputFile#output.ps input.pdf -c quit

즉, pswrite라는 프린터드라이버로 출력해주는 것인데, Windows의 경우 pswrite로 인쇄하면 대부분의 한글 글꼴은 비트맵으로 바뀐다. 이 때문에 한글이 포함된 PDF를 PS로 바꿀 때는 GhostScript pdf2ps보다는 XPdf 유틸리티인 pdftops를 사용하도록 권장하는 경우가 많다.

1.3 eps2eps

#> eps2eps [options] input.eps output.eps

이 스크립트는 input.eps를 읽어서 epswrite라는 프린터디바이스로 출력한다. 맨처음 다른 그림 프로그램에서 export된 EPS가 불필요한 garbage를 포함하고 있거나 한 경우 이 명령을 실행하면 비교적 깨끗한 EPS를 얻을 수 있다.

1.4 ps2ps

eps2eps와 마찬가지로 input.ps를 더 작고 빠른 output.ps로 변환해주는 GhostScript distiller.
#> ps2ps [options] input.ps output.ps

ps를 바로 eps로 변환할 수도 있다.
#> ps2ps input.ps output.eps


1.5 ps2epsi

#> ps2epsi infile.ps outfile.epsi
EPSI란, EPS와 동일하나 preview를 위한 비트맵을 내장하고 있는 PostScript 포맷 가운데 하나이다. 이 비트맵은 low resolution, no color의 흑백 비트맵으로 화면에서 보기에는 썩 좋지 않으나, 인쇄할 때는 실제 PostScript를 사용하게 된다.
<!> 일반적으로 EPS로 변환하는 것만이 목적이라면 이 유틸리티보다는 PS2Eps가 낫다. 그러나 PS2Eps는 비트맵을 삽입하지는 않는다.

1.6 pdfopt

PDF 파일을 optimize해준다. 특히 PDF 파일을 "linearize"하고, "hint pointers"를 삽입하여, 네트웍에서 PDF를 직접 디스플레이하는 경우 전체 파일의 다운로드가 끝나지 않아도 페이지가 표시되도록 만들어준다. 예컨대, 다음과 같은 두 파일을 온라인에서 읽으면서 비교해보자.

1.7 ps2ascii

PS의 텍스트를 읽어서 출력해준다. 한글은 대부분의 경우 처리하지 못하는 경우가 많으나 영문 PS 문서는 비교적 잘 처리한다.

2 PS Font 관련

2.1 font2c


2.2 pfb2pfa


3 응용

3.1 (E)PS 파일을 JPEG 그림으로 변환하기

위의 gs 인터페이스를 잘 살펴보면 일정한 규칙이 있음을 할 수 있다. 더 자세한 것은 GhostScript 관련 문서를 참고할 것이고, 여기서는 EPS 그림을 읽어들여서 jpeg 프린터드라이버로 출력해보자.

gs -q -dNOPAUSE -dBATCH -dSAFER -sDEVICE#jpeg -dEPSCROP -r100 -sOutputFile#output.jpg input.eps -c quit
-dEPSCROP을 주지 않으면 gs 기본 PAPERSIZE를 이용한다. -r100은 Resolution 설정이다.

KTUGOperate:7154에는 PS 입력파일의 각 페이지를 낱장으로 JPEG 출력하는 방법에 대한 소개가 있다.

gs -sDEVICE=jpeg -r100 -dNOPAUSE -sOutputFile=test%d.jpg orig.pdf

이 명령은 orig.pdf의 각 페이지를 test1.jpg, test2.jpg, ... 등으로 쪼개어 저장해준다.

3.2 PDF(JPG) 파일의 bounding box 얻기

KC2008(=texlive 2008) 이후 DVIPDFMx를 사용할 때 .bb 파일을 미리 만들어두어야 하는 불편이 없어졌다. graphicx 패키지의 옵션으로 dvipdfmx 를 지정한 후, latex 명령 실행 시에 -shell 옵션을 추가하면 필요한 .bb 또는 .xbb를 직접 만들기 때문이다. 또한, 이렇게 하면 DVIPDFMx가 처리하는 jpg 그림 등의 크기가 pdftex으로 처리한 것과 동일한 결과를 얻는다.(그 전 ebb를 이용할 때는 pdftex에 비해서 dvipdfm 및 dvipdfmx가 이런 그림을 더 크게 처리했었다.)
# latex -shell foo
# dvipdfmx foo

예전 내용은 PDF그림포함하기/Obsolete로 옮겼습니다.



^
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2008-01-10 16:17:23
Processing time 0.0442 sec