Tcl/Tk에서 프린터로 출력하기

bonkora의 아바타

Tcl/Tk에서 프린터를 통하여 용지에 출력해야할 때가 있을 것입니다. 출력을 지원하기 위한 확장패키지가 있는데 ( http://pages.videotron.com/cclients/files/tkprint1.1.html ) 안타깝게도 한글이 제대로 출력이 되지 않는 문제가 있었습니다.

Tcl/Tk 자체적으로 해결될 수 있으면 좋겠지만 차선책으로 외부 프로그램을 사용하여 해결할 수도 있겠습니다. 예를 들어 윈도에 기본적으로 들어 있는 노트패드를 사용하는 것입니다.

exec notepad.exe /p file.txt

이런 식으로 사용합니다. 실행시켜보면 화면에 잠시 노트패드의 창이 떴다가 사라지는데 그것을 나타나지 않게 하려면 아래과 같이 합니다.

exec cmd.exe /c start /min notepad.exe /p file.txt

아쉬운대로 사용할 수 있겠으나 폰트의 종류, 글자크기, 용지의 여백 등의 옵션들을 조정할 수 없어서 불편합니다. 워드패드를 사용할 수도 있으나 이때도 마찬가지입니다.

그래서 Tcl/Tk에서 사용할 만한 텍스트파일 프린팅 유틸리티를 찾으려고 인터넷을 뒤졌는데 쓸만한 것을 발견하여 같이 공유하고자 이 글을 올립니다.

먼저 프로그램을 다운로드받아야겠지요. 아래의 사이트를 방문하십시오.

http://www.lerup.com/printfile/descr.html

여기서 prf32-216.zip를 받아서 압축을 풉니다. 그러면 다섯개의 파일이 나옵니다. setup.exe를 실행시켜서 설치를 하는데 굳이 설치할 필요없이 실행파일만을 사용하기로 하겠습니다. PrFile.chm은 도움말 파일이니 필요한 내용이 있으면 읽어 보시기 바랍니다.

우리에게 필요한 것은 PrFile32.exe입니다. 이 프로그램은 직접 실행시켜 사용할수도 있고 명령프로롬프트 창(MS-DOS 창), 또는 Tcl/Tk에서 exec 명령으로 불러서 사용할 수도 있습니다. 일단 탐색기를 열어서 이 프로그램을 더블클릭하여 실행시켜 보겠습니다.

위 화면이 프로그램의 주화면입니다. 메뉴에 대해 간략하게 설명하겠습니다.

(1) 파일을 출력합니다. 이 버튼을 누르면 파일선택 창이 나오고 선택하면 출력이 시작됩니다.

(2) 폰트나 여백 등의 옵션을 조정합니다.

(3) 프로그램을 마칩니다.

위 화면은 “Settings…” 버튼을 눌렀을 때 나타나는 화면입니다. 몇가지만 차례대로 설명하겠습니다.

(1) 설정한 값을 저장합니다.

(2) 설정한 값을 저장하지 않고 적용합니다.

(3) 프린터를 선택하는 “인쇄” 창을 나타나게 할지의 여부를 선택합니다.

체크하면 인쇄하기 전 위의 창이 나타납니다.

(4) 사용할 프린터를 선택합니다.

(5) 텍스트파일 관련 옵션을 조정합니다.

(6) 용지 관련 옵션을 조정합니다.

텍스트파일 관련 옵션을 조정하기 위한 화면입니다.

(1) 글자의 크기를 정합니다. 한 페이지에 몇 행이 들어갈 것인가를 입력하면 글자의 크기가 정해집니다. 50 내지 70 정도가 적절할 것입니다. 인쇄해 보시고 정하시면 되겠습니다. 한 행당 글자수를 입력하는 칸이 있는데 필자는 공란으로 두었습니다.

(2) 폰트를 선택합니다.

(3) 헤더와 푸터를 입력합니다. 페이지 아래의 중앙에 “- 1 – “ 이렇게 페이지 번호를 달려면 Footer 칸에 “&c- &# -“을 입력합니다. &c는 중앙을 의미하고 &#는 페이지 번호를 의미합니다. 더 자세한 것은 도움말 파일을 참조하십시오.

용지를 설정하기 위한 화면입니다.

(1) 한 장의 용지에 몇 페이지를 출력할 것인가를 지정합니다. 보통의 경우라면 pages wide와 pages high를 각각 1로 합니다. 처음 실행시에는 pages wide가 2로 되어있습니다.

(2) 용지의 방향입니다. 일반적으로는 Portrate를 선택합니다.

(3) 체크하면 페이지의 둘레에 선이 나타납니다. 처음 실행시에는 체크가 되어있는 상태입니다. 일반적인 경우에는 체크할 필요가 없습니다.

(3) 상하좌우의 여백을 조정합니다.

이렇게 하여 필요한 옵션을 조정했습니다. 옵션은 따로 설정파일에 지정되지는 않습니다. 옵션이 저장되는 위치가 어디인가 찾아보았는데 도움말 파일에도 나와 있지는 않았습니다. 레지스트리에 저장되는게 아닐까 생각합니다.

이제 이 실행파일 PrFile32.exe를 현재 디렉토리에 복사해 넣습니다. Tcl/Tk 안에서 아래와 같은 코드를 넣으면 텍스트파일을 프린트 할 수 있습니다.

exec PrFile32.exe file.txt

이렇게 하면 인쇄가 끝나고 이 프로그램의 주화면이 나타납니다. 이것이 나타나지 않게 하려면 아래와 같이 합니다. “/q”는 quite mode를 의미합니다.

exec PrFile32.exe /q file.txt

이렇게 하면 전체 출력과정에서 프로그램 작동화면이 전혀 나타나지 않습니다.

이 실행파일 PrFile32.exe를 관리자님이 만드신 MyTcl로 Tcl 코드의 실행파일을 만들 때 이 속에 넣어버리는 방법을 시도해 보았는데 실패했습니다. 다른 파일은 가능했는데 EXE 파일 속에 또다른 EXE 파일을 넣는 것이라 안되는 것인지 잘 모르겠습니다.

그리고 Tcl/Tk 프로그램을 만들 때 텍스트 위젯 속의 내용이라든가 뭔가 프린터로 출력하고 싶을 때에는 일단 임시로 텍스트파일로 저장한 후 PrFile32.exe로 출력한 다음 그 텍스트파일을 지우는 방법을 사용하면 될 것입니다.

제가 필요해서 찾아낸 유틸리티이고 유용하게 쓰고 있는데 다른 분들께도 도움이 되었으면 좋겠습니다.

첨부 파일파일 크기
prf32-216.zip137.02 KB