인쇄는 가장 일반적인 PC 작업 중 하나로, 여러 다양한 온라인 자료를 읽고 사용하는 오늘날에도 여전히 많이 사용되고 있습니다. Microsoft는 여러 파트너와 함께 Windows 8의 기능을 강화하는 동시에 보다 편리하고 뛰어난 인쇄 경험을 제공하기 위해 노력하고 있습니다. 이 글은 인쇄 팀의 수석 프로그램 관리자인 Adrian Lannin이 작성했습니다. 

- Steven


Windows PC에 연결 가능한 모든 주변 장치 중에서 프린터는 가장 널리 사용되고 오랫동안 지원된 장치 중 하나입니다. 실제로, Windows 1.0(1985년 출시)은 '여러 프린터와 플로터'를 지원했으며 사용자가 Windows 1.0 Press Kit에 따라 '하나의 파일을 인쇄하는 동안 다른 파일에서 작업할 수 있도록 인쇄 스풀러'를 포함했습니다. 아래의 Windows 1.0 스크린샷에서는 이 버전의 Windows에 포함된 파일(Epson.drv), 많은 글꼴 파일 및 인쇄 스풀러 프로세스를 보여 줍니다. 인쇄 시스템 중 일부는 사용자보다 오래된 것입니다. :-)

파일 목록이 포함된 Windows 1.0 MS-DOS Executive

몇 년 후 Windows 인쇄 시스템은 다양한 프린터에서 인쇄가 가능하도록 복잡한 아키텍처로 진화했습니다. 그에 따라, 50달러면 구입할 수 있는 가정용 잉크젯에서 수백 명의 사용자가 함께 사용할 수 있도록 수천 개의 인쇄 대기열을 호스팅하는 수만 달러의 고가용성 인쇄 서버로 확장할 수 있게 되었습니다.

Xerox의 고급 인쇄 시스템 및 Epson의 보다 단순한 가정용 프린터인쇄 시스템은 Windows의 많은 계층 및 패싯에 연결하여 UI를 표시하며, 마찬가지로 UI를 표시하는 드라이버를 호스팅합니다. 인쇄는 기본적으로 화면에 있는 내용을 종이에 다시 그리는 작업이기 때문에 그래픽 중심의 작업을 수행합니다. 그리고 주로 USB 또는 네트워크와 같은 하위 수준 통신으로 인쇄 작업이 이루어집니다. 현재 미국에서 판매되는 대다수의 프린터는 네트워크를 지원하지만 Microsoft의 원격 분석 데이터를 보면 Windows 8 Consumer Preview 기반의 PC에 설치되고 USB 포트에 연결된 프린터가 75%를 넘는 것으로 나타났습니다. 인쇄 시스템은 소규모 시스템에서 효율적으로 실행될 뿐 아니라 대기업의 업무에 중요한 대규모 배포로 확장할 수 있어야 합니다.

이 글에서는 사용자에게 강력한 장치 지원을 제공하는 최상의 인쇄 시스템을 새롭게 상상하기 위해 Windows 8을 어떻게 개발했는지를 설명하고자 합니다. 이를 위해 ARM 기반 PC와 Metro 스타일 앱에서 작동하는 방식을 보여 드릴 것입니다. 또한 데스크톱에서 액세스하든, Metro 스타일 앱에서 액세스하든, Windows RT에서 실행되는 장치에서 액세스하든 기존 프린터가 최대한 '정상적으로 작동'하도록 하기 위해 우리가 했던 작업에 대해서도 설명하겠습니다.

새롭게 상상한 Windows 8용 인쇄 시스템

Windows 8에서는 버전 4 또는 v4라는 새로운 프린터 드라이버 아키텍처를 도입했습니다. v4 아키텍처는 보다 작고 빠른 프린터 드라이버를 생성하며, 대부분 해당 장치용 드라이버 없이 프린터를 설치할 수 있는 시스템인 인쇄 클래스 드라이버 프레임워크의 개념을 지원합니다.

여러분도 어느 정도 짐작하셨겠지만 V4는 Windows 프린터 드라이버 아키텍처의 4번째 버전입니다. V3은 Windows 2000부터 Windows 7까지 사용된 아키텍처였으며, 실제로 장치 호환성을 위해 Windows 8에서도 여전히 완벽하게 지원됩니다. 따라서 현재 프린터에 사용 가능한 기존 드라이버만 있는 경우 Windows 8에서도 계속 사용할 수 있습니다. 버전 1과 2는 Windows 1.0부터 Windows ME까지 사용된 드라이버 아키텍처입니다.

