Imprimir é uma das coisas mais comuns que fazemos com os PCs, mesmo lendo e trabalhando com mais recursos online. Decidimos simplificar e aperfeiçoar essa operação comum, trabalhando com parceiros em todo o ecossistema para oferecer esses aperfeiçoamentos no Windows 8. Esta postagem foi escrita por Adrian Lannin, gerente de programas líder da equipe de impressão. 

--Steven


De todos os dispositivos periféricos que você pode conectar ao seu PC com Windows, a impressora é um dos mais populares e tem suporte há mais tempo. De fato, o Windows 1.0 (lançado em 1985) dava suporte a “várias impressoras e plotadoras” e incluía um spooler de impressão, que permite ao usuário trabalhar em um arquivo enquanto imprime outro, de acordo com o kit de imprensa do Windows 1.0. A captura de tela do Windows 1.0 abaixo mostra os arquivos incluídos naquela versão do Windows – Epson.drv, muitos arquivos de fonte e o processo do spooler de impressão. Algumas peças do sistema de impressão são mais antigas do que as pessoas que as usam. :-)

Windows 1.0 MS-DOS Executive com a lista de arquivos.

Ao longo dos anos, o sistema de impressão evoluiu para uma arquitetura complexa que dá suporte à impressão em uma enorme variedade de impressoras, que vão de uma simples jato de tinta de US$ 50 usada em casa até um servidor de impressão de alta disponibilidade que hospeda milhares de filas de impressão para centenas de milhares de usuários, com impressoras que custam dezenas de milhares de dólares cada.

Um sistema de impressão avançado da Xerox e uma impressora doméstica mais simples da EpsonO sistema de impressão envolve várias camadas e facetas do Windows. Ele mostra a interface do usuário e hospeda drivers que também mostram interface do usuário. Ele realiza operações gráficas de forma intensiva, pois imprimir é basicamente redesenhar o conteúdo da sua tela no papel. Ele abrange comunicações de nível mais baixo, principalmente USB ou rede (a maioria das impressoras compradas nos Estados Unidos hoje em dia tem capacidade de rede, mas os dados da nossa telemetria nos dizem que mais de 75% das impressoras instaladas com o Windows 8 Consumer Preview estão conectadas a uma porta USB). O sistema de impressão precisa dar suporte a implantações críticas muito grandes em grandes empresas, mas também ser executado de maneira eficiente em sistemas pequenos.

Nesta postagem, falarei sobre o trabalho que fizemos no Windows 8 para reimaginar a forma como o sistema de impressão poderia melhor oferecer aos nossos clientes um bom suporte a dispositivos. Mostrarei como isso funciona em PCs com base em ARM e em aplicativos estilo Metro. E falarei sobre o que fizemos para garantir que o maior número de impressoras existentes "simplesmente funcionem", sejam acessadas pela área de trabalho, por um aplicativo estilo Metro ou por um dispositivo com o Windows RT em execução.

Reimaginando o sistema de impressão para o Windows 8

No Windows 8, introduzimos uma nova arquitetura de driver de impressora, chamada de versão 4 ou v4. A arquitetura v4 produz drivers de impressora mais rápidos e menores, e apoia a ideia de uma estrutura de drivers de classe de impressão, um sistema que, em muitos casos, permite às pessoas instalar suas impressoras sem a necessidade de localizar um driver para aquele dispositivo.

Como você provavelmente já deve ter deduzido, a V4 é a quarta iteração de arquitetura de driver de impressora no Windows. A V3 foi a arquitetura usada do Windows 2000 até o Windows 7 e ainda tem total suporte no Windows 8 por razões de compatibilidade de dispositivos. Portanto, se você tiver somente um driver disponível para a sua impressora atual, ele continuará funcionando no Windows 8. As versões 1 e 2 foram as arquiteturas de driver do Windows 1.0 até o Windows ME.

