모두의 프린터 써트피아 - moduui peulinteo sseoteupia

모두의 프린터 (tistory.com)

각종 인터넷에서 발급할 수 있는 서류나, 자격증, 증명서를 프린터 없이 PDF로 출력할 수 있는 서비스이다.

윈도우에서만 사용 가능하며, 정부 민원 발급 서류부터 거의 모든 사이트에서 모두의 프린터를 이용하면 pdf로 저장할 수 있다.
출력할 때 모두의 프린터에서 설정한 드라이버 Samsung CLX 6240 Series PS를 선택하고 출력하면 자동으로 PDF로 변환되어 나온다.

모두의 프린터 써트피아 - moduui peulinteo sseoteupia
관리자 페이지 화면

2019년 경에 처음 알게되었는데, 그 이후로 계속해서 사용해 왔던 것 같다.
가끔 지원 불가능한 프린터라고 뜨는 경우가 있는데, 그때는 FAQ를 참고하면 좋을 것 같다.
여기서 이것저것 설치하다 보면 되는 경우가 많았다.
모두의 프린터 FAQ (tistory.com)

너무 잘쓰고 있다.
프린터 드라이버를 등록해서 이를 실제 프린터처럼 인식시키고, 출력데이터를 PS 에서 고스트스크립트를 이용해 PDF로 변환해준다.

추가적으로 설치를 할 때부터 주의해야하는 부분이 있는데, 써트피아 같은 경우 랜덤 폴더명을 사용해 설치해야 정상적으로 프린터 인식이 가능했다. 이미 깔았다면, 다시 깔아야 한다.

https://modu-print.tistory.com/385?category=833311

모두의 프린터 써트피아 - moduui peulinteo sseoteupia

모두의 프린터 써트피아 - moduui peulinteo sseoteupia

https://modu-print.tistory.com/121

모두의 프린터 써트피아 - moduui peulinteo sseoteupia

모두의 프린터 써트피아 - moduui peulinteo sseoteupia

 

프린터 없이 정부사이트(민원24등) PDF 출력하기

제발 간곡히 부탁드립니다. 업데이트 안내글 및 사용설명서는 한 줄도 빼먹지 마시고 꼼꼼히 잘 읽어 주시기 바랍니다. 모두의 프린터는 1년이 넘게 수많은 사용자 분들의 문제 상황을 해결해 오며 지금까지 업데이트되어 왔습니다. 제가 작성한 글들의 내용은 그 한 줄 한 줄이 수십 분 몇 시간씩 시간이 걸려 해결한 문제들로부터 얻은 경험을 가지고 작성된 내용들입니다. 최근 오픈 채팅에서 질문하시는 분들 중 반 이상은 이 글들을 대충 보시고 .. 그냥 암거나 막 다운로드하여 막 실행하시고 안된다고 찾아오시는 분들이 너무나 많습니다. 급한 상황상 빨리 무언갈 해보고 싶으신 마음은 이해합니다만, 다 읽는데 그렇게 오래 걸릴 내용은 아닙니다! 꼭! 제대로 끝까지 정독 부탁드립니다.

** 필독 ** 모두의 프린터가 이래저래 알려지기 시작하면서 2019년 들어 지속적으로 여러 사이트에서 모프를 타겟으로 막고 있는 상황이 반복되면서 기본적으로 사용하시는데 주의할 사항 한가지를 말씀 드리겠습니다.

프린터 제한이 존재하는 사이트가 아닌 프로그램에서의 인쇄나 PDF파일 워드파일등을 인쇄하신는데 사용하시는 경우에는 상관 없으나, 프린터 제한이 존재하는 민원24, 정부24, 대법원인터넷등기소 등의 사이트에서의 인쇄시에는 .. 특히 스마트폰과 연동하여 사용하시는 경우에는 반드시 하나의 인쇄 작업이 완료된 후에 다음 인쇄를 진행하십시요.

연달아서 인쇄 명령을 내리게 되는 경우 앞서 내린 인쇄에 의해 실행된 프린트 서버에 의해 9016 오류등이 발생하여 인쇄가 불가능 할 수 있습니다. 또한 제한이 존재하는 사이트에서의 인쇄시에는 모프는 한번의 인쇄 사이클에 하나의 작업이 존재하는 것을 가정하여 구성된 부분이 많이 존재함으로 다수의 문서를 연달아서 인쇄하는 경우에는 오동작 하거나 인쇄 작업 자체가 막힐 수 있습니다.