그럼 이제 인쇄 시스템 작동 방식을 설명하기에 앞서, Windows 8 인쇄 시스템에서 해결하기 위해 노력한 몇 가지 요구 사항에 대해 설명하겠습니다.

Metro 스타일 앱에서 인쇄

우리가 고민해야 했던 한 가지 사항은 Metro 앱 개발자에게 인쇄 기능을 제공하는 방법이었습니다. win32 응용 프로그램에서 인쇄하려면 그래픽 프로그래밍인 GDI(Graphics Device Interface) 또는 XPS(XML Paper Specification)를 알아야 합니다. Windows 8 앱에서 인쇄가 가능하도록 하기 위한 방법을 검토하면서 Windows 런타임에서 인쇄를 지원하는 방법을 완전히 새롭게 개발했으며 HTML5/JavaScript 및 XAML/C# 앱에서 매우 간편하게 인쇄하는 방법을 찾았습니다.

Metro 스타일 앱에 인쇄 기능 통합

Metro 스타일 앱에서의 인쇄는 자연스럽게 Metro 스타일 경험이 되어야 합니다. 여러분 대부분은 뭔가를 인쇄할 때 프린터에 용지가 없음을 알리거나 잉크를 구매할 수 있는 기회를 제공하는 작은 애플릿 팝업을 본 적이 있을 것입니다.

용지 종류 및 크기를 알리고, 잉크 수준을 확인하거나 Epson 잉크를 구입하거나 온라인 지원으로 이동할 수 있는 단추가 포함된 Epson 인쇄 대화 상자

이러한 팝업은 잉크젯 프린터에서 매우 일반적입니다. 일부 팝업은 관련이 있는 경우(예: 잉크가 부족한 경우)에만 나타나고, 다른 팝업은 인쇄할 때마다 나타납니다. 이러한 팝업은 프린터 드라이버 소프트웨어 자체에서 제공되며, 모두 데스크톱 UI입니다. 하지만 우리는 예를 들어 Metro 스타일 사진 앱에서 인쇄할 때 단지 인쇄가 진행 중임을 알리는 UI를 보기 위해 데스크톱으로 전환해야 하는 경우를 원하지 않습니다.

Windows RT에서의 인쇄

프린터 드라이버는 시간이 지남에 따라 많은 기능을 포함하도록 진화하였습니다. 일부는 서비스나 작은 응용 프로그램을 설치하며 많은 드라이버들이 이제 상당히 커진 상태입니다. Windows 2000부터 사용 중인 v3 프린터 드라이버 모델은 프린터 제조업체에서 해당 드라이버 소프트웨어를 유연하게 설치할 수 있도록 매우 복잡하고 확장성이 뛰어난 모델로 진화했습니다. 이 버전이 Windows RT에서 실행되는 일부 장치에서 작동하는 방식을 고려할 때 아키텍처에 몇 가지 중요한 변경 사항을 적용해야 한다는 것을 알았습니다. 불필요한 서비스를 실행하여 ARM 시스템에 부정적인 영향을 주고 싶지 않았으며, 시스템 리소스 사용량을 줄이는 동시에 가능한 한 많은 장치를 지원할 수 있도록 하려고 했습니다.

보다 적은 수의 드라이버로 다양한 프린터 지원

프린터 기능은 매우 다양하며, Windows에서는 광범위한 프린터를 지원합니다. Windows 7 및 그 이전 버전에서는 이러한 각 프린터가 작동하려면 특정 드라이버가 필요했습니다(범용 프린터 드라이버와 같은 몇 가지 예외는 있지만 이러한 드라이버는 크고 리소스를 많이 사용하는 경향이 있음). 즉, 적절한 지원을 제공하기 위해 Windows에 포함된 드라이버(이를 Windows 제공 드라이버라고 함) 수가 매우 많았습니다. 물론, Windows 업데이트에 훨씬 많은 드라이버가 있지만 Windows 업데이트에서 드라이버를 다운로드할 수 없거나 다운로드하지 않으려는 사용자에게도 뛰어난 인쇄 경험을 제공할 수 있도록 일반 장치를 지원하는 핵심적인 Windows 제공 드라이버 집합을 유지하는 것이 중요합니다. Windows 제공 드라이버는 Windows RT에 기본적으로 필요하며, 실제로 Windows RT에서는 Windows 제공 프린터 드라이버만 사용합니다. 여기에서 해결해야 하는 문제는 지원되는 관련 프린터 집합을 유지하면서 이를 수용하는 데 필요한 리소스를 줄이는 것입니다.