Antes de explicar o funcionamento do sistema de impressão, eu gostaria de falar sobre alguns dos requisitos com os quais trabalhamos para lidar com o sistema de impressão do Windows 8.

Imprimindo com aplicativos estilo Metro

Uma das coisas que precisávamos resolver era como oferecer aos desenvolvedores de aplicativos estilo Metro a capacidade de impressão. A impressão em aplicativos win32 exige conhecimento de programação gráfica, GDI (Graphics Device Interface) ou XPS (XML Paper Specification). Quando analisamos como poderíamos possibilitar a impressão em aplicativos Windows 8, reinventamos totalmente a forma como a possibilitamos no Tempo de Execução do Windows, e ela ficou muito fácil em aplicativos HTML5/JavaScript e XAML/C#.

Integrando a impressão nos aplicativos estilo Metro

A impressão em aplicativos estilo Metro naturalmente deveria ser uma experiência estilo Metro. Tenho certeza de que a maioria de vocês, ao imprimir alguma coisa, viram a janela pop-up de um miniaplicativo informando que o papel da impressora acabou ou oferecendo a oportunidade de comprar tinta.

Caixa de diálogo de impressão da Epson informando o tipo e o tamanho do papel, botões para verificar os níveis de tinta, comprar tinta Epson ou acessar o suporte online.

Essas janelas pop-up são muito comuns com impressoras a jato de tinta. Algumas pop-ups somente são exibidas quando há alguma informação importante (a sua tinta está acabando), enquanto outras são exibidas toda vez que algo é impresso. Essas pop-ups são exibidas pelo próprio software do driver da impressora e todas elas são interface do usuário da área de trabalho, claro. No entanto, quando você imprimir do aplicativo de fotos estilo Metro, por exemplo, não queremos fazê-lo voltar para a área de trabalho só para ver a interface do usuário informando que a impressão está em andamento.

Impressão no Windows RT

Os drivers de impressora evoluíram com o tempo para incluir várias funcionalidades — alguns instalam serviços, outros instalam inúmeros aplicativos pequenos e muitos agora estão bastante grandes. O modelo do driver de impressora v3, em uso desde o Windows 2000, evoluiu para um modelo altamente extensível e complexo, o que permitiu aos fabricantes de impressoras muito mais liberdade quanto ao que é instalado com o software do driver. Quando pensamos sobre como isso funcionaria em alguns dos dispositivos que executarão o Windows RT, sabíamos que seria necessário fazer algumas alterações significativas na arquitetura. Desejávamos realmente garantir que não houvesse nenhum impacto negativo para os sistemas ARM com a execução de serviços desnecessários e queríamos reduzir o uso de recursos do sistema, dando suporte, no entanto, ao máximo de dispositivos possível.

Suporte a muitas impressoras, muito menos drivers

Há uma diversidade enorme nas funcionalidades de impressoras, e o Windows dá suporte a uma vasta gama delas. No Windows 7 e versões anteriores, cada uma dessas impressoras precisava de um driver específico para funcionar (há algumas exceções, como os drivers de impressora universais, mas eles tendem a ser grandes e a exigir muitos recursos). Isso significa que o número de drivers que incluímos no Windows (os chamados drivers nativos) foi muito grande para oferecer um bom suporte. É claro que temos muito mais drivers no Windows Update, mas acreditamos que seja importante ter um conjunto básico de drivers nativos que deem suporte a dispositivos populares, portanto, ainda podemos oferecer uma boa experiência de impressão para as pessoas que não podem ou não vão baixar um driver do Windows Update. Os drivers nativos são essenciais para o Windows RT — ele usa somente drivers de impressora nativos. O desafio aqui é alcançar um número relevante de impressoras com suporte, mas também reduzir os recursos necessário para atingir esse objetivo.