모두의 프린터 써트피아 - moduui peulinteo sseoteupia

위와 같이 데이터 수신을 완료하고 프린터 서버를 종료하였다는 이벤트 로그를 확인 하신 후에 다음 인쇄작업을 진행 하시기 바랍니다.

모두의프린터 업데이트 및 다운로드 안내입니다.

모두의 프린터 써트피아 - moduui peulinteo sseoteupia

기존 사용자 분들은 상태정보 중 '업데이트'를 누르시면 신규 버전으로 자동 업데이트됩니다.

1.47 버전 부터는 업데이트 기능이 모두의 프린터에서 별도의 실행파일로 분리되었습니다. 1.47 이전 버전에서는 업데이트 체계가 완전 다른 관계로 1.47부터는 풀버전을 새로 설치하셔야 이후 업데이트 기능을 사용 가능하십니다.

이리된 가장 큰 이유는 .. 원래 모프는 실행파일 단 하나로만 배포되던 프로그램입니다. 이 프로그램이 알아서 이것저것 받아서 환경을 구성하고 동작하던 놈인데 최근에는 배포시에 포함되야할 파일도 많고 경우에 따라 실행파일 외의 파일들도 업데이트가 필요하기 때문에 중간 중간 업데이트가 아닌 풀버전 재설치를 해야 하는 불편함이 있어서, 여러 파일을 한 번에 업데이트 가능하도록 분리하였습니다.

https://modu-print.tistory.com/95

모두의 프린터 써트피아 - moduui peulinteo sseoteupia

모두의 프린터 써트피아 - moduui peulinteo sseoteupia

모두의프린터 설치 및 사용설명

민원24,대법원인터넷등기소, 프린터 없이 등본 출력, 프린터 없다고 울지마세요~

어쩌다 보니 각종 증명서류를 출력해야할 일이 빈번해 지는 와중에 빈번히 다음과 같은 상황이 발생하더군요..

  1. 용지가 없다
  2. 내 컴퓨터에 연결된 프린터에 잉크 또는 토너가 없다
  3. 프린터가 한대 있으나 다른PC에 연결되어 있고, 문서한장 출력하자고 프린터를 옮겨올 수도 없다.
  4. 대부분의 정부사이트들은 지원가능 프린터를 여러 방법으로 체크하며 USB등으로 직접 연결되거나 공유 프린터가 아닌 네트워크 지원 프린터의 경우만 가능하다.
  5. 프린터가 용지를 씹었다. 하지만 사이트에선 출력이 완료됫고. 유료문서라 다시 뽑을라면 결제도 다시 해야 한다. ( 이게 가장 빡칩니다 ㅠ_ㅠ )

일단 본인의 경우만 하더라도 이전에 비해서 종이에 출력한 출력물을 다룰일이 많이 줄어든건 사실인데, 개인적으론 PDF의 사용률이 높아진 듯하달까요 최근에는 Print to PDF 같은 기능으로 한글이나 MS워드등에서 작성한 문서를 PDF로 출력해서 PDF로 보내는 경우도 많고. 이메일 이나 카톡등 실질 문서파일등을 직접 주고 받음으로 굳이 종이에 출력된 형태여야만 할 경우가 아니라면 물리적 프린터가 필요한 경우가 점점 줄어들 고 있다고 봅니다.

게다가 사무실이나 가정등 고정된 곳에서 컴퓨터를 사용하는게 아닌 도서관이나 커피숍등에서 컴퓨터를 사용하거나 개인정보를 담은 민원문서들은 공인인증서를 필요로 하는데 타인의 PC나 공용PC에 인증서를 설치 또는 인증서가 저장된 USB를 꼽는 행위 자체가 꺼림직할 정도로 흉흉한 세상이기도 하구요.

제가 정부사이트라 칭하는 곳들을 보자면 민원24, 대법원인터넷등기소, 4대보험 관련 사이트등 다양한데요 대부분 개인 신상을 포함한 정보가 들어 있는 경우 물리적으로 연결된 프린터를 통해 종이에 출력하는 상황을 가정하고 그 외의 경우에는 불가한 상황이 됩니다.

