소개
print-util은 DMS-AI가 배포하는 로컬 HTTP 서버 기반의 PDF 무음 인쇄 유틸리티입니다. SumatraPDF, Ghostscript, Adobe Acrobat/Reader 등 다양한 PDF 인쇄 엔진을 자동으로 감지해 우선 적용하며, 별도의 대화상자나 프린터 선택 팝업 없이 PDF를 인쇄하도록 설계되었습니다. 64비트 Windows 환경에서 사용자 세션에 상주하는 형태로 동작합니다.
상세정보
다중 PDF 엔진 자동 선택
설치 시 포함된 SumatraPDF를 우선 사용하고, 다음으로 번들된 gsdll64.dll, Ghostscript CLI(gswin64c.exe) 순으로 시도합니다. 시스템에 Acrobat/Reader가 있으면 자동으로 감지해 활용하며, 모든 엔진이 없을 때만 Windows 기본 ShellExecuteW 경로가 사용됩니다.
로컬 전용 HTTP API
서버는 오직 127.0.0.1에서만 수신하며 다음 엔드포인트를 제공합니다.
- GET /health: 서버 상태를 확인하고 {“status”:”ok”}를 반환합니다.
- GET /printers: 사용 가능한 프린터 목록과 기본 프린터 이름을 반환합니다.
- POST /print: multipart/form-data로 전송된 PDF를 인쇄하며, 용지 크기는 MediaBox를 기준으로 자동 감지(A4/A5) 후 인식이 안 되면 A4로 출력합니다.
- POST /print/a4: PDF를 강제로 A4 용지로 인쇄합니다.
- POST /print/a5: PDF를 강제로 A5 용지로 인쇄합니다.
인쇄 작업 제어 옵션
POST /print 계열 요청에서는 printer 필드로 출력 장치를 직접 지정하거나 비워두면 시스템 기본 프린터를 사용합니다. name 필드는 스풀러에 표시될 작업명을 지정하며, 미지정 시 doc-<unix_timestamp> 형식으로 자동 생성됩니다. 각 인쇄 작업은 서버에서 120초 후 타임아웃되며 {“error”:”print timed out after 120 s”} 응답이 반환됩니다.
트레이 컴패니언과 시작 시 자동 실행
MSIX 설치 시 사용자 단위로 시작 등록이 이루어져 로그인 세션에서 트레이 컴패니언(print-util-tray.exe)이 자동으로 실행됩니다. 트레이 메뉴의 ‘Hỗ trợ’는 GitHub 지원 페이지로 연결되고, ‘Cấu hình’은 %ProgramData%print-utilconfig.json 파일을 열어 설정을 편집할 수 있게 합니다. 선택적으로 vnpt.ico 파일을 트레이 바이너리와 같은 위치 혹은 %ProgramFiles%print-utilvnpt.ico에 두면 브랜딩된 트레이 아이콘이 사용됩니다.
설치 및 기본 사용
가장 간단한 방법은 winget을 사용하는 것이며, winget install –id DMS-AI.PrintUtil –exact 명령으로 DMS-AI가 배포하는 정식 빌드를 받을 수 있습니다. 또한 GitHub Releases에서 print-util-x.x.x.msix 파일을 내려받아 Windows App Installer로 설치할 수 있으며, 이 경우 사용자 단위로 설치되어 로그인 시점에 인쇄 서버가 자동으로 등록·실행됩니다. 제거는 Windows 설정의 앱 > 설치된 앱에서 진행합니다.
소스에서 직접 빌드하려면 Rust로 컴포트한 뒤 x86_64-pc-windows-msvc 타깃으로 release 바이너리를 생성하면 print-util.exe와 print-util-tray.exe가 targetrelease 폴더에 만들어집니다. 서버는 기본적으로 포트 17474에서 동작하며, 명령행 인자 또는 PORT 환경 변수로 포트를 바꿀 수 있습니다.
활용 예시
별도 UI 없이 PDF를 보내면 곧바로 무음 인쇄가 이뤄지는 구조이므로, 사내 웹 시스템·자동화 스크립트·RPA 흐름에서 ‘사용자가 프린터를 고르는 단계’를 제거하고 기본 프린터로 바로 출력하는 용도로 활용할 수 있습니다. 예를 들어 로컬에서 동작하는 배치 스크립트가 특정 폴더의 PDF를 읽어 와 curl로 POST /print에 업로드하거나, PowerShell의 Invoke-RestMethod로 동일 엔드포인트를 호출하면 기본 프린터로 즉시 출력됩니다. 또한 /printers로 사용 가능한 프린터 목록을 받아 동적으로 선택지를 만드는 클라이언트나, /print/a4·/print/a5로 라벨·영수증 크기처럼 강제 용지 출력이 필요한 작업 흐름을 구성할 수 있습니다. 백그라운드 서비스 형태로 운영하려면 NSSM으로 print-util.exe를 등록하고 PORT 환경변수를 함께 지정해 사용자 로그인 없이도 동작하게 만들 수 있습니다.
지원 환경 및 요구 사항
64비트 Windows 10 또는 Windows 11에서 동작합니다. MSIX로 설치하면 SumatraPDF와 Ghostscript 계열 엔진이 함께 패키지되므로 추가 설치 없이 바로 사용할 수 있습니다. Adobe Acrobat/Reader는 선택적으로 자동 감지되며, 모든 PDF 엔진이 없을 때는 Windows의 ShellExecuteW 경로가 폴백으로 사용됩니다. MSIX 빌드는 Windows 10/11 SDK의 makeappx.exe와 AppxManifest.xml의 Publisher와 일치하는 코드 서명 인증서가 필요하며, 결과 MSIX는 signtool.exe로 서명 후 배포하도록 안내되어 있습니다.
제한 및 라이선스 확인 사항
서버는 127.0.0.1에서만 수신하도록 설계되어 있어 원격 인쇄용으로는 사용할 수 없습니다. 인쇄 작업당 120초 타임아웃이 적용되며, 그 안에 완료되지 않으면 오류로 응답합니다. 폴백 경로인 ShellExecuteW를 사용할 때는 Windows가 프린터 선택 대화상자를 표시할 수 있어 무음 인쇄가 보장되지 않을 수 있습니다. 본 프로그램 자체는 MIT 라이선스로 배포되며 소스는 GitHub 저장소에서 확인 가능하지만, 번들되는 Ghostscript는 AGPL-3.0이므로 재배포 시 라이선스 정보를 함께 유지해야 합니다.
시스템 요구사항
Windows 10/11 (64-bit) 환경이 필요하며, 설치형 MSIX 패키지에는 SumatraPDF, gsdll64.dll, Ghostscript CLI가 엔진과 함께 번들되어 있어 별도 설치가 필요하지 않습니다. 사용자 PC에 Adobe Acrobat/Reader가 이미 설치되어 있으면 자동으로 감지해 사용하고, 모든 엔진이 없을 경우 ShellExecuteW 경로가 폴백으로 사용되어 대화상자가 표시될 수 있습니다.


