Compartilhar via


Novos atributos GPD somente no nível raiz para Windows Vista

Importante

A plataforma de impressão moderna é o meio preferencial do Windows para se comunicar com as impressoras. Recomendamos que você use o driver de classe de caixa de entrada IPP da Microsoft juntamente com PSA (Aplicativos de Suporte à Impressão) para personalizar a experiência de impressão no Windows 10 e 11 para o desenvolvimento de dispositivos de impressora.

Para obter mais informações, consulte Plataformade impressão moderna e o Guia de design do aplicativo de suporte de impressão.

A lista a seguir descreve os atributos GPD que são novos a partir do Windows Vista. Para manter a compatibilidade com versões anteriores ao Windows Vista do Windows, você deve colocar esses atributos entre esses atributos com o código a seguir.

*Ifdef: WINNT_60 ... *Endif: WINNT_60 blocks

PrintProcDuplexOptions

O atributo PrintProcDuplexOptions controla várias opções de duplexação em um processador de impressão. Este atributo pode ter um dos valores a seguir.

1: Páginas reversas para duplex reverso

2: Suprimir a geração de página em branco extra, se possível

3. As duas opções anteriores

0: nenhuma das opções acima

Se PrintProcDuplexOptions for 1, ele controlará se o processador de impressão deve reverter páginas em duplex reverso.

Suponha que você precise imprimir um documento de quatro páginas com n-up = 1 e queira usar a impressão reversa e a impressão duplex. Como você deseja impressão reversa, deseja imprimir a última página antes da primeira página. Como você deseja impressão duplex, deseja imprimir duas páginas em uma única folha de papel. O processador de impressão pode reproduzir as páginas em um dos dois formatos a seguir (em que cada par de números indica as duas páginas que seriam impressas nos dois lados de uma única folha de papel):

  • Formato 1: (4,3),(2,1)

  • Formato 2: (3,4),(1,2)

Antes do Windows Vista, um processador de impressão imprimia a ordem no formato 2 [(3,4),(1,2)]. Mas no Windows Vista e posterior, o formato padrão é o formato 1 [(4,3),(2,1)]. Essa alteração ocorreu porque muitas impressoras têm saída incorreta com o formato 2; ou seja, as páginas impressas não são ordenadas na ordem correta.

Mas, se a sua impressora funcionar corretamente com o formato 1, você não precisará alterar nada para o Windows Vista e posterior. No entanto, se a impressora funcionar incorretamente com o formato 1 e você quiser reverter para o formato 2, adicione o exemplo de código a seguir ao arquivo GPD.

*Ifdef: WINNT_60
*PrintProcDuplexOptions: 1
*Endif: WINNT_60

O formato 1 pode funcionar melhor em algumas orientações ou alguma combinação de bandejas de entrada e saída, e o formato 2 pode funcionar melhor em outras combinações. Como resultado, você pode colocar o atributo PrintProcDuplexOptions em uma construção de switch/case.

Para um driver Unidrv anterior ao Windows Vista, se você tiver um processador de impressão anterior ao Windows Vista, o formato 2 será o padrão e você não poderá alterá-lo; caso contrário, se você tiver um processador de impressão do Windows Vista, o formato 1 será o padrão e você não poderá alterá-lo.

Para o driver Unidrv do Windows Vista, se você tiver um processador de impressão anterior ao Windows Vista, o formato 2 será o padrão e o atributo GPD será ignorado; caso contrário, se você tiver um processador de impressão do Windows Vista, o formato 1 será o padrão, mas você pode alterar o formato usando o atributo PrintProcDuplexOptions.

Se PrintProcDuplexOptions for 2, ele impedirá a geração de páginas em branco em determinados cenários duplex.

Esse atributo controla se você deve enviar páginas em branco extras para a impressora quando estiver executando a impressão duplex. Por exemplo, se o trabalho for um trabalho de uma página e o duplex estiver ativado (suponha que n-up = 1), apenas um lado da planilha precisará ser impresso. Atualmente, as impressoras imprimem um lado e, em seguida, geram uma página em branco vazia no verso. (Como o trabalho de impressão foi iniciado com duplex=on, a impressora espera duas páginas antes de ejetar a folha. Se a segunda página não for impressa, algumas impressoras continuarão esperando.) As desvantagens da solução atual são:

  • A página gerada causa contagem de páginas imprecisa no software de contabilidade e no contador de páginas nas impressoras.

  • Quando a página sai da impressora na metade (em algumas impressoras no estilo Hewlett Packard DeskJet), o usuário pode tentar puxá-la para fora enquanto a impressora tenta puxá-la de volta. Essa situação pode causar problemas de hardware.