프린터에 대한 제한이 존재하는 이유중 가장 큰 건 PDF등의 파일이나 가상프린터등을 통해 JPG등의 이미지 포맷으로 각종 증명서류를 출력가능한 경우에 위조를 통해 범죄에 사용될 수 있다 라는 부분 일테지만 개인적으론 증명서류를 위조할 정도의 능력이라면 출력물을 스캔하는 등의 방법으로도 충분히 가능한 영역이고 애초에 인감증명서 등의 중요서류는 인터넷 발급조차 되지 않으며 대부분의 증명서류들은 인터넷을 통한 위변조 여부의 확인이 가능하고 그 문서 자체의 내용이 큰 의미를 가지는 부동산등기부등본등은 위변조 여부를 떠나 누구나 발급 가능하고 본인이 직접 발급받아 확인하는게 각종 사기범죄에 당하지 않는 상식적인 수준의 가이드라인 이라고 생각 합니다.

본인의 경우 같은 증명서류를 여러장을 출력해야 하는 경우가 많은 관계로 매번 발급, 인쇄 과정을 반복하는데서 오는 비효율성과 어딘가에 제출하기 위함이 아닌 내용의 확인을 위한 경우가 대부분이라 어떻게 하면 정부사이트들의 각종 증명서류들의 출력을 프린터 없이 파일로 저장할 수 있을지 고민 했었습니다.

기존에 인터넷 상에도 많은 분들이 여러 추가 프로그램들을 사용하여 가능할 방법을 공개해 왔지만 유료이거나 더이상 유효하지 않은 방법등이 많았습니다.

사실 본인의 경우 20년을 넘게 프로그래머를 직업으로 살아왔고 30년을 넘게 프로그래밍을 해오고 있는 사람으로써 이러한 개인적인 불편함을 해소하기 위한 프로그램을 만들어 쓰기 시작했습니다.

사용자들 입장에선 단지 그냥 프로그램만 받아서 설치하고 사용가능하면 그만 일지 몰라도 어떻게 이런놈이 만들어 졌는지 궁금해 하실 분도 또 언젠가 제가 더이상 개발을 이어가지 못하더라도 기본적인 원리에 대한 기록을 남겨두면 그 누군가가 후에라도 좀더 유용하고 더 좋은 프로그램을 내 놓을수도 있을테지요.. ( 그렇게 세상이 발전해 왔으니까요 )

각설 하구요.. 이제 어떤 과정을 통해 프로그램을 개발하게 되었는지 본격적으로 썰을 풀어 보겠습니다.

윈도우에서 특정 프로그램이 프린터를 통해 출력하는 과정은 간단히 보자면 다음과 같습니다.

프로그램 -> 인쇄 -> Window 프린터 스풀러 -> 프린터 드라이버 -> 프린터 -> 출력

정부사이트들에서 프린터의 유효성을 체크하는 부분은 우선 프린터 드라이버의 명칭을 통해 제조사 및 프린터명, 드라이버명 등을 체크하고 연결된 포트정보를 통해 프린터가 LPT1등의 시리얼 포트, USB포트등에 직접 연결되었거나 IP를 이용한 네트워크 프린터라 하여도 프린터의 IP가 127.0.0.1등의 로컬호스트이거나 192.168.0.x 등의 주소라 하여도 결국 인쇄명령을 내리는 PC자신의 IP인 경우 Print to PDF 등과 마찮가지로 출력할 수 없습니다.

이를 반대로 풀어서 무언가를 해보기 위해선

  1. 인쇄가능 프린터 목록에 존재하는 프린터 드라이버를 쓰고
  2. 공유프린터가 아닌 IP기반의 네트워크 프린터로 포트구성을 하고
  3. 프린터 데이터를 수신할 서버 프로그래밍을 구성하여 파일로 저장한다

