Windows 인쇄 프로그램
인쇄 대화 상자 없이 바로 인쇄하는 FreeReport Windows 인쇄 프로그램의 설치, 사이트 허용, 설정, 자동 업데이트, 웹 페이지 연동 방법입니다.
브라우저는 인쇄할 때마다 대화 상자를 띄우고, 프린터·매수·양면·용지함을 정하거나 인쇄 기록을 남길 수 없습니다. 민원 창구, 병원 원무과, 매장 카운터, 급여명세서·증명서를 계속 뽑는 사무실처럼 같은 프린터로 계속 출력하는 PC에만 FreeReport 인쇄 프로그램(Print Agent)을 설치하세요. 코드 서명된 작은 트레이 프로그램이 보고서를 지정한 프린터로 대화 상자 없이 100% 크기 그대로 출력합니다. 나머지 PC는 지금처럼 브라우저로 인쇄하며 아무것도 설치하지 않습니다.
Windows 인쇄 프로그램 내려받기 Windows 10(1809 이상)·11, x64 · 관리자 권한·.NET 설치 불필요 · 항상 최신 버전
1. 설치
- FreeReportAgentSetup.exe를 실행하고 안내대로 설치합니다. 지금 Windows 사용자에게만 설치하므로 관리자 암호를 묻지 않습니다. Windows가 보여 주는 게시자는 Second Korea Co., Ltd.입니다.
- 설치가 끝나면 작업 표시줄 오른쪽 아래 알림 영역(^ 화살표 안에 있을 수 있음)에 아이콘이 생깁니다. 그 뒤로는 Windows에 로그인할 때마다 자동으로 실행됩니다.
- 아이콘이 없으면(예: [종료]를 누른 경우) 시작 메뉴에서 "FreeReport Print Agent"를 실행합니다.
여러 PC에 한꺼번에 설치할 때는 배포 도구나 로그온 스크립트로 무인 설치합니다. 제거는 Windows 설정 > 앱 > "FreeReport Print Agent"에서 하며, 허용 사이트 목록과 인쇄 기록(%APPDATA%\FreeReport)은 감사 기록이라 남겨 둡니다.
:: Install for the current user without any window (deployment tools, logon scripts)
FreeReportAgentSetup.exe /VERYSILENT /SUPPRESSMSGBOXES
:: Remove
"%LOCALAPPDATA%\Programs\FreeReport Agent\unins000.exe" /VERYSILENT2. 사이트 허용 (처음 한 번)
웹 페이지가 처음 인쇄 프로그램으로 인쇄하면 사이트 주소와 함께 "이 사이트에서 바로 인쇄를 허용할까요?" 창이 뜹니다. [허용]을 누르면 그 뒤로는 묻지 않고 바로 인쇄되며, 다른 사이트는 따로 허용을 받아야 합니다. 60초 안에 누르지 않으면 거부로 처리됩니다. http(암호화되지 않은) 사이트에는 경고가 나오니 사내 주소가 맞는지 확인하세요.

Chrome·Edge는 사이트가 "이 기기의 다른 앱 및 서비스에 액세스"해도 되는지 한 번 물을 수 있습니다. 인쇄 프로그램은 이 PC(127.0.0.1) 안에서만 접속을 받으므로 허용하세요. 기관 PC는 관리자가 LocalNetworkAccessAllowedForUrls 정책으로 미리 허용해 둘 수 있습니다.
3. 트레이 메뉴와 설정
트레이 아이콘을 오른쪽 클릭하면 버전, 설정, 허용된 사이트, 인쇄 기록, 정보·업데이트, 종료 메뉴가 나오고, 두 번 클릭하면 허용된 사이트가 열립니다. 설정 창의 탭은 네 개입니다.
| 탭 | 내용 | |
|---|---|---|
허용된 사이트 / Allowed sites | tab | 대화 상자 없이 인쇄해도 되는 사이트와 허용한 때, 마지막 사용 시각. 골라서 [선택한 사이트 해제]를 누르면 그 사이트는 다시 허용을 받아야 합니다. |
인쇄 기록 / Print log | tab | 모든 인쇄의 시간, 사이트, 보고서, 프린터, 부수, 쪽수, 사용자, 결과. [기록 파일 열기]로 print-log.jsonl을 엽니다. |
설정 / Settings | tab | 기본 프린터(사이트가 프린터를 지정하지 않을 때), Windows 시작 시 자동 실행, 가상 프린터(PDF·XPS·팩스 등) 출력 항상 거부(출력물을 파일로 빼돌리는 것 방지). |
정보 / About | tab | 현재·최신 버전, 자동 업데이트 켜기/끄기, [지금 확인], 마지막 확인 결과, 로컬 주소, 설정·기록 폴더. |