많은 프린터를 지원하는 데 있어 또 다른 해결 과제는 시간이 흐를수록 지원이 부실해진다는 점입니다. Windows 7에 포함된 드라이버 집합은 예를 들어 2008 및 2009에서 릴리스된 장치에 대한 지원이 매우 뛰어나지만 몇 년에 걸쳐 새로운 장치가 출시되고 시간이 지남에 따라 Windows 7의 드라이버 집합은 관련성이 줄어들게 되었습니다. 따라서 Windows 8의 가장 큰 해결 과제 중 하나는 아직 출시되지 않은 프린터를 비롯한 다양한 많은 프린터를 위해 뛰어난 수준의 지원을 제공할 수 있어야 한다는 것입니다.

프린터 공유

인쇄 서버를 관리해 본 사용자는 공유를 지원하기 위해 올바른 드라이버를 설치하는 것이 인쇄 서버 관리에서 가장 많은 시간이 소요되는 작업임을 알고 있을 것입니다. 이러한 어려움 중 일부는 가정에서 프린터를 공유하려는 경우에도 발생할 수 있으며, 특히 32비트와 64비트 버전의 Windows를 둘 다 사용하는 경우에는 더욱 그렇습니다. 이는 인쇄 '서버'(실제 Windows Server가 아니라 프린터가 연결된 PC를 의미함)에서 공유 프린터에 인쇄하려는 클라이언트에 드라이버를 제공해야 하기 때문에 복잡합니다. Windows 7에서는 이 문제를 해결하기 위해 홈 그룹을 적용했으며, 이는 오랫동안 효과적으로 사용되었습니다. 그러나 Windows RT에서 인쇄할 때 각 Windows 아키텍처에 대한 드라이버를 로드해야 하는 요구 사항이 문제가 됩니다.

Windows RT 장치에서 인쇄하는 사용자는 대부분 무선 프린터에 인쇄할 가능성이 높을 것으로 예상되지만 USB 프린터에 인쇄할 가능성을 완전히 배제할 수는 없습니다. 또한 사용자에게 32비트 클라이언트, 64비트 클라이언트 및 Windows RT 클라이언트용 드라이버를 추가하도록 하여 프린터 공유를 더욱 복잡하게 만들고 싶지 않았습니다. 따라서 Windows 8의 v4 모델에서 클라이언트가 인쇄 서버에 드라이버를 설치하도록 하지 않고 프린터를 공유할 수 있는 새로운 방법을 개발했습니다.

Windows 8의 인쇄 시스템

사용자는 응용 프로그램을 사용하여 콘텐츠를 만들고 볼 수 있습니다. 인쇄 시스템의 목적은 이러한 앱에 특정 장치를 설치할 필요 없이 설치된 모든 프린터에 콘텐츠를 인쇄하는 기능을 제공하는 것입니다. ��시 앱의 인쇄 방식을 살펴보고 인쇄된 페이지로 콘텐츠를 가져오는 방법에 대해 자세히 알아보겠습니다.

인쇄 가능한 콘텐츠 만들기

앱의 경우 인쇄 지원을 매우 간단하게 추가할 수 있습니다. 앱에서 인쇄하려는 콘텐츠는 앱에서 지정한 형식입니다. Metro 스타일 앱의 경우 이는 HTML5 또는 XAML인 경우가 많지만 Word 또는 Photoshop과 같은 Win32 앱의 경우에는 콘텐츠가 각 앱에 특정한 형식입니다.

따라서 앱에서 프린터에 인쇄하려는 경우 인쇄 시스템에서 수행해야 하는 작업 중 하나는 앱 형식의 콘텐츠를 프린터에서 인식하는 형식으로 변환하는 것입니다. 불행히도 모든 프린터가 같은 형식을 인식할 수는 없으므로 여기에는 꽤 많은 작업이 필요합니다.

실제로 Word와 같은 앱에서는 GDI 그래픽을 사용하여 화면과 프린터 둘 다에 콘텐츠를 그립니다. 가능한 경우 인쇄 시스템은 XPS(XML Paper Specification)라는 고품질 중간 형식을 내부 콘텐츠 형식으로 사용합니다. 우리는 Word의 콘텐츠를 XPS로 변환합니다. 우리는 XPS를 인쇄 시스템의 기반으로 사용하기로 결정했는데, 이는 XPS가 매우 유연한 형식이고 마치 전자 종이와 같기 때문입니다. 이 형식은 고화질 색상을 지원하며, 실행 코드가 포함되지 않은 XML 기반 설명이기 때문에 보관용으로 적합하고 다른 옵션에 비해 안전합니다. 또한 Microsoft에서는 ECMA International(European Computer Manufacturers Association)과 함께 이를 개방형 표준(ECMA 표준 TC46, OpenXPS)으로 지정했습니다. 데스크톱 뷰어와 Reader 앱 모두에서 OpenXPS를 표시할 수 있습니다. 저는 모든 온라인 구매 영수증을 XPS 파일로 '인쇄'합니다.