Outro desafio interessante ao dar suporte a inúmeras impressora é que esse suporte fica obsoleto com o tempo. O conjunto de drivers incluído no Windows 7, por exemplo, oferecia suporte excelente para dispositivos lançados em 2008 e 2009, mas conforme novos dispositivos foram lançados ao longo dos anos e o tempo foi passando, o conjunto de drivers no Windows 7 se tornou menos relevante. Um grande desafio no Windows 8, então, é garantir que o Windows ofereça um alto nível de suporte para muitas impressoras, incluindo aquelas que ainda não foram lançadas.

Compartilhamento da impressora

Qualquer pessoa que tenha administrado um servidor de impressão pode afirmar que obter os drivers corretos instalados para dar suporte ao compartilhamento é a parte mais demorada do gerenciamento de um servidor de impressão. Você pode encontrar algumas dessas dificuldades quando tentar compartilhar uma impressora em casa também, especialmente se você tiver as versões do Windows de 32 e de 64 bits. Isso se torna complicado porque o "servidor" de impressão (que é simplesmente o PC ao qual a impressora está conectada – e não o Windows Server de fato) tem de fornecer os drivers para os clientes que desejam imprimir na impressora compartilhada. No Windows 7, usamos o Grupo Doméstico para solucionar esse problema, o que funciona bem em grande parte do tempo. No entanto, a necessidade de carregar drivers para cada arquitetura do Windows se torna mais problemática se pensarmos na impressão usando o Windows RT.

Embora esperemos que a maioria das pessoas que usam dispositivos com o Windows RT provavelmente usem impressoras sem fio, não desejamos excluir totalmente a possibilidade de impressão para uma impressora USB. Por outro lado, não desejávamos aumentar a complexidade do compartilhamento da impressora exigindo que as pessoas adicionassem drivers para clientes de 32 bits, de 64 bits e Windows RT! Portanto, com o modelo v4 no Windows 8, desenvolvemos uma nova maneira de compartilhar impressoras que não depende de colocar drivers do cliente no servidor de impressão.

O sistema de impressão no Windows 8

Os aplicativos permitem que você crie e exiba conteúdo. A finalidade do sistema de impressão é oferecer esses aplicativos com os meios de imprimir o seu conteúdo em qualquer impressora instalada sem precisar se preocupar com o dispositivo que está instalado. Falarei um pouco sobre como o aplicativo imprime e detalharei mais como passamos o conteúdo para uma página impressa.

Criando conteúdo imprimível

Quanto aos aplicativos, adicionar suporte de impressão é fácil. O conteúdo de um aplicativo que você deseja imprimir está em um formato especificado pelo aplicativo. Em aplicativos estilo Metro, normalmente será HTML5 ou XAML, mas em aplicativos Win32, como o Word ou Photoshop, o conteúdo estará em um formato específico de cada aplicativo em particular.

Portanto, quando desejar imprimir algo do seu aplicativo para a impressora, uma das coisas que o sistema de impressão precisará fazer é traduzir o conteúdo do formato do aplicativo para o formato compatível com a impressora. Infelizmente, nem todas as impressoras são compatíveis com os mesmos formatos (muito longe disso!), o que nos traz bastante trabalho.

Para dar um exemplo real, um aplicativo como o Word usa o sistema gráfico GDI tanto para exibir o conteúdo na tela quanto para transmiti-lo para a impressora. Quando possível, o sistema de impressão usa um formato intermediário de alta qualidade chamado XPS (XML Paper Specification) como o formato de conteúdo interno; convertemos o conteúdo do Word para o XPS. Optamos por usar o XPS como a base do nosso sistema de impressão porque esse formato é muito flexível e funciona exatamente como um papel eletrônico. Ele dá suporte à cor de alta fidelidade e, como é uma descrição baseada em XML com nenhum código executável inserido, é ótimo para fins de arquivamento, além de ser seguro se compararmos com outras opções. Além disso, a Microsoft tem trabalhado com a ECMA International (European Computer Manufacturers Association) para torná-lo um padrão aberto (padrão ECMA TC46, OpenXPS). O visualizador da área de trabalho e o aplicativo Leitor podem exibir o OpenXPS. Ele “imprime” todos os meus recibos de compras online como arquivos XPS.