이렇게 3가지로 문제를 해결하면 되겠습니다. 이러한 생각을 해오면서 윈도우에서의 인쇄와 관련된 자료를 찾기위한 서핑중에 Github에 올라온 어떤 소스코드에서 재미난 힌트를 하나 얻게 되었지요. RawPrinterServer 인가 하는 명칭이었는데 해당 프로그램은 원격지의 PC에 USB등으로 연결된 프린터를 네트워크 프린터 인냥 프린트 데이터를 받아 프린터로 전달해주는 역할을 하는 프로그램 이었는데 그 프로그램의 소스를 보다보니 IP기반의 네트워크 프린터들은 Standard TCP/IP Port 라는 프린터 포트를 사용하고 이 포트의 정보에는 프린터의 IP와 포트정보가 포함되어 있으며 일반적인 서버/클라이언트 방식으로 구동되는 많은 프로그램들이 접속->인증->작업->종료 등의 과정을 거치는 반면 네트워크 프린터들은 애초에 자신이 뭐하는 놈인질 자신에게 접속할 놈들이 알고 있고 자신이 알아먹을 형태의 데이터들 외에는 받아들일 이유가 없다고 단정하고 있다는 것이지요.

조금더 풀어보자면. 네트워크 통신을 위한 많은 프로토콜은 상호간에 데이터를 주고 받는데요 이를 위해 각종 프로토콜 규약을 통해 데이터의 구성 및 각종 값들에 대해서 미리 정의를 해두고 이를 검증하며 무언가를 해나가는 편입니다. 하지만 프린터는 말그대로 인쇄할 데이터를 받아서 종이로 출력하면 그만이기 때문에 클라이언트에 해당하는 PC의 윈도우, 그 안의 프린터 드라이버는 프린터 포트정보상의 IP주소와 포트에 접속하고 출력할 데이터를 주르륵 전송한뒤에 접속을 끊어버리면 그만인 것이지요. 한마디로 PC에선 그저 접속후 데이터를 보낸후 접속을 끊기만 하면 되고 프린터 입장에선 접속요청을 기다리고 접속된 PC의 접속이 종료되기 전까지 전송된 모든 데이터를 해석해서 종이로 출력하면 되는겁니다. 만약 해석 불가능한 이상한 데이터가 수신될 경우 수신된 데이터는 버려버리고 접속은 끊어버리면 그만이겠지요.

여기서 부터 문제가 조금 수월하게 풀렸습니다. 현존하는 대다수의 프린터들은 크게 PostScript, PCL/XL, XPS 이 3가지와 아에 독립적인 자체 포맷으로 프린트할 데이터를 프린터에 전송한다고 봐도 됩니다. 정부사이트들의 인쇄가능 프린터 목록만 봐도 PS3, PS, XL, PCL, PCL5, XPS 등이 표시된 프린터가 다수 존재하구요.

PostScript 는 워낙 역사깊은 포맷이고 친절하게도 GhostScript의 각종 기능을 통해 PostScript -> PDF, GhostPCL을 통해 PCL을 PDF로 변환하는등 다양한 짓도 가능하구요. XPS는 그 요즘 윈도우에는 대부분 기본적으로 뷰어가 존재하니 그건 그것대로 문제가 없겠다 싶었습니다. 또한 어짜피 언놈이던 몇 놈만 출력가능한 프린터가 있다해도 원하는 바는 이룰수 있겠다 싶었구요. 포맷이 공개되지 않았거나 구조를 알기 힘든 완전 자체 포맷을 사용하는 프린터의 경우 과감히 버리는 방향으로 진행하였습니다.

그리하여 처음 만들었던 프로그램은 IP PRINTER 라는 프로그램 이었고 HP Universal Print PS 라는 PostScript 방식의 프린터 드라이버를 사용 했었는데 이 IP PRINTER 라는 놈에 포함된 기능은 UPnP, TCP Server, 프린트 포트 관련 자동 설정 기능 등을 포함하고 있었습니다. 원래 계속 고민했던것이 정부사이트 들에선 출력 대상 네트워크 프린터의 IP 주소가 출력하는 PC의 IP인 경우 로컬포트로 인식해서 오류를 발생시켰습니다. 그렇다면 출력대상의 IP 주소가 출력하는 PC의 IP와 다른데 결국 출력하는 PC한테 출력 데이터가 돌아오려면 어찌해야 하는가?