인쇄 시스템에서 콘텐츠를 관리하면 프린터에서 인식(필요한 경우, XPS를 직접 인식하는 많은 프린터가 있음)하는 형식으로 콘텐츠가 변환되며 인쇄 시스템에서 올바른 옵션 설정을 통해 이를 프린터로 전송하고 작업을 인쇄합니다.

Windows 8에서 우리는 이 개념을 독창적으로 향상시켰습니다. 모든 Metro 스타일 앱에서 Direct2D를 기본 그리기 형식으로 사용하며 Direct2D와 XPS에서 같은 XML 기반 그래픽 '언어'를 공유하기 때문입니다. 다른 Reader 앱에서는 Direct2D를 사용하여 해당 콘텐츠를 화면에 렌더링합니다. 또한 Direct2D를 사용하여 같은 콘텐츠를 인쇄 시스템에 렌더링합니다. Reader의 콘텐츠는 GDI에서 유료로 변환할 필요 없이 인쇄 시스템에 XPS로 쉽게 전송됩니다.

앱에서 화면 레이아웃과 다른 인쇄 레이아웃을 요구하는 경우 스타일 시트 또는 XAML을 사용하여 이 작업을 수행할 수 있습니다. 따라서 '이 페이지를 프린터에서 인식 가능한 버전으로 변환하려면 여기를 클릭'하는 등의 작업을 수행할 필요가 없습니다. XPS를 지원하는 프린터가 있으면 앱에서 프린터 사이의 경로에 변환 과정이 포함되지 않으므로 인쇄가 매우 빠릅니다.

지금까지 앱에서 인쇄 정보를 인쇄 시스템에 전송하는 방법을 다각적으로 살펴보았으므로 이제 시스템에서 수행하는 작업, 시스템에서 제공하는 서비스 및 그밖의 Windows 8 변경 사항에 대해 알아보겠습니다.

다양한 프린터 지원

Windows에서 앱에 제공하는 많은 이점 중 하나는 앱에서 특정 프린터를 추상화하므로 앱 프로그래머가 설치된 프린터에 대해 걱정할 필요가 없다는 점입니다. Windows는 Windows 업데이트 또는 제조업체 웹 사이트를 통해 제공되는 드라이버에서 지원하는 프린터를 비롯해 수만 가지 프린터 모델을 지원합니다. 간혹 프린터가 작동하지 않는 경우가 있는데, 이는 제조업체에서 해당 소프트웨어를 설치할 Windows 버전을 인식하지 않는 경우 설치를 차단하도록 설정했기 때문입니다. Microsoft는 프린터 제조업체와 함께 이러한 패키지를 업데이트하고 있지만 어느 정도 시간이 걸릴 것으로 예상됩니다.

가장 이상적인 경험은 사용자가 오프라인으로 전환하여 드라이버를 찾지 않고도 새 프린터를 Windows에 연결하기만 하면 프린터가 작동하도록 하는 것입니다.

그렇다면 이를 어떻게 실현할 수 있을까요? 과거에 Microsoft는 수많은 프린터 드라이버를 Windows와 함께 제공했습니다. Vista에는 약 4,500개의 드라이버가 포함되어 있고, Windows 7에는 약 2,100개의 드라이버가 포함되어 있습니다. Windows 7은 드라이버 수가 Vista보다 절반 정도로 줄었지만 지역/국가 지원 범위는 더욱 확대되었습니다. 이는 하나의 드라이버로 더 많은 프린터를 지원할 수 있음을 의미합니다. 그 이유는 무엇일까요? 현재 사용되는 프린터는 무수히 많습니다. Vista는 오래되고 더 이상 사용되지 않는 많은 장치를 지원했기 때문에 지원되는 장치 집합의 관련성이 Windows 7만큼 뛰어나지 않았습니다.

우리가 새 버전의 Windows를 출시할 때 수행한 나머지 한 가지 작업은 이전 버전에 있던 드라이버를 Windows 업데이트에 게시하여 이러한 장치가 일반적으로 사용되지 않는 경우에도 사용자가 연결하기만 하면 장치가 자동으로 작동할 수 있도록 한 것입니다.

다음은 이 모든 작업을 수행한 프린터 랩(몇 곳이 있음) 중 하나의 작업대 하나를 찍은 사진입니다. 여러 제조업체의 소형 잉크젯 및 레이저 프린터가 보일 것입니다. 다행인 것은 요즘에는 도트 매트릭스 프린터를 그다지 자주 테스트하지 않는다는 것입니다.

프린터 테스트

