[ WWW ] in KIDS 글 쓴 이(By): ddaeng (김 경 철) 날 짜 (Date): 1995년03월08일(수) 02시36분10초 KST 제 목(Title): [Re] [질문] Postcsript화일의 프린팅??? 음.. 이런 이야기 전에 몇번 나온적 있는데요.. 최종판이 되길 바라면서.. 일단, ghostview는 ps화일을 그냥 보여주는거구요.. 거기서 print를 하드라도 그 ps화일을 그대로 프린터로 보내기만 합니다(정확히는 spooling시키지여) 그러니까 리눅스에서, 프린터에다 input filter 를 지정해 줘서 거기서 gs를 돌려서, ps화일을 프린터에 맞는 빗맵으로 바꾸게 해주면 virtural한 ps 프린터가 되는 셈이지요. 리눅스 에서 /etc/printcap 이 프린터를 지정해 주는건데요.. 일단 거기서 # 으로 시작하는 라인은 전부 코멘트 이니까 무시해도 되고요. 거기 이미 지정된 프린터가 있을꺼야요. 그거를 고쳐주면 됩니다. 일단, 현재 커널이 어느 디바이스를 인식하고 있는지 확인해야 돼요, /var/adm/messages화일을 보면 부팅할때 나오는 메시지 들이 계속 쌓여 있는데 거기를 봐서 패러럴 포트(프린터 포트)가 무엇인지 확인하세여 lp_init: 으로 시작하는 게 프린터 포트에 관한 메시지이에여. 아마 /dev/lp1 일꺼야요(이후의 글은 lp1인것으로 가정함) 음.. 일단 순서적으로 말하자면 1) /etc/printcap에 다음과 같은 두 줄을 쳐넣는다. -------------------cut here----------------- lp:lp=/dev/lp1:sd=/usr/spool/lp1:\ :if=/usr/local/bin/lpf_gs: -------------------cut here----------------- 아마도 위의 두 줄과 비슷한 엔트리가 이미 printcap 에 있을겁니다 그것을 고쳐도 되고, 그것을 commend-out해버리고 위의 내용을 쳐넣어도 됩니다. 여기에서 /usr/spool/lp1라는 디렉토리가 존재하는지 확인하고, 만약 존재하지 않는다면, 빈 디렉토리를 그 이름으로 하나 만들어 주면 됩니다. 2) 다음 프로그램을 쳐 넣는다(lpf_gs.c라고 합세다) -------------------cut here----------------- #include <stdio.h> #define GS_BIN "/usr/bin/gs" main() { execlp( GS_BIN, GS_BIN, "-q", "-sPAPERSIZE=a4", "-sDEVICE=djet500", "-r300", "-dSAFER", "-dNOPAUSE", "-sOUTPUTFILE=-", "-", NULL ); } -------------------cut here----------------- 프린터가 데스크젯500인 경우를 가정하슴메다. 만약 그렇지 않다면 해당되는 다른 디바이스 이름을 지정해주면 되구여, /usr/src/ghostscript-2.6.1/Makefile 안에 디바이스에 대한 항목들이 나옵니다, 참고 하시길. 3) 위의 프로그램을 컴파일 해서 /usr/local/bin에 둔다. # cc -o lpf_gs lpf_gs.c # cp lpf_gs /usr/local/bin 위의 1), 2), 3) 과정이 문제 없이 끝났다면 셋업이 완료된 셈입니다 /usr/lib/ghostscript/examples 로 가서 tiger.ps같은 예제 화일들을 한번 찍어보세여. # cd /usr/lib/ghostscript/examples # lpr tiger.ps 이러고 나서 ps -ax 해보면 아마도 gs가 돌고 있을꺼에여. 현재 spooling 되고 있는 (프린트 하고있는) 화일을 보려면 lpq 명령을 이용하문 댑니다. --- (김 경 철)Kim, Kyoung-chul ddaeng7@glory.kaist.ac.kr Computer System Lab. #1 +82-2-958-3385 Dept. of Infomation and Communication, KAIST, Seoul, Korea |