Com o conteúdo gerenciado pelo sistema de impressão, ele é convertido para o formato compatível com a impressora (se necessário, há várias impressoras diretamente compatíveis com o XPS), e o sistema de impressão o envia para a impressora com o conjunto correto de opções, e o trabalho é impresso.

No Windows 8, temos um aperfeiçoamento diferente disso porque todos os aplicativos estilo Metro usam o Direct2D como o formato de desenho básico e o Direct2D e o XPS compartilham a mesma "linguagem" de gráficos baseados em XML. Em outro exemplo real, portanto, o aplicativo Leitor usa o Direct2D para renderizar seu conteúdo na tela. Ele também usa o Direct2D para renderizar o mesmo conteúdo para o sistema de impressão. O conteúdo do Leitor pode se enviado facilmente para o sistema de impressão como XPS, sem nenhuma conversão complexa do GDI.

Se o aplicativo exigir um layout de impressão diferente do layout da tela, ele pode usar folhas de estilos ou XAML. Isso significa que você não precisa "clicar para obter uma versão desta página para impressão". Se você tiver uma impressora que dê suporte a XPS, o caminho do aplicativo para a impressora não envolve nenhuma conversão, e a impressão fica extremamente rápida!

Agora que você entendeu, em termos gerais, como um aplicativo envia informações de impressão para o sistema de impressão, vou falar sobre o que o sistema faz com essas informações, os serviços que ele oferece e outras alterações presentes no Windows 8.

Dando suporte a muitas impressoras

Um dos grandes benefícios oferecidos pelo Windows para os aplicativos é que ele extrai a impressora específica do aplicativo, para que o programador não tenha de se preocupar com a impressora que você instalou. O Windows dá suporte a centenas de milhares de modelos de impressora, incluindo aquelas com suporte de drivers disponíveis por meio do Windows Update ou o site do fabricante. Normalmente, impressoras não funcionam porque o fabricante optou por bloquear a instalação do software em versões do Windows não reconhecidas. Trabalhamos com os fabricantes de impressoras para que esses pacotes sejam atualizados, mas isso leva algum tempo.

O ideal é que uma nova impressora simplesmente funcione ao ser conectada no Windows sem a necessidade de procurar drivers.

Então, como tornamos isso possível? No passado, lançamos vários drivers de impressora no Windows. O Vista continha cerca de 4.500 drivers e o Windows 7, aproximadamente 2.100. Mesmo tendo metade do número de drivers do Vista, o Windows 7 oferecia uma melhor cobertura do mercado, pois havia mais chances de haver um driver para as impressoras mais populares. Por quê? Há uma diversidade incrível de impressoras sendo usadas. No Vista, suportamos vários dispositivos antigos não mais usados popularmente, portanto, a relevância do conjunto de dispositivos com suporte não era tão boa quanto no Windows 7.

Além disso, outra medida que tomamos ao lançar uma nova versão do Windows é postar no Windows Update os drivers que estavam na versão anterior, de forma que, apesar de esses dispositivos estarem se tornando menos populares, ainda é possível fazê-los funcionar automaticamente bastando apenas conectá-los.

Aqui está uma foto que eu tirei de uma das bancadas em um dos laboratórios de impressoras (temos várias) em que comprovamos o funcionamento de todas elas. Você pode ver várias impressoras a jato de tinta e a laser de diferentes fabricantes. Felizmente, não testamos impressoras matriciais com muita frequência hoje em dia.

Testes de impressora