사용자들은 평균적으로 프린터를 5~7년 정도 사용하기 때문에 지원을 추가할 때 '사용자들이 어떤 장치를 사용하는지, 지난 몇 년간 가장 널리 사용된 장치는 무엇인지, 앞으로 가장 널리 사용될 장치는 무엇인지' 등을 고려해야 합니다. 마지막 질문은 Microsoft에서 Windows를 출시한 직후에 프린터 제조업체에서 우리가 모르는 장치를 출시하는 데서 발생하는 복잡한 문제입니다. 이는 특정 버전의 Windows에서 지원하는 장치 집합이 시간이 지나면 부실해질 것임을 의미합니다.

우리는 어떤 시점에서든 약 100개의 특정 프린터 모델이 설치된 프린터의 약 50%를 차지한다는 것을 알고 있습니다. 오늘날 사용되는 모델의 75%를 지원하려면 약 300개 모델을 지원해야 합니다. 관련 내용이 아래 다이어그램에 표시되어 있습니다.

지역/국가 지원 범위를 실현하는 데 필요한 장치

지원 범위 95%에 도달하려면 1,000개가 넘는 모델을 지원해야 합니다. 그러나 이 100개, 300개 또는 1,000개를 구성하는 프린터가 항상 바뀌기 때문에 문제가 훨씬 더 어려워집니다. '현재' 지역/국가의 50%를 대표하는 100개 프린터가 '다음 주' 또는 다음 달의 50%를 대표하는 100개 프린터와 같지 않으며 내년에는 더욱 그럴 것입니다. 매일 많은 사용자들이 새 프린터를 구입하고 설치합니다.

앞서 설명했듯이, 과거에 이 문제를 해결하기 위해 기본적으로 무차별적인 접근 방법을 택했습니다. 우리에게는 레드몬드에 있는 사무실에서 Windows에 포함된 해당 원본 코드를 확인하면서 Microsoft와 직접 협력하는 주요 프린터 제조업체의 담당자들이 있습니다. 이들은 새 버전의 Windows가 출시될 때마다 완전히 새로운 Windows 제공 드라이버 집합을 만듭니다. 이는 그다지 효율적이지 않습니다.

Windows 8에서는 완전히 다른 접근 방법을 택했으며 Windows와 함께 제공되는 프린터 드라이버 수를 많이 줄였습니다. 대신, '인쇄 클래스 드라이버 프레임워크'를 구축했습니다. 이 프레임워크는 기존 장치에서의 인쇄를 지원하기 때문에, 확장 가능하지만 제조업체에서 아직 설계되지 않은 새 장치에 대한 지원도 포함할 수 있도록 지원합니다.

인쇄 클래스 드라이버 프레임워크를 사용하면 실제로 드라이버를 찾을 필요 없이 프린터가 Windows 인쇄 시스템과 함께 작동하는 드라이브 없는 인쇄와 같은 경험을 제공할 수 있게 됩니다. 진정한 드라이브 없는 인쇄 경험을 위해서는 대다수 프린터의 설계 방식을 변경해야 합니다. 인쇄 클래스 드라이버 프레임워크는 이 개념을 지원하지만 기존 장치에 대해서도 가능한 한 많은 지원을 제공하는 것이 매우 중요하다고 생각합니다.

새 프린터 및 계획된 프린터를 지원하는 기능이 있기 때문에 Windows 8 인쇄 클래스 드라이버 프레임워크에서 지원하는 프린터 수는 실제로 시간이 지남에 따라 크게 증가할 것입니다.

이러한 지원 가능한 장치의 수가 증가한 것 외에도 지원 범위를 넓히기 위해 사용하는 리소스도 줄일 수도 있었습니다.

첫째, 프린터 및 이미징 장치를 지원하는 데 필요한 디스크 공간을 768MB(Windows Vista)에서 184MB(Windows 8)로 줄였습니다. 이는 Windows 8의 여러 버전 및 아키텍처에서 평균적인 수치입니다. 다음 그림에서는 Windows Vista 이후에 사용된 공간의 감소량을 보여 줍니다.

프린터 및 이미징을 지원하는 데 필요한 디스크 공간

Windows 8, Windows 7 및 Windows Vista에서 프린터 및 이미징 장치를 지원하는 데 필요한 디스크 공간 비교

또한 사용되는 디스크 공간의 감소와 함께 Windows에서 직접 지원하는 장치의 관련성이 높아졌습니다. 다음 표에는 Windows 제공 드라이버의 관련성 증가 및 디스크 사용량 감소 현황이 요약되어 있습니다.

 

'Windows 제공 드라이버'에서 지원하는 대략적인 장치 수

대략적인 설치 비율

사용되는 디스크 공간