Você pode evitar os problemas anteriores especificando *PrintProcDuplexOptions: 2 no arquivo GPD.

Observe que, mesmo que esse atributo seja definido, a otimização de página em branco é executada somente nos seguintes casos limitados:

  1. Para impressão reversa, a otimização de página em branco é executada somente quando todo o trabalho pode caber em um único lado do papel (por exemplo, um trabalho de uma página com n-up=1 ou um trabalho de quatro páginas com n-up =4). Se o trabalho precisar de mais de uma folha, a otimização não será executada (porque as páginas da impressora serão impressas em uma ordem imprecisa). Por exemplo, para um trabalho de três páginas, as páginas podem ser impressas na ordem 3,2,1,<em branco> em vez de 4,3,2,<em branco>.

  2. A otimização de página em branco não será executada se o processador de impressão tiver que simular cópias. O processador de impressão simula cópias se o número de cópias necessárias for maior do que o número de cópias que o processador de impressão pode fazer.

    A situação a seguir é um exemplo de quando as simulações ocorrem e as páginas em branco são geradas (se necessário):

    • Duas cópias para uma impressora que não pode fazer cópias

    As situações a seguir são exemplos de quando a simulação não ocorre e você pode suprimir a geração de página extra:

    • Trabalho de cópia única para uma impressora que não pode fazer cópias
    • Trabalho de cinco cópias para uma impressora que pode fazer mais do que uma cópia

Uso de PrintProcDuplexOptions

*Ifdef: WINNT_60
*PrintProcDuplexOptions: 2
*Endif: WINNT_60 

Em alguns casos, você pode não se importar com a impressão de páginas extras, enquanto em outros casos você se importa. Portanto, você pode colocar o atributo PrintProcDuplexOptions em uma construção de switch/case.

Para o driver Unidrv anterior ao Windows Vista, se você tiver um processador de impressão anterior ao Windows Vista, uma impressora imprimirá uma página em branco extra, se necessário, e você não poderá alterar o comportamento; caso contrário, se você tiver um processador de impressão do Windows Vista, uma impressora imprimirá uma página em branco extra, se necessário, e você não poderá alterar o comportamento.

Para o driver Unidrv do Windows Vista, se você tiver um processador de impressão anterior ao Windows Vista, uma impressora imprimirá uma página em branco extra, se necessário, e o atributo GPD será ignorado; caso contrário, se você tiver um processador de impressão do Windows Vista e se um atributo GPD apropriado e as condições adequadas estiverem presentes (ou seja, as condições descritas anteriormente sobre como impedir a impressão de páginas em branco), uma impressora não imprimirá páginas em branco.

PreAnalysisOptions

O atributo PreAnalysisOptions pode conter um dos seguintes valores:

0: Desativar todos os modos de pré-análise.

1: Modo padrão. Habilite a análise de texto monocromática de ordem z e a otimização de banda em branco. Este modo é ativado para dispositivos com suporte a fonte para download ou fonte de dispositivo e alta resolução (600 dpi ou superior), modos de renderização de 24 bpp.

2: Habilitar a otimização de 1 bpp para funções de retorno de chamada ImageProcessing de 24 bpp.

4: Ativar o suporte ao StretchBlt do dispositivo.

8: Ativar o modo de pré-análise do fornecedor.

16: Habilitar o modo de depuração para 1 bpp em que a banda é convertida em 24 bpp antes de chamar a função de retorno de chamada ImageProcessing.

UseBMPFontCompression?

O atributo UseBMPFontCompression? controla se o Unidrv deve compactar dados quando as fontes são baixadas como um bitmap. O valor padrão de UseBMPFontCompression? é FALSE, o que significa que o Unidrv não fará compactação se esse atributo não estiver presente no arquivo GPD. Esse valor padrão mantém a compatibilidade com versões mais antigas do Unidrv que não tinham o recurso de compactação de fonte de bitmap. Você deve definir esse atributo como TRUE somente se sua impressora oferecer suporte à compactação de fonte bitmapOs dados de caracteres de bitmap compactados estão no formato compactado de comprimento de execução com repetição de linha.