As pessoas normalmente usam a mesma impressora por cerca de 6 anos em média, portanto, quando desejamos incluir suporte, temos de pensar "quais dispositivos as pessoas estão usando"? Quais foram os dispositivos mais populares nos últimos anos e quais serão os mais populares no futuro?" A última pergunta é complicada porque, logo após o lançamento do Windows, os fabricantes de impressoras lançarão dispositivos totalmente desconhecidos por nós. Isso significa que, com o passar do tempo, o conjunto de dispositivos a que damos suporte em qualquer versão específica do Windows se torna obsoleto.

Sabemos que, a qualquer momento, cerca de 100 modelos de impressora específicos serão 50% do total de impressoras instaladas. Para dar suporte a 75% dos modelos em uso hoje, precisamos dar suporte a cerca de 300 modelos. O diagrama abaixo ilustra isso.

Dispositivos necessários para atingir a cobertura de mercado

Para atingir 95%, precisamos dar suporte a mais de 1.000 modelos. Mas o problema é ainda mais difícil porque as impressoras que compõe esse conjunto de 100, 300 ou 1000 unidades mudam o tempo todo. As 100 impressoras que representam 50% do mercado hoje não são as mesmas 100 impressoras que representarão 50% semana que vem ou no próximo mês e, muito menos, no ano que vem. Todo dia, muitas pessoas compram e instalam novas impressoras.

Como mencionei acima, fizemos um esforço enorme no passado para solucionar isso. Temos representantes dos principais fabricantes de impressoras trabalhando diretamente com a Microsoft, dentro dos escritórios de Redmond, para verificarem o código-fonte deles no Windows. Eles criariam um conjunto totalmente novo de drivers nativos para cada novo lançamento do Windows. Mas isso não é muito eficiente.

No Windows 8, adotamos uma abordagem radicalmente diferente e paramos de incluir inúmeros drivers de impressora no Windows. Em vez disso, criamos uma estrutura de drivers de classe de impressão. Essa estrutura é extensível, pois dá suporte à impressão nos dispositivos existentes, mas também permite aos fabricantes incluir suporte para novos dispositivos, mesmo aqueles que ainda não foram criados.

Com uma infraestrutura de drivers de classe de impressão, podemos nos aproximar de uma experiência de impressão sem drivers, onde não é necessário localizar um driver, pois a impressora simplesmente funciona com o sistema de impressão do Windows. Uma experiência de impressão verdadeiramente sem drivers requer alterações sobre como a maioria das impressoras é projetada, e a estrutura de drivers de classe de impressão dá suporte a essa ideia, mas também achamos que é muito importante fornecer o máximo possível de suporte para os dispositivos existentes.

Com a capacidade de dar suporte a impressoras novas e planejadas, o número de impressoras a que a estrutura de drivers de classe de impressão do Windows 8 dá suporte aumentará com o tempo.

Além do ótimo progresso no aumento do número de dispositivos com suporte, nós também pudemos reduzir os recursos que usamos para atingir essa cobertura.

Primeiro, reduzimos a quantidade de espaço em disco necessária para dar suporte a impressoras e dispositivos de imagem de 768 MB no Windows Vista para cerca de 184 MB no Windows 8. Esse número é a média de diferentes edições e arquiteturas do Windows 8. O gráfico a seguir ilustra a redução no espaço usado desde o Windows Vista.

Espaço em disco necessário para dar suporte a impressoras e geração de imagens

Comparação do espaço em disco necessário para dar suporte a impressoras e dispositivos de imagem no Windows 8, Windows 7 e Windows Vista

Além disso, a redução do espaço em disco usado foi acompanhada por um aumento na relevância dos dispositivos com suporte direto do Windows. A tabela a seguir resume como a relevância da cobertura nativa aumentou, enquanto o uso do disco diminuiu.

 

Número aproximado de dispositivos com suporte nativo

Número de instalações aproximado

Espaço em disco usado

Windows Vista

4200

55-60%

768 MB

Windows 7

2100

60-65%

446 MB

Windows 8

2500

70% no lançamento, aumentando para 80%

184 MB