Windows Vista

4200

55-60%

768MB

Windows 7

2100

60-65%

446MB

Windows 8

2500

출시 때 70%에서 80%로 증가

184MB

이는 Windows 8에서 크게 향상된 기능이며, 이러한 공간 감소는 저장소 용량이 제한된 하드웨어 사용자(일부 Windows RT 고객이 여기에 해당될 것으로 예상됨)가 사용할 수 있는 추가 저장소 공간으로 바로 전환됩니다.

Windows 8 프린터 드라이버 모델은 제조 파트너가 Windows 버전 간에 많이 변경되지 않는 코드 집합을 개발하는 데 중점을 둘 수 있도록 합니다. 따라서 드라이버 집합을 지속적으로 다시 채우는 대신 품질과 성능을 향상시키는 데 리소스를 더욱 유용하게 투입할 수 있습니다.

인쇄 클래스 드라이버 아키텍처

Windows RT 및 Metro 스타일 앱의 요구 사항을 지원하는 아키텍처를 생성하는 것 외에도 이 모델이 기존 장치와 함께 작동하고 프린터 제조업체에 친숙한 기술을 활용함으로써 프린터 제조업체가 새로운 드라이버 기술을 보다 쉽게 구현할 수 있도록 하려고 했습니다.

프린터 드라이버는 몇 가지 중요한 기능을 수행합니다.

  • 구성 - 사용자가 설정을 변경할 수 있습니다. 예를 들어 양면 인쇄를 원하는 경우 프린터에서 요구하는 특정 명령으로 변환할 수 있습니다. 구성은 사용자 인터페이스를 통해 사용자에게 제공됩니다.
  • 렌더링 - Windows 인쇄 시스템에서 사용하는 형식의 인쇄된 콘텐츠를 프린터에서 인식하는 형식으로 변환합니다. 경우에 따라 프린터에서 기본 Windows 인쇄 형식(XPS)을 직접 인식할 수 있으므로 이러한 장치의 경우 추가 렌더링(예: 용지당 여러 페이지 인쇄)이 필요하지 않는 한 별도의 작업이 필요 없습니다. 렌더링을 수행하는 드라이버 요소를 '렌더링 필터'라고 합니다.
  • 이벤트 - 프린터에서 사용자에게 작업이 완료되었거나 용지가 걸렸거나 프린터에 잉크가 부족하다는 등을 알릴 수 있도록 합니다.

구성 UI

이전 드라이버 모델과 Windows 8 드라이버 모델 간에 크게 변경된 한 가지 사항은 UI 제공 방식입니다. 이전 프린터 드라이버 모델에서는 구성 UI가 드라이버에 기본 제공되었습니다. 다음은 일반적인 프린터 UI의 예입니다(현재 내 책상에 있는 Epson NX430의 UI).

인쇄 품질, 용지, 잉크 수준, 방향 등의 옵션이 포함된 Espon NX430 시리즈 인쇄 기본 설정 대화 상자

앞서 설명했듯이, 사용자가 프린터 설정을 변경하려는 경우 Metro 스타일 UI를 표시할 수 있는 방법을 찾아야 했습니다.

Windows 8 드라이버 모델에서는 제조업체의 UI가 해당 드라이버와 완전히 분리됩니다. 이는 여러 가지 면에서 훨씬 유용한 아키텍처를 제공합니다. 프린터를 제어하는 UI는 이제 Metro 스타일 앱 또는 데스크톱 앱에 인쇄할 때 호출할 수 있는 앱입니다. 따라서 프린터 제조업체는 훨씬 풍부한 경험(예: 프린터를 설정하거나 잉크 카트리지를 설치하는 방법을 보여 주는 동영상 제공)을 제공할 수 있습니다.

다음은 Epson에서 Epson NX430용으로 개발한 Metro 스타일 앱의 예입니다.

잉크 수준, 용지 종류, Epson 소개 및 사용 방법에 대한 옵션이 포함된 전체 화면 Metro 스타일 앱

이 UI는 Metro 스타일 앱의 모든 특성을 갖추고 있지만 사용자의 프린터로 지원합니다. 여기에는 프린터의 잉크 수준을 보여 주는 매력적인 보기가 포함되어 있으며 특히 터치 스크린 장치에서 사용할 때 훨씬 간편합니다.

Windows에서는 올바른 유형의 UI를 자동으로 표시합니다. 즉, 데스크톱 앱에서 인쇄하려는 경우 데스크톱 프린터 UI를 표시하고, Metro 스타일 앱에서 인쇄하려는 경우 Metro 스타일 UI를 표시합니다.