UseMode5Compression?

O atributo UseMode5Compression? controla se o UniDrv deve usar a compactação do Modo 5. A compactação do Modo 5 (ou Método 5) é a compactação adaptável que permite o uso combinado de vários outros métodos de compactação (como Unencoded, TIFF ou Delta-Row). O valor padrão de UseMode5Compression? é FALSE, o que significa que o Unidrv não executará a compactação adaptável se esse atributo não estiver presente no GPD. Esse valor padrão mantém a compatibilidade com versões mais antigas do Unidrv que não tinham o recurso de compactação adaptável. Você deve definir esse atributo como TRUE somente se sua impressora oferecer suporte à compactação adaptável.

UseHPGLPolylineEncoding?

O atributo UseHPGLPolylineEncoding? controla se o Unidrv deve usar a codificação de polilinha. O HP-GL/2 suporta os comandos Caneta para cima/Caneta para baixo/Desenhar absoluto/Desenhar relativo para desenhar vetores. O comando polilinha codificada (PE) é uma maneira mais eficiente de representar vetores.

O valor padrão para UseHPGLPolylineEncoding? é FALSE, o que significa que o Unidrv não usará o comando PE se esse atributo não estiver presente no GPD. Esse valor padrão mantém a compatibilidade com versões mais antigas do Unidrv que não tinham suporte para o comando PE. Você deve definir esse valor como TRUE somente se sua impressora suportar polilinha codificada.

PrintSchemaPrivateNamespaceURI

O atributo PrintSchemaPrivateNamespaceURI define o URI de namespace privado que o driver principal deve usar para expor recursos ou opções PPD privadas em PrintTicket ou PrintCapabilities. O atributo deve aparecer na raiz do documento GPD e contém uma representação ASCII de um URI que será usado para definir um namespace em documentos PrintTickets e PrintCapabilities. Esse URI, por sua vez, será associado a todos os recursos e opções que não têm um mapeamento explícito no esquema público ou que o driver principal não reconhece.

PrintSchemaKeywordMap

O atributo PrintSchemaKeywordMap aparece em constructos de recursos e opções no arquivo GPD. Esse atributo indica qual nome de esquema de impressão pública você deve usar com os recursos definidos pela impressora. Você pode renomear qualquer opção especificada em um arquivo GPD, exceto Duplex e Collate, no PrintTicket usando o atributo PrintSchemaKeywordMap.

O analisador GPD ignora esse atributo para recursos que são explicitamente reconhecidos, incluindo tamanho e cor da página.

Todos os valores devem estar entre aspas. Eles serão convertidos em Unicode usando a página de código especificada no GPD, se houver. As definições duplicadas de quaisquer atributos são resolvidas da mesma forma que outros atributos GPD: a última definição lida tem precedência.

Se você mapear um recurso para uma palavra-chave Esquema de Impressão que já está sendo usada no arquivo GPD, o documento PrintCapabilities correspondente poderá listar esse recurso mais de uma vez. Várias ocorrências podem ser confusas, portanto, você não deve mapear recursos para palavras-chave do Esquema de Impressão que são usadas no arquivo GPD.

O analisador GPD gera automaticamente a opção FORMSOURCE para o recurso InputBin e a mapeia para a palavra-chave AutoSelect no Esquema de Impressão. Se o arquivo GPD contiver uma opção InputBin que usa o atributo PrintSchemaKeywordMap para mapear a opção para uma palavra-chave do Esquema de Impressão, o recurso no Esquema de Impressão conterá uma opção FORMSOURCE no namespace do dispositivo. A Seleção Automática aparecerá no documento PrintCapabilities e se referirá à opção especificada no atributo PrintSchemaKeywordMap do arquivo GPD.

O exemplo de código a seguir mostra um arquivo GPD parcial para mostrar o layout.

*Feature: HPSTAPLER
{
    *Name: "Staple"
    *DefaultOption: Off
    * PrintSchemaKeywordMap: "Staple"

    *Option: Off
    {
        *Name: "Off"
        * PrintSchemaKeywordMap: "Off"
    }
 
    *Option: On
    {
        *Name: "On"
        * PrintSchemaKeywordMap: "On"
    }
}

IsXPSDriver

O atributo IsXPSDriver usa a sintaxe GPD a seguir.

*IsXPSDriver?: TRUE | FALSE