Trata-se de um enorme aperfeiçoamento no Windows 8, e essa redução no espaço usado se traduz diretamente em mais espaço de armazenamento disponível para usuários de hardware com capacidade de armazenamento limitada, o que provavelmente será uma característica de alguns computadores com o Windows RT.

O modelo de driver de impressora do Windows 8 também nos permite concentrar os nossos parceiros de fabricação em um conjunto de códigos que não serão alterados muito de uma versão do Windows para a outra, portanto, poderemos gastar esses recursos de forma mais útil no aperfeiçoamento da qualidade e do desempenho, em vez de ficarmos incluindo drivers constantemente no conjunto.

Arquitetura de drivers de classe de impressão

Além do nosso desejo de criar uma arquitetura que desse suporte às necessidades de aplicativos estilo Metro e Windows RT, desejamos ter certeza de que o modelo também funcionaria com os dispositivos existentes, além de utilizar tecnologias conhecidas dos fabricantes de impressoras, de forma que fosse mais fácil para eles implementar a nova tecnologia de driver.

Um driver de impressora faz várias coisas essenciais:

  • A configuração permite ao usuário alterar as definições, convertendo a intenção de ativar a impressão frente e verso (por exemplo) para o comando específico que a impressora precisa para fazer isso. A configuração é apresentada ao usuário por meio da interface do usuário.
  • A renderização converte o conteúdo impresso do formato usado pelo sistema de impressão do Windows para o formato compatível com a impressora. Em alguns casos, a impressora pode entender diretamente o formato de impressão nativo do Windows (XPS), portanto, em dispositivos como esse, não há trabalho a ser feito, a menos que se deseje fazer outras renderizações (um exemplo seria imprimir várias páginas em uma folha). A parte do driver que faz a renderização é o filtro de renderização.
  • Os eventos permitem à impressora informar ao usuário que algo aconteceu: um trabalho foi concluído, houve obstrução de papel ou acabou a tinta.

Interface do usuário da configuração

Uma grande alteração entre o modelo de driver antigo e o modelo de driver do Windows 8 está na forma como a interface do usuário é apresentada. No modelo de driver de impressora antigo, a interface do usuário de configuração ficava no driver. Veja um exemplo comum de interface do usuário de impressora (tirado da Epson NX430 que tenho aqui na minha mesa).

Caixa de diálogo de preferências de impressão da Epson NX430 com opções de qualidade da impressão, papel, níveis de tinta, orientação etc.

Como mencionei antes, precisávamos encontrar uma maneira de permitir a exibição da interface do usuário estilo Metro para o caso de a pessoa desejar alterar as configurações da impressora.

No modelo de driver do Windows 8, a interface do usuário do fabricante é totalmente separada do driver. Trata-se de uma decisão de arquitetura muito melhor por vários motivos: A interface do usuário para controlar a impressora agora é um aplicativo que pode ser invocado na impressão de aplicativos estilo Metro ou aplicativos de desktop. Isso permite aos fabricantes de impressoras oferecer a você uma experiência muito mais rica: imagine um vídeo que mostre como configurar uma impressora ou instalar um cartucho de tinta.

Veja um exemplo de aplicativo estilo Metro que a Epson desenvolveu para a Epson NX430:

Aplicativo estilo Metro em tela inteira com opções de níveis de tinta, tipo de papel, demonstração da Epson e Instruções

Você pode observar que essa interface do usuário tem todas as características de um aplicativo estilo Metro, mas para a sua impressora. Ela inclui uma exibição bonita dos níveis de tinta da impressora e é muito mais fácil de usar, especialmente em dispositivos com tela sensível ao toque.

O Windows mostrará automaticamente o tipo correto de interface: interface do usuário da impressora na área de trabalho quando você imprimir itens de aplicativos de desktop e interface do usuário estilo Metro quando você imprimir itens de aplicativos estilo Metro.