제조업체에서 해당 장치에 대한 구성 UI를 제공하지 않은 경우 Windows에서는 모든 프린터에서 사용할 수 있는 표준 UI를 제공합니다. 그러나 프린터 제조업체에서 해당 장치의 사용자 지정 환경을 제공하는 데 투자하기로 결정한 경우 표준 Windows UI를 대체하는 앱을 제공할 수 있습니다. 이 경우 사용자가 장치 구성을 변경하거나 인쇄 중에 장치 구성이 변경되면(예: 용지 걸림) Windows에서 제조업체의 사용자 지정 앱을 표시합니다.

렌더링

프린터 드라이버의 가장 중요한 기능 중 하나는 사용자가 인쇄를 요청한 경우 앱에서 생성하는 콘텐츠를 가져와 프린터에서 인식할 수 있는 콘텐츠로 변환하는 기능입니다. 이는 Windows 8 인쇄 클래스 드라이버를 구축할 때 가장 까다로운 영역 중 하나였으므로 좀 더 자세히 알아보겠습니다.

앞서 설명했듯이, Word 또는 Photoshop과 같은 데스크톱 앱에서는 그래픽 명령을 사용하여 해당 콘텐츠를 화면이나 프린터에 그립니다. 이 작업을 수행할 때 인쇄 시스템은 콘텐츠를 수신하여 필요한 경우 XPS로 변환한 다음 프린터의 드라이버(또는 보다 구체적으로, 드라이버의 '렌더링 필터' 부분)를 호출하여 해당 콘텐츠를 올바른 형식으로 변환합니다. 그런 다음 이 콘텐츠가 프린터로 전송되고 파일이 출력됩니다.

광범위한 프린터를 지원하기 위해 해결해야 하는 가장 큰 문제 중 하나는 프로그램의 렌더링 부분을 처리하는 것입니다. 일부 고가 프린터에서는 PostScript, PCL 및 XPS와 같은 표준 PDL(페이지 기술 언어)을 지원합니다. 그러나 소비자 중심의 저가형 장치는 비용 절감을 염두에 두고 제조되었으며, 대부분 페이지 정보를 프린터로 보내는 고유의 방식을 지원합니다. 일부 제조업체는 해당 제품군에서 몇 가지 언어만 사용하는 반면, 다른 제조업체는 프린터 하드웨어를 최대한 활용하도록 모델 간에 언어를 조정할 수 있습니다.

이 경우 프린터 드라이버와 프린터 하드웨어 간에 1:1 매핑이 이루어집니다.

PDL1은 Fabrikam 1000 프린터에, PDL2는 Fabrikam 2000 프린터에, PDL3은 Fabrikam 2010 프린터에 매핑된 모습을 보여 주는 그림

각 PDL을 완전한 프린터 드라이버라고 생각하면 지원이 증가할 경우 그에 따라 드라이버 수도 꾸준히 증가한다는 점을 쉽게 생각할 수 있을 것입니다. 물론 이것은 약간 단순화한 설명이지만 여러 장치를 지원하는 드라이버를 만드는 것이 가능하며 우리는 일련의 프린터를 지원하는 드라이버를 자주 보아왔습니다. 그러나 중요한 점은 Windows 7 이하에서는 이러한 설계 접근 방법을 지원하기 위해 적용된 것이 아무 것도 없다는 점입니다.

Windows 8의 프린터 드라이버 모델은 PDL(또는 드라이버)을 여러 장치와 연결할 수 있다는 개념을 지원합니다.

PDL X가 세 대의 프린터에 매핑된 모습을 보여 주는 그림

Microsoft는 프린터 제조 파트너와 함께 각 파트너의 장치에 보다 일반적으로 지원되는 방식을 설명하는 식별자를 포함하기 위해 노력했습니다. 우리는 이를 '호환 가능 ID'라고 합니다. 예를 들어 장치에 XPS를 지원함을 나타내는 호환 가능 ID가 있는 경우 인쇄 시스템에서는 해당 장치의 모델별 드라이버를 찾을 필요 없이 장치의 범용 XPS 드라이버를 설치하기만 하면 된다는 것을 인식합니다. Windows에서는 장치가 범용 XPS 프린터이며 이러한 방식으로 처리할 수 있음을 인식합니다. 물론 Windows에서는 이것이 Fabrikam 1000 프린터(또는 그 밖의 모든 프린터)라는 것도 인식하므로 모델별 드라이버가 있는 경우 해당 드라이버를 설치합니다. 그러나 사용 가능한 드라이버가 없는 경우에는 Windows에서 클래스 드라이버를 사용하여 프린터에 인쇄할 수 있습니다.