Você pode usar o módulo de configuração do Windows Vista Unidrv (Unidrvui.dll) para drivers GDI do Microsoft Win32 e os novos drivers XPSDrv. Para usar o módulo de configuração Unidrv para drivers XPSDrv, o arquivo de dados GPD do driver XPSDrv deve especificar o atributo IsXPSDriver e definir seu valor como TRUE.

Por exemplo, se você tiver um driver XPS, use o código a seguir.

*IsXPSDriver?: TRUE

Para usar o módulo de configuração Unidrv para drivers GDI Win32, você não precisa especificar esse atributo.

UseImageForHatchBrush?

O atributo UseImageForHatchBrush? usa a sintaxe GPD a seguir.

*Ifdef: WINNT_60
*UseImageForHatchBrush?: TRUE
*Endif: WINNT_60 

No Microsoft Windows Server 2003 ou Windows XP, quando o Unidrv imprime no modo HP-GL/2, se um pincel de hachura for recebido na função DrvRealizeBrush, o Unidrv enviará um comando para que a impressora selecione o pincel de hachura apropriado. O Unidrv não controla como o pincel de hachura é renderizado. Por exemplo, o espaçamento entre as linhas geralmente é controlado pela resolução. Em resolução mais alta, o espaçamento fica pequeno, enquanto em resolução mais baixa, o espaçamento seria maior. Portanto, um documento pode ser impresso de forma diferente se uma resolução diferente for usada.

No Windows Vista, se o GPD especificar o atributo UseImageForHatchBrush?, o Unidrv renderizará o pincel de hachura em uma superfície de bitmap e enviará esse bitmap para o dispositivo. O Unidrv, portanto, tem algum controle sobre como o pincel de hachura é renderizado.

ReverseBandOrder?

O atributo ReverseBandOrder? usa a sintaxe GPD a seguir.

*Ifdef: WINNT_60
*ReverseBandOrder?: TRUE
*Endif: WINNT_60 

O valor de ReverseBandOrder? é TRUE ou FALSE para indicar se a banda reversa está habilitada. Esse atributo faz com que a banda ocorra na ordem inversa. Por exemplo, para uma página de retrato, as faixas ocorrem de baixo para cima, em vez de de cima para baixo.

Esse atributo é essencialmente o mesmo que ReverseBandOrderForEvenPages?, exceto que ReverseBandOrder? é considerado mesmo se não estiver ativo (ReverseBandOrderForEvenPages? funciona apenas se duplex estiver ON) e funciona para todas as páginas (ReverseBandOrderForEvenPages? funciona apenas em páginas pares). Para obter detalhes sobre como usar ReverseBandOrder? e outras informações relacionadas, consulte *ReverseBandOrderForEvenPages?. Observe especialmente que os plug-ins devem inverter as linhas de varredura e os bits na linha de varredura.

Você pode usar uma combinação de *ReverseBandOrderForEvenPages? e *ReverseBandOrder?.

Quando apenas ReverseBandOrder? for definido como TRUE, a faixa será revertida para todas as páginas.

Quando apenas ReverseBandOrderForEvenPages? estiver definido como TRUE, a faixa será invertida para páginas pares somente se a impressora estiver imprimindo duplex. Se duplex não estiver definido, a configuração ReverseBandOrderForEvenPages? será ignorada.

Quando ReverseBandOrder? e ReverseBandOrderForEvenPages? são definidos, ocorre o seguinte:

  • Se duplex estiver LIGADO, a faixa reversa será executada para páginas ímpares (ou seja, 1, 3, 5, 7 e assim por diante).

  • Se duplex estiver OFF, a faixa reversa será executada para todas as páginas.

BidiQueryFile

O atributo BidiQueryFile usa a sintaxe GPD a seguir.

*BidiQueryFile: <GPD or GDL file name>

Use BidiQueryFile para especificar o nome do arquivo GPD ou GDL que contém os dados BidiQuery ou BidiResponse de configuração automática do driver de impressora. O nome do arquivo GPD ou GDL não deve especificar nenhum caminho. Se os dados de configuração automática estiverem contidos no arquivo GPD DataFile do driver, você também poderá especificar esse arquivo GPD como o valor do atributo BidiQueryFile.

O exemplo de código a seguir mostra um exemplo desse atributo em um arquivo GPD parcial.

*Ifdef: WINNT_60
*BidiQueryFile: "ACnfgUni.GDL"
*Endif: WINNT_60