Se o fabricante não tiver oferecido nenhuma interface do usuário de configuração para o dispositivo, o Windows oferecerá uma interface padrão que poderá ser usada com qualquer impressora. Entretanto, se o fabricante da impressora tiver decidido investir em uma experiência personalizada para o dispositivo dele, ele poderá oferecer um aplicativo para substituir a interface do usuário padrão do Windows. Portanto, quando você decidir alterar a configuração do dispositivo, ou quando houver alguma alteração na configuração do dispositivo durante a impressão, (por exemplo, no caso de uma obstrução de papel), o Windows exibirá o aplicativo personalizado do fabricante no lugar.

Renderização

Uma das funções mais importantes de um driver de impressora é obter o conteúdo produzido pelo aplicativo quando você solicita sua impressão e convertê-lo em algo que seja compatível com a impressora. Essa foi uma das áreas mais desafiadoras na criação do driver de classe de impressão do Windows 8, portanto, vou mostrar mais detalhes.

Como descrito acima, os aplicativos de desktop, como o Word ou Photoshop usam comandos gráficos para desenhar seu conteúdo na tela ou na impressora. Quando eles fazem isso, o sistema de impressão recebe o conteúdo, converte-o para XPS, se necessário, e invoca o driver da impressora (ou, mais especificamente, o filtro de renderização do driver) para converter o conteúdo para o formato certo. Isso é enviado para a impressora e o seu arquivo é impresso.

Provavelmente um dos maiores desafios do suporte a uma grande variedade de impressoras é lidar com a parte de renderização do problema. Algumas das impressoras mais caras dão suporte a "linguagens de descrição de página" padrão ou PDLs, como PostScript, PCL e XPS. Entretanto, dispositivos menos caros e focados no consumidor são fabricados com a economia de custos em mente, e muitos deles dão suporte a métodos proprietários de envio da informação da página para a impressora. Alguns fabricantes podem ter apenas algumas linguagens que são usadas em toda a linha de produtos, mas outros podem ajustar a linguagem de um modelo para outro, tentando extrair o máximo do hardware da impressora.

Isso leva ao mapeamento de 1:1 entre o driver e o hardware da impressora.

Ilustração mostrando mapas da PDL1 para a impressora Fabrikam 1000, mapas da PDL2 para a impressora Fabrikam 2000 e mapas da PDL3 para a impressora Fabrikam 2010

Imagine cada PDL como um driver de impressora completo e fica fácil observar que o suporte crescente envolve um número de drivers em constante crescimento. É claro que estamos simplificando as coisas e é possível criar um driver que dê suporte a vários dispositivos, e normalmente vemos drivers que dão suporte a uma série de impressoras. Mas o ponto principal aqui é que o Windows 7 e versões anteriores do Windows não fizeram nada para dar suporte a essa abordagem.

O modelo de driver de impressora no Windows 8 dá suporte à ideia de que um PDL (ou driver) possa ser associado a vários dispositivos.

Ilustração mostrando mapas PDL X para 3 impressoras diferentes

Temos trabalhado com os nossos parceiros fabricantes de impressoras para que incluam um identificador no dispositivo deles descrevendo, de forma genérica, como ele recebe suporte. Chamamos isso de identificação compatível. Portanto, por exemplo, se um dispositivo tiver uma identificação compatível que informa que o dispositivo dá suporte a XPS, o sistema de impressão sabe que ele não precisa localizar o driver de um modelo específico para esse dispositivo, ele pode simplesmente instalar um driver XPS para o dispositivo. O Windows entende que o dispositivo é uma impressora XPS genérica e pode tratá-la dessa forma. É claro que o Windows também entende que se trata de uma impressora Fabrikam 1000 (ou qual seja), portanto, se houver um driver de um modelo específico, ele será instalado pelo Windows. Mas se não houver nenhum driver disponível, o Windows ainda poderá usar essa impressora com o driver de classe.