이 고민을 하는데 제 책상위에 놓여진 공유기가 눈에 들어오더군요.. 이전에 모 통신사의 인터넷 전화기용으로 납품되는 공유기를 개발했던 경험이 있었지요. 대부분의 공유기는 NAT라는 방식을 기반하고 UPnP라고 하는 기능을 탑재하고 있습니다. 외부에서 공유기 내부의 사설IP를 사용하는 PC와 통신을 하기 위해선 포트포워딩 설정등이 필요하지만 UPnP 기능을 통하면 프로그램적으로 공유기에 포트포워딩 설정을 동적으로 할 수 있습니다.

그리하여, IP PRINTER를 실행하면 이 프로그램이 하는 짓은.

  1. 9100번 포트에 TCP Server를 연다
  2. UPnP를 통해 공유기에 부여된 외부공인IP와 PC의 사설IP를 얻고 공유기의 외부공인IP의 9100포트로 들어오는 TCP 데이터를 PC의 사설IP의 9100 포트로 포워딩 시킨다.
  3. 2번에서 얻은 외부공인IP와 9100 포트로 Standard TCP/IP Port 프린터 포트 레지스트리를 생성하고
  4. HP Universal Print PS의 출력포트를 3번에서 생성한 포트로 설정하고 프린터 서비스를 재시작하여 적용한다.

공유기의 외부공인IP가 100.0.0.1 이라 치고 PC의 사설IP가 192.168.0.100 이라 치자면 위와같은 과정을 거친후 HP Universal Print PS로 출력을 하게 되면 프린터 드라이버는 PostScript포맷으로 가공된 프린트 데이터를 100.0.0.1에 9100포트로 전송할꺼고 UPnP를 통해 100.0.0.1에 9100포트로 들어온 데이터는 내부 사설IP인 192.168.0.100의 9100포트로 전달 되도록 포워딩 설정이 되어 있으니 공유기의 포트포워딩 기능에 의해서 프린트 데이터는 다시 192.168.0.100의 9100 포트로 전달되게 되겠지요. 그러면 9100 포트에 실행중인 TCP Server에서 해당 데이터를 전송받아 파일로 저장하면 PostScript 정보를 담은 출력파일을 얻게 됩니다.

이 파일은 GhostScrit 와 Gsview 등을 통해 직접 볼 수도 있고 PDF나 JPG등으로 변환할 수도 있고 다양하게 사용 할 수 있었습니다.

이 프로그램은 IP PRINTER 라는 이름으로 제 블로그를 통해 배포했었습니다.. 만!!! 제 경우에는 보통 집 아니면 사무실에서 사용을 하다보니 늘 무선공유기를 사용중이었는데 급한데 잘 안된다고 문의해 오시는 분들이 하나 둘씩 생겨나더군요. 그 이유를 보자면

  1. 공유기가 없어요
  2. 방화벽이 있어요
  3. 공유기는 있는데 UPnP가 없는것 같아요

일단 직장인들의 경우 UPnP등의 기능이 없는 단순 라우터들로 망이 구성되거나 방화벽이 아주 강하게 물려 있는 경우가 많았고 대학교 기숙사나 통신사의 공용WIFI등에서는 UPnP기능이 동작하길 기대하기 어렵고 당연히 공용인터넷을 위한 장치에 서버 구동에 쓰이는 포트포워딩에 대한 기능이 포함될리 만무했던 것이지요.

또한 모든 사람이 공유기의 설정을 맘대로 주무를 수 있을 정도로 NAT니 포트포워딩이니 하는 개념과 용어와 의미를 다 알고 현재 네트워크 환경을 판단해서 환경구성을 하는 등의 일을 할 수 있을것이라 기대하긴 어렵겠구나 라고 생각했습니다..

이에 문의하시는 분들이 가장많이 하신 질문이 스마트폰의 테더링이나 핫스팟으로는 혹시 안되느냐 라는 것이었습니다. 생각해보니 제 경우에도 노트북 들고다니다 급할때는 스마트폰의 핫스팟 기능을 종종 쓰거든요..

그리하여 스마트폰을 프린터화 시켜보자! 라는 마음으로

새로운 프로그램을 다시 만들게 되었습니다..

이름하여 ..

모두의 프린터!! 두둥!!

다음글에서 모두의 프린터의 개발이야기를 계속 풀어가 보도록 하겠습니다.

https://blog.naver.com/ghdqjq82/221454085046

모두의 프린터 써트피아 - moduui peulinteo sseoteupia

모두의 프린터 써트피아 - moduui peulinteo sseoteupia