Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
Nowoczesna platforma drukowania jest preferowanym sposobem komunikacji z drukarkami w systemie Windows. Zalecamy używanie sterownika klasy skrzynki odbiorczej IPP firmy Microsoft wraz z aplikacjami do obsługi drukowania (PSA), aby dostosować środowisko drukowania w systemie Windows 10 i 11 na potrzeby opracowywania urządzeń drukarki.
Aby uzyskać więcej informacji, zobacz Print Support App v1 and v2 design guide (Przewodnik projektowania aplikacji do obsługi wydruku w wersji 1 i 2).
Język GPD udostępnia instrukcje warunkowe podobne do języka C, które umożliwiają opisywanie zależności, które niektóre atrybuty drukarki mogą mieć w konfiguracji drukarki. Na przykład marginesy i źródło kursora dla strony mogą zależeć od orientacji strony. Instrukcje *Switch i *Case umożliwiają wyrażanie takich zależności. Format tych oświadczeń jest następujący:
*Switch FeatureName { *Case Option1_Name { } *Case Option2_Name { } itd. *Case OptionN_Name { } *Default { } }
FeatureName musi być nazwą funkcji określonej w pliku GPD z wpisem *Funkcja . Używane nazwy opcji muszą być opcjami skojarzonymi z określoną funkcją.
Aby wyrazić przypadek, w którym marginesy strony i źródło kursora zależą od orientacji strony, można użyć następujących wpisów:
*Feature: Orientation
{
*DefaultOption: Portrait
*Option: Portrait
{
*Name: "Portrait"
*rcIconID: =RC_ICON_PORTRAIT
}
*Option: LANDSCAPE_CC90
{
*Name: "Landscape"
*rcIconID: =RC_ICON_LANDSCAPE
}
}
*Feature: PaperSize
{
*DefaultOption: Letter
*Option: Letter
{
*Name: "Letter 8.5 x 11 inch"
*switch: Orientation
{
*case: Portrait
{
*PrintableArea: PAIR(4800, 6324)
*PrintableOrigin: PAIR(150, 150)
*CursorOrigin: PAIR(150,100)
}
*case: LANDSCAPE_CC90
{
*PrintableArea: PAIR(4860, 6360)
*PrintableOrigin: PAIR(120, 120)
*CursorOrigin: PAIR(100,6480)
}
}
}
}
W tym przykładzie opcje funkcji PaperSize drukarki są zależne od wybranej opcji dla funkcji Orientacja drukarki.
Jeśli nie wymienisz wszystkich opcji funkcji jako *argumenty instrukcji Case, można użyć instrukcji *Default, podobnie jak w języku C. Jeśli nie dołączysz wszystkich opcji i nie dołączysz *instrukcji domyślnej , musisz ocenić odpowiednie atrybuty (w przykładzie *PrintableArea, *PrintableOrigin i *CursorOrigin) w innym miejscu w pliku GPD, poprzedzając instrukcję *Switch .
Określanie wielu zależności
Instrukcje *Switch można umieszczać wewnątrz instrukcji *Case i *Default. Dzięki temu można określić wiele zależności w następujący sposób:
*Feature: feature1 {*Option: optionA {...} *Option: optionB {...}}
*Feature: feature2 {*Option: optionC {...} *Option: optionD {...}}
*Feature: feature3
{*Option: optionE
{*Switch: feature1
{*Case: optionA
{*Switch: feature2
{*Case: optionD
{AttributeX: ValueX}
*Default
{AttributeX: ValueY}
}
}
*Default
{AttributeX: ValueZ}
}
}
*Option: optionF {...}
}
W tym przykładzie atrybut AttributeX należący do opcjiE funkcji3 jest zależny od funkcji feature1 i feature2.
Jeśli użytkownik wybrał opcjęA dla funkcji feature1, opcjaD dla funkcji2 i opcjaE dla feature3, atrybutX jest ustawiony na ValueX.
Jeśli użytkownik wybrał opcjęA dla funkcji Feature1, optionC dla feature2 i optionE dla feature3, atrybutX jest ustawiony na ValueY.
Jeśli użytkownik wybrał opcjęB dla funkcji feature1 i opcjiE dla funkcji3, atrybutX jest ustawiony na WartośćZ. Ustawienie funkcji Feature2 jest nieistotne.
Podczas określania wielu zależności mają zastosowanie następujące reguły:
Wiele zależności musi być określonych w zakresie pojedynczego wpisu *Przełącznik . Na przykład, nie można użyć wpisu *Switch, aby wskazać, że funkcja3 jest zależna od funkcji1, a następnie w kolejnej, niezagnieżdżonej instrukcji *Switch, aby wskazać, że funkcja3 jest zależna od funkcji2.
Nie można określić tej samej funkcji więcej niż raz w każdym zagnieżdżonym wpisie *Przełącz .
Gdzie umieścić instrukcję switch
Instrukcję *Switch można umieścić w następujących lokalizacjach w pliku GPD:
Wewnątrz instrukcji *Option
Wewnątrz instrukcji funkcji *Feature
Wewnątrz instrukcji *Case
Wewnątrz *instrukcji 'default'
Na najwyższym poziomie pliku (czyli nie wewnątrz nawiasów klamrowych)
Co umieścić wewnątrz *switch, *case i *default statements
W instrukcji *Switch można umieścić tylko wpisy *Case i *Default.
Wpisy pliku GPD, które można umieszczać wewnątrz wpisów *Przypadek lub *Domyślne, są określane jako wpisy przenośne. Następujące typy wpisów GPD są do przeniesienia:
Większość atrybutów drukarki, z wyjątkiem atrybutów tylko na poziomie głównym. (Atrybuty ogólne muszą być poprzedzone EXTERN_GLOBAL, chyba że wpis *Przełącznik znajduje się na poziomie głównym — nie w nawiasach klamrowych).
Zagnieżdżone wpisy *Przełącznik, które umożliwiają określenie wielu zależności.
*Wpisy poleceń.
*TTFSEnabled?, umożliwiający podstawianie czcionek.
Następujące typy wpisów GPD nie można przenieść:
Atrybuty tylko na poziomie root.
*Wpisy TTFS służące do określania czcionki zastępczej.
*Ograniczenia, *InvalidCombination, *InvalidInstallableCombination, *NotInstalledConstraints to wpisy definiujące nieprawidłowe kombinacje opcji, zgodnie z opisem w Ograniczenia opcjonalne.
*Feature i *Option (chociaż atrybuty funkcji i atrybuty opcji są przenośne).
Jedną z metod określania, czy wpisy zostały poprawnie umieszczone wewnątrz *instrukcji Case , jest usunięcie wszystkich instrukcji *Switch i *Case . Jeśli wpisy wewnątrz instrukcji *Case są poprawne, są one nadal poprawne po usunięciu instrukcji *Switch i *Case .
Kolejność instrukcji switch w sterowniku druku w wersji 4 pochodzącym od sterownika klasowego
Plik GPD sterownika drukarki v4 musi zachować tę samą kolejność co sterownik klasy bazowej.
Rozważmy następujący scenariusz. Masz sterownik drukarki v4, który wywodzi się z sterownika klasy v4, ustawiając parametr RequiredClass na sterownik klasy v4 w pliku * '-manifest.ini'.
Plik GPD sterownika klasy ma następującą strukturę przełączników:
* Option: A4
1. Switch: Resolution
* Option: Letter
1. Switch: Resolution
2. Switch: InputBin
Pochodny sterownik drukarki w wersji 4 chce dodać przełącznik MarginSetting , więc jego plik GPD będzie miał następujące drzewo przełączników:
* Option: A4
1. Switch: Resolution
2. Switch: InputBin
3. Switch: MarginSetting
* Option: Letter
1. Switch: Resolution
2. Switch: InputBin
3. Switch: MarginSetting
Należy pamiętać, że Resolution jest ustawiona przed InputBin w pochodnym GPD i MarginSetting jest ustawiana po obu. Plik GPD sterownika drukarki v4 jest zachowany w tej samej kolejności co w sterowniku klasy bazowej, a następnie dodaje MarginSetting.
Na przykład niepoprawnie wyprowadzony plik GPD może wyglądać następująco:
* Option: A4
1. Switch: MarginSetting
2. Switch: InputBin
3. Switch: Resolution
* Option: Letter
1. Switch: MarginSetting
2. Switch: InputBin
3. Switch: Resolution