Portanto, neste exemplo, definimos um conjunto de filtros de renderização nativos como parte do modelo de driver de classe e eles podem ser instalados para qualquer dispositivo que implemente uma identificação compatível correspondente. A lógica dessa ideia é que é bastante possível que dispositivos futuros, que ainda não tenham sido projetados nem criados, sejam compatíveis com o driver de classe de impressão no Windows 8. Temos trabalhado com os fabricantes de impressoras e todos eles planejam implementar identificações compatíveis em seus dispositivos (muito já fazem isso). Devido a essa funcionalidade, o número de impressoras com suporte no Windows 8 aumentará com o tempo, em vez de diminuir, e muito mais pessoas terão a experiência de usar suas impressoras instantaneamente com o Windows 8, sem a necessidade de localizar um driver.

Mas e todos os dispositivos que têm linguagens de renderização proprietárias? O driver de classe de impressão também dá suporte a esse modelo, mas com a desvantagem de precisarmos de um filtro de renderização separado para cada pequeno conjunto de modelos que têm uma única linguagem. Não temos como fazer de outra forma e, no Windows 8, incluímos inúmeros filtros para um conjunto de modelos populares. No entanto, novamente, temos trabalhado com os fabricantes de impressoras para aperfeiçoar isso e esperamos que eles criem impressoras que possam utilizar mais facilmente o driver de classe no futuro.

Imprimindo com o Windows RT

A redução dos recursos usados pelo driver de classe de impressão contribui diretamente para um espaço menor do Windows, o que é especialmente valioso no Windows RT. Além disso, a arquitetura de driver de impressora V3 era altamente extensível e evoluiu durante muitos anos para um modelo que estimulou o desenvolvimento de drivers de impressora grandes e complexos. Alguns drivers instalam serviços que são executados o tempo todo, o que esgota a bateria e usa o tempo do processador. Já vi alguns drivers que dão suporte somente a um dispositivo, mas que são maiores do que todo o conjunto de drivers de impressora no Windows 8!

A necessidade de dar suporte à impressão no Windows RT e um desejo geral de tornar a impressão mais eficiente nos levou a desenvolver uma arquitetura que controla mais rigidamente o que o driver pode fazer. Já mencionei que a parte da interface do usuário da experiência de impressão agora é um componente totalmente separado, um aplicativo, e não faz mais parte do driver. Isso significa que também é opcional, e os drivers funcionarão bem com a interface do usuário padrão de impressão da Microsoft. Nós também simplificamos a arquitetura de driver para um gasto de energia mais econômico, removendo as dependências de serviço e reduzindo a probabilidade de outros softwares serem incluídos com o driver.

Com o modelo de driver do Windows 8, nós também fizemos alterações significativas no modo como drivers de impressoras são instalados. No Windows 7 e versões anteriores do Windows, todos os drivers de impressora são armazenados no Repositório de drivers, o que se assemelha a um banco de dados para todos os tipos de drivers. Quando você conectava uma impressora, localizávamos o driver correto no repositório de drivers e copiávamos para um local especial onde o spooler pudesse usá-lo com a sua impressora. No Windows 8, eliminamos essa cópia extra, o que retirou um pouco da E/S do disco. O spooler de impressão agora simplesmente sabe como localizar o driver no repositório de drivers.

Para termos um exemplo real, comparamos o tempo de instalação de uma Epson Artisan no Windows 7 e no Windows 8 (usando um driver relativamente pequeno no Windows 7): no Windows 7, a instalação levou 14 segundos

Considerações finais

Como você pode ver, a arquitetura de driver de impressora no Windows 8 é um grande avanço. Ela oferece ótimo suporte para muitas impressoras que as pessoas já possuem e também para futuros dispositivos com uma estrutura de drivers de classe nativa rápidos e pequenos. O desempenho é ótimo e o espaço em disco ocupado, pequeno.

Aguardamos seus comentários!

-- Adrian Lannin