예시 데이터로 띄운 실제 화면입니다.
4. 업데이트
프로그램은 시작 30초 뒤와 6시간마다 새 버전을 확인합니다. 인쇄 중이 아닐 때 알림을 띄우고 조용히 설치한 뒤 다시 실행하며, 허용 사이트·설정·인쇄 기록은 그대로 남습니다. 업데이트 파일은 크기, SHA-256, 코드 서명(Second Korea Co., Ltd.)이 모두 맞아야 설치합니다. 직접 관리하려면 설정 > 정보에서 자동 업데이트를 끄고 트레이 메뉴의 [업데이트 설치]를 쓰세요. 1.0.0에는 업데이트 기능이 없으니 최신 설치 파일로 한 번 덮어 설치하세요. 버전 기록
5. 웹 페이지에서 인쇄하기
페이지에서 인쇄 프로그램이 실행 중인지 확인하고, 실행 중이면 보고서를 PDF로 만들어 보내고 아니면 브라우저 인쇄로 대신합니다. 프로그램은 실제 용지 크기 그대로(A4 PDF의 100mm 선은 종이에서도 100mm) 인쇄하고, 가로 쪽은 자동으로 가로로 돌리며, 용지는 쪽 크기에 맞춰 고릅니다.
import { agent, createReport } from '@freereportjs/core';
const report = createReport(definition, { rows });
const status = await agent.detect(); // null: not installed or not running
if (status) {
const pdf = await report.toPdf(); // null when onOutput cancelled it
if (pdf) await agent.print(pdf, { // first time: the program asks the user to allow this site
printer: 'Samsung M2020 Series', // omit: the program's default printer
copies: 2, duplex: 'long',
report: '급여명세서 2026-10', user: '홍길동', // written to the print log
blockVirtual: true, // refuse PDF/XPS printers
});
} else {
await report.print(); // no program: browser print dialog
}| 이름 | 타입 | 설명 |
|---|---|---|
agent.detect() | Promise<AgentStatus | null> | 설치·실행 중이 아니면 null. 아니면 version, paired, updateAvailable, latestVersion, outdated. |
agent.printers() | Promise<AgentPrinter[]> | 설치된 프린터: name, isDefault, isVirtual, paperSizes, trays, duplex, color. |
agent.print(pdf, options?) | Promise<AgentPrintResult> | PDF(Blob, Uint8Array, ArrayBuffer)를 100% 크기로 인쇄. 옵션: printer, copies, duplex, paper, tray, color, jobName, report, user, blockVirtual, dpi. |
agent.job(id) | Promise<AgentJob> | 작업 상태: printing, spooled, failed. |
agent.logs(limit?) | Promise<AgentLogEntry[]> | 이 사이트의 최근 인쇄 기록(최신순). |
agent.pair() | Promise<boolean> | 이 사이트 허용을 요청합니다. 위 함수들이 필요할 때 알아서 부릅니다. |
agent.forget() | void | 이 브라우저에 저장된 토큰을 지웁니다. |
실패하면 code가 아래 중 하나인 AgentError를 던집니다.
| code | 뜻과 대처 | |
|---|---|---|
not_running | AgentError | 프로그램이 실행 중이 아님. 시작 메뉴에서 실행하거나 브라우저 인쇄로 대신합니다. |
denied | AgentError | 사용자가 [거부]했거나 60초 안에 답하지 않음. 1분 동안은 다시 묻지 않습니다. |
printer_not_found | AgentError | 그 이름의 프린터가 없음. agent.printers()의 이름을 쓰세요. |
virtual_printer_blocked | AgentError | PDF·XPS·팩스 같은 가상 프린터를 거부함(blockVirtual 또는 설정). |
paper_not_supported | AgentError | 프린터에 요청한 용지 크기가 없음. |
updating | AgentError | 업데이트를 설치하는 중. 몇 초 뒤 다시 시도합니다. |
보안: 프로그램은 이 PC(127.0.0.1)에서 오는 접속만 받고, 사이트마다 사용자 허용과 전용 토큰이 필요하며, 사이트는 자기 인쇄 기록만 볼 수 있고, 일반 사용자 권한으로만 실행됩니다. Windows 인쇄 프로그램은 회사 라이선스 가격의 두 배인 요금제에 포함됩니다. 가격