따라서 이 예가 보여주듯 클래스 드라이버 모델의 일부로 기본 제공되는 렌더링 필터의 집합은 일치하는 호환 가능 ID를 구현하는 모든 장치에 이러한 렌더링 필터를 설치할 수 있게 합니다. 이 개념을 논리적으로 확장하면, 아직 설계되거나 만들어지지 않은 미래의 장치도 Windows 8의 인쇄 클래스 드라이버와 호환될 가능성이 높습니다. Microsoft는 프린터 제조업체와 함께 각 제조업체의 장치에 호환 가능 ID를 구현할 계획이며 많은 제조업체에서 이미 구현하고 있습니다. 이러한 호환성 때문에 Windows 8에서 지원되는 프린터 수는 시간이 지나면서 늘어날 것이며 앞으로 더 많은 사용자가 드라이버를 찾지 않고도 Windows 8에서 즉시 프린터를 사용할 수 있게 될 것입니다.

그렇다면 고유한 렌더링 언어를 사용하는 장치는 어떻게 될까요? 인쇄 클래스 드라이버는 이러한 모델도 지원합니다. 하지만 각각의 고유 언어를 사용하는 소규모 모델 집합마다 별도의 렌더링 필터가 필요한 단점이 있습니다. 이 문제를 해결할 방법은 없으며, Windows 8에서 일반적으로 사용되는 모델에 적용되는 몇 가지 필터를 만들었습니다. 그러나 다시 한 번 말하지만, 프린터 제조업체와 함께 이를 개선하기 위해 노력하고 있으며 제조업체에서 앞으로 클래스 드라이버를 훨씬 쉽게 활용할 수 있는 프린터를 생산할 것이라고 기대합니다.

Windows RT에서의 인쇄

인쇄 클래스 드라이버에서 사용하는 리소스의 감소는 Windows 설치 공간을 줄이는데 기여하며, 이는 Windows RT에서 특히 중요합니다. 또한 V3 프린터 드라이버 아키텍처는 확장성이 매우 뛰어나며 여러 해에 걸쳐 크고 복잡한 프린터 드라이버의 개발을 뒷받침하는 모델로 진화해 왔습니다. 일부 드라이버는 상시 실행되는 서비스를 설치하므로 배터리를 소모하고 프로세서 시간을 지연시킵니다. 저는 하나의 장치만 지원하지만 Windows 8의 전체 프린터 드라이버 집합보다 큰 드라이버도 본 적이 있습니다.

Windows RT에서의 인쇄 지원에 대한 수요 및 인쇄 효율성 향상에 대한 일반적인 요구로 인해 드라이버가 수행할 수 있는 기능을 보다 긴밀하게 제어하는 아키텍처를 개발할 수 있었습니다. 앞서 인쇄 경험의 UI 부분이 이제 드라이버의 일부가 아니라 완전히 별도의 구성 요소인 앱이라고 설명했습니다. 이는 선택 사항이기도 하며, 드라이버가 표준 Microsoft 인쇄 UI와 함께 원활하게 작동함을 의미합니다. 또한 서비스 종속성을 제거하고 드라이버에 추가 소프트웨어가 포함될 가능성을 줄여 드라이버 아키텍처를 보다 전원 효율적으로 간소화했습니다.

Windows 8 드라이버 모델에서는 프린터 드라이버 설치 방법도 대폭 변경되었습니다. Windows 7 이하에서는 모든 프린터 드라이버가 모든 유형의 드라이버에 사용되는 일종의 데이터베이스인 '드라이버 저장소'에 저장됩니다. 사용자가 프린터에 연결하면 드라이버 저장소에서 올바른 드라이버를 찾아서 스풀러가 사용자의 프린터에서 사용할 수 있는 특정 위치에 드라이버를 복사합니다. Windows 8에서는 이 추가적인 복사가 필요 없으므로 디스크 I/O가 크게 줄어듭니다. 인쇄 스풀러는 이제 드라이버 저장소에서 드라이버를 찾는 방법만 인식합니다.

실제 예를 위해, Windows 7과 Windows 8에서의 Epson Artisan 설치 시간을 비교했습니다(Windows 7의 경우 비교적 작은 드라이버 사용). Windows 7에서는 설치 시간이 14초였고, Windows 8에서는 2초 미만이었습니다.

결론

아시겠지만, Windows 8 프린터 드라이버 아키텍처는 크게 진화한 기술입니다. 작고 빠르며 기본 제공되는 클래스 드라이버 프레임워크로 사용자들이 이미 가지고 있는 많은 프린터를 지원하는 동시에 미래에 갖게 될 장치도 지원합니다. 또한 성능이 뛰어나고 디스크 설치 공간도 작습니다.

여러분의 많은 의견을 기다리겠습니다.

- Adrian Lannin