# Universal Printing Framework

\
DIPS AS :revnumber: Version 23.2.0 :revdate:2023-10-10 :revremark:

### Hva er UPF

Universal Printing Framework (UPF) er en komponent i utskriftssystemet i Arena. Som bruker vil du normalt ikke se noe til UPF, men ved behov for modifisering av enkelte maler er det behov for å kjenne til innholdet og mulighetene for dette. Som forvalter av systemet er det mulig for deg å gjøre endringer i disse malene. Dokumentasjonen vil dermed kun inneholde informasjon om oppsett av UPFs maler. UPF benyttes i Arena til utskrift av navnelapper, pasientarmbånd, prøvetakningslister og prøvetakningsetiketter. DIPS leverer standardutgaver av disse malene som systemmaler inkludert i systemet.

### Hurtiginnføring for UPF

| Oppgave                                              | Hvordan?                                                                                                                                                                                                                                                                                     |
| ---------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Kopiere maler til underliggende organisatoriske nivå | Arena leveres med et sett standardmaler for bruksområdene. Disse er ikke knyttet til sykehus og avdeling. Du kan ved behov lage tilpassede maler for sykehus og avdeling.                                                                                                                    |
| Skrive/redigere maler til UPF                        | Du kan ikke opprette nye maler som sådan, men du kan erstatte eksisterende SVG maler med nytt innhold. Malene skrives og vedlikeholdes i en egnet teksteditor for SVG (eks. Notepad++, Visual Studio Code etc). Når du er ferdig kopieres innholdet over til aktuell systemmal i DIPS Admin. |

**Hurtiginnføring**

#### Begreper

### Bruke UPF

#### Systemmaler

UPF i Arena leveres med følgende systemmaler:

| Malnavn                            | Bruksområde                                                                                                                                                                                                                                                                                           |
| ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| svg-PatientIdBand-Adult            | Mal for pasientarmbånd til voksne                                                                                                                                                                                                                                                                     |
| svg-PatientIdBand-AdultAnonymized  | Mal for pasientarmbånd til voksne. Malen er anonymisert slik at det kun er strekkodelesere som kan lese av fødselsnummer fra armbåndet. Navn og fødselsnummer skrives ikke ut i lesbar tekst på armbåndet.                                                                                            |
| svg-PatientIdBand-Child            | Mal for pasientarmbånd til barn                                                                                                                                                                                                                                                                       |
| svg-PatientIdBand-ChildAnonymized  | Mal for pasientarmbånd til barn. Malen er anonymisert slik at det kun er strekkodelesere som kan lese av fødselsnummer fra armbåndet. Navn og fødselsnummer skrives ikke ut i lesbar tekst på armbåndet.                                                                                              |
| svg-PatientIdBand-Infant           | Mal for pasientarmbånd til spedbarn                                                                                                                                                                                                                                                                   |
| svg-PatientIdBand-InfantAnonymized | Mal for pasientarmbånd til spedbarn. Malen er anonymisert slik at det kun er strekkodelesere som kan lese av fødselsnummer fra armbåndet. Navn og fødselsnummer skrives ikke ut i lesbar tekst på armbåndet.                                                                                          |
| svg-Poletikett                     | Mal for etikettark på A4 skriver. Malen skal gi tilsvarende resultat som dagens "POLETIKETT" mal som brukes fra DIPS Classic.                                                                                                                                                                         |
| svg-PoletikettAnonymized           | Mal for etikettark på A4 skriver. Malen skal gi tilsvarende resultat som dagens "POLETIKETT" mal som brukes fra DIPS Classic. Malen er anonymisert slik at det kun er strekkodelesere som kan lese av fødselsnummer fra etikettene. Navn og fødselsnummer skrives ikke ut i lesbar tekst.             |
| svg-Registration                   | Mal for etikettark på A4 skriver. Malen skal gi tilsvarende resultat som dagens "Etiketter innskrivning" mal som brukes fra DIPS Classic.                                                                                                                                                             |
| svg-RegistrationAnonymized         | Mal for etikettark på A4 skriver. Malen skal gi tilsvarende resultat som dagens "Etiketter innskrivning" mal som brukes fra DIPS Classic. Malen er anonymisert slik at det kun er strekkodelesere som kan lese av fødselsnummer fra etikettene. Navn og fødselsnummer skrives ikke ut i lesbar tekst. |
| svg-PatientNameLabel               | Mal for navnelapper skrevet ut på etikettskrivere.                                                                                                                                                                                                                                                    |
| svg-PatientNameLabelAnonymized     | Mal for navnelapper skrevet ut på etikettskrivere. Malen er anonymisert slik at det kun er strekkodelesere som kan lese av fødselsnummer fra etikettene. Navn og fødselsnummer skrives ikke ut i lesbar tekst.                                                                                        |

**Leverte systemmaler**

Disse malene er ikke knyttet til sykehus eller avdeling, men du kan opprette kopier av malene knyttet til sykehus og avdeling for å tilpasse innholdet i utskriften etter lokale behov.

{% hint style="info" %}
Det anbefales å ha alle malene i systemet uten tilknytning til sykehus og avdeling i tillegg til eventuelle kopier av malene knyttet til aktuelt sykehus eller avdeling.
{% endhint %}

\### Kopiere og endre maler til underliggende organisatorisk nivå

For bruk av DIPS Admin og opprettelse av nye systemmaler henvises det til "DIPS Admin brukerdokumentasjon" - "Maler". Kapittelet "Bruke og lage nye maler" beskriver generelt hvordan du oppretter maler med feltbeskrivelse. Kapittelet "Rediger systemmal" beskriver hvordan du kan redigere en systemmal inne i DIPS Admin. Som andre systemmaler kan også SVG maler for bruk med UPF skreddersys for sykehus og avdeling. Eventuell redigering av SVG maler anbefales utført i egnet teksteditor slik at det blir lettere å verifisere at du har en korrekt SVG. Eksempler på slike editorer kan være Notepad++ og MS Visual Studio Code. Dette kan gjøres på følgende måte.

1. Opprett ny mal, med samme navn (eks. "svg-PatientIdBand-Adult"), og knytt denne til ønsket sykehus, eller ønsket sykehus og avdeling.
2. Åpne eksisterende mal for redigering.
3. Trykk på "Lagre til fil" under menyvalget "MAL". Lagre filen et sted der du finner den igjen.
4. Åpne filen i word eller tilsvarende editor som kan åpne RTF dokumenter.
5. Kopier innholdet over i en teksteditor som egner seg for redigering av SVG.
6. Rediger innholdet i henhold til beskrivelse av mulighetene i DIPS SVG maler.
7. Kopier innholdet i den ferdige malen (kopier teksten) og lim inn i den nye systemmalen du har åpen i DIPS Admin.
8. Lagre malen ved å trykke på diskett ikonet eller hurtigtast kbd:\[Ctrl+S].

Filene du nå har lagret lokalt på din PC kan slettes når malen er lagret i DIPS Admin.

#### Redigere DIPS SVG maler

Kapittelet viser generelle muligheter og regler for redigering av systemmaler i SVG format for bruk med UPF.

{% hint style="info" %}
Skriverspråk settes i "Skriveroppsett" i Arena-klienten. Skriverens dokumentasjon bør inneholde informasjon om hvilke skriverspråk skriveren støtter. For A4 skrivere trenger du ikke angi noe språk. Uten angivelse av skriverspråk vil systemet automatisk sette skriverspråk til PostScript.
{% endhint %}

\| Skriverspråk | Språk ID | Brukes av | Bemerkning | |----|----|----|----| | PostScript | *ingen* | Vanlige A4 skrivere og PDF-skrivere | Tar ikke hensyn til marginer ved utskrift. Default skriverspråk. | | ZPL2 | ZPL2: Zebra Programming Language | Nyere Zebra etikettskrivere, kan også emuleres av andre skrivere | Diagonale linjer støttes ikke. | | EPL2 | EPL2: Eltron Programming Language | Eldre Zebra etikettskrivere, kan også emuleres av andre skrivere | Diagonale linjer støttes ikke. Støtte for Datamatrix strekkoder avhenger av skriverrmodell og firmwareversjon. | | IDP | IDP: Intermec Direct Protocol | Intermec etikettskrivere. Enkelte eldre intermec skrivere støtter ikke IDP, men emulerer da gjerne EPL2 | Diagonale linjer støttes ikke |

**Støttede skriverspråk SVG malene kan skrives til**

**Eksempelmal**

Her er et eksempel på mal for en typisk navnelapp på etikettskriver:

Eksempelmal

```highlight
<?xml version="1.0" encoding="UTF-8"?>
<svg height="32mm" width="53mm" xmlns="http://www.w3.org/2000/svg" xmlns:DIPSExtensions="http://www.dips.no/team/zen/print" dominant-baseline="hanging"> (1)
  <DIPSExtensions:PrinterSettings> (2)
    <PrinterModel Name="PostScript">
      <PostscriptSettings Font="Helvetica" />
    </PrinterModel>
    <PrinterModel Name="epl2">
      <Epl2Settings DotsPerMillimeter="8.0" XOffsetInMillimeter="0.0" YOffsetInMillimeter="0.0" Speed="3" Density="12">
        <EplLabelLength LabelLength="256" SeparatorType="Gap" />
      </Epl2Settings>
    </PrinterModel>
    <PrinterModel Name="zpl2">
      <Zpl2Settings DotsPerMillimeter="8.0">
        <ZplMediaTracking MediaType="Y" />
        <ZplLabelLength LabelLength="256" />
      </Zpl2Settings>
    </PrinterModel>
    <PrinterModel Name="idp">
      <IdpSettings DotsPerMillimeter="8.0" Font="Swiss 721 BT" DataMatrixMagnify="4" />
      <IdpSetup>
        <StartAdjust Value="-10" />
        <StopAdjust Value="-20" />
        <XStart Value="20" />
        <Width Value="424" />
        <Length Value="256" />
        <LabelType Value="LabelWithGaps" />
        <PaperType Value="Transfer" />
        <PrintSpeed Value="100" />
      </IdpSetup>
    </PrinterModel>
  </DIPSExtensions:PrinterSettings>
  <svg x="1mm" y="0.5mm" height="31.5mm" width="52mm"> (3)
    <DIPSExtensions:variable name="adrHeight" value="8" />
    <DIPSExtensions:variable name="barCodeHeight" value="7" />
    <text x="0mm" y="1mm" font-size="12">[Pas.fODSELSNR]</text>
    <text x="0mm" y="5mm" font-size="12">[Pas.eTTERNAVNFORNAVN]</text>
    <text x="0mm" y="8mm" font-size="8" width="50mm" height="$$adrHeight$$">[Pas.Adresse]</text>
    <text x="0mm" y="16mm" font-size="8">[Pas.Postnr] [Pas.Poststed]</text>
    <DIPSExtensions:barcode x="2mm" y="21mm" height="$$barCodeHeight$$" type="code128">[Pas.fODSELSNR]</DIPSExtensions:barcode>
  </svg>
</svg>
```

|       |                                                  |
| ----- | ------------------------------------------------ |
| **1** | Her starter selve SVG malen.                     |
| **2** | Innstillinger for de ulike skriverspråkene.      |
| **3** | Først her begynner selve innholdet på etiketten. |

Som eksempelet viser, kan vanlige malvariabler benyttes i SVG malene.

**Oppbygning av SVG maler**

Malene bygger på et basis SVG element som definerer dokumentets dimensjoner og "namespace" for malen.

Tom SVG mal

```highlight
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:DIPSExtensions="http://www.dips.no/team/zen/print" dominant-baseline="hanging" height="35mm" width="57mm">
</svg>
```

Malens oppbygning består videre av basiselementets underelementer ("children").

Eksempel på underliggende elementer

```highlight
<svg ...>
    <text x="10mm" y="10mm" font-size="11pt">Requisition</text>
    <DIPSExtensions:barcode x="10mm" y="18mm" height="5mm" type="code39">32442</DIPSExtensions:barcode>
    <rect x="2mm" y="2mm" width="20mm" height="20mm"/>
</svg>
```

**Gruppering**

Du kan gruppere elementer ved "nesting" av SVG elementer. Altså at du inkluderer et eget SVG element under et eksisterende element.

Eksempel på bruk av underliggende SVG elementer

```highlight
  <svg ...>
    <svg x="20mm" y="10mm" height="30mm" width="30mm" width="70mm" dominant-baseline="hanging">
        <text x="0mm" y="0mm" font-size="11pt">First text</text> (1)
        <text x="10mm" y="5mm" font-size="11pt">Second text</text> (2)
    </svg>
  </svg>
```

|       |                                                                                            |
| ----- | ------------------------------------------------------------------------------------------ |
| **1** | Tekstelementet får x posisjon 20 og y posisjon 10 relativt til det ytterste SVG elementet. |
| **2** | Tekstelementet får x posisjon 30 og y posisjon 15 relativt til det ytterste SVG elementet. |

Høyde og bredde arves også nedover i SVG strukturen. På den måten vil underliggende elementer ("children") med "width" og "height" attributter holde seg innenfor grensene av det nærmeste SVG elementet.

**Koordinater**

Elementer posisjoneres ved hjelp av et "øverst til venstre" system. Her blir x og y koordinatene beregnet som den horisontale og vertikale avstanden mellom dokumentets og elementets øverste venstre hjørne.

Koordinater kan også spesifisers ved å angi et matematisk uttrykk inne i krøllparanteser. UPF støtter de fleste [NCalc Edge](https://github.com/pitermarx/NCalc-Edge/wiki/Functions) funksjoner.

Eksempl på bruk av matematiske uttrykk i malen

```highlight
<text x="{20*1}mm" y="{Floor((3/2) * 3)}mm" font-size="12pt">Preview only</text>
```

**Tekstelementer**

For å legge inn et tekstelement i malen, legger du til et "\<text>" element underliggende (som "child") SVG elementet.

Eksempel på tekstelement i malen

```highlight
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:DIPSExtensions="http://www.dips.no/team/zen/print" dominant-baseline="hanging" height="35mm" width="57mm" DIPSExtensions:gapLength="2mm">
  <text x="2mm" y="2mm" font-size="12pt">Hello World!</text>
</svg>
```

I tillegg til posisjonering må tekstelementer angis med skriftstørrelse i attributtet "font-size". Skriftstørrelse angis i punkter (eks. *10pt*).

{% hint style="info" %}
Enkelte etikettskrivere kan kanskje ikke gjengi tekst i den ønskede skriftstørrelsen. I slike tilfeller blir skriftstørrelsen rundet ned til det nærmeste tilgjengelige tallet printeren kan bruke.
{% endhint %}

Som standard vil tekstelementer bli skrevet på en linje, og flyter ut over kanten dersom innholdet er for langt. Om du vil unngå dette kan du sette en maksimal bredde for tekstelementet med attributtet "width".

Eksempel på bruk av width i et tekstelement

```highlight
<text x="2mm" y="2mm" font-size="12pt" width="10mm">Hello World!</text>
```

Tekst med satt maksimal bredde kuttes etter grensene

For å få tekst til å automatisk skrives på flere linjer, kan du også angi en maksimal høyde (attributtet "height") for elementet.

Eksempel på bruk av høyde i et tekstelement

```highlight
<text x="2mm" y="2mm" font-size="12pt" width="30mm" height="50mm">Lorem ipsum...</text>
```

Resultatet av en lang tekst med satt maksimal høyde og bredde

**Bilder**

Fra Arena versjon 20.2 er det mulig å bruke bilder i UPF. Bilder må encodes som Base 64 og inkluderes i malen. Støttede formater er png, jpeg/jpg og bmp. Høyde og bredde kan justeres, 12 mm er default.

Eksempel på bruk av bilde

```highlight
<image x="16mm" y="70mm" width="12mm" height="12mm" href=" data:image/png;base64,…"/>
```

"…​" erstattes med base64 encoded bilde.

**Strekkoder**

Strekkoder legges inn i malen gjennom en DIPS utvidelse (elementid: *\<DIPSExtension:barcode>*) element. Strekkoder må angis med posisjonering, høyde og type.

Eksempel på angivelse av en strekkode

```highlight
<DIPSExtensions:barcode x="2mm" y="2mm" height="5mm" type="code128">Hello World!</DIPSExtensions:barcode>
```

Attributtet "type" bestemmer hvilken strekkodesymbologi strekkoden skal gjengis med.

| Symbologi          | type attributt verdi  | Bemerkning                                                                                                                  |
| ------------------ | --------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| Codabar            | *rationalizedCodabar* | Kun numerisk innhold. Start og stopp karakterer må legges til manuelt. Start og stopp karakterer er vanligvis en av "ABCD". |
| Code 39            | *code39*              | Alfanumerisk innhold. Unntak dersom utskrift vha PostScript - da støttes kun numeriske data.                                |
| Code 128           | *code128*             | Alfanumerisk innhold.                                                                                                       |
| Data Matrix        | *datamatrix*          | Alfanumerisk innhold.                                                                                                       |
| ISBT 128           | *isbt128*             | Alfanumerisk innhold.                                                                                                       |
| Interleaved 2 of 5 | *interleaved2of5*     | Kun numerisk innhold                                                                                                        |

**Støttede symobologier i UPF**

**Rektangeler**

Elementer av typen "\<rect>" setter inn fylte rektangler i dokumentet.

Eksempel på rect element

```highlight
<rect x="45mm" y="19mm" height="8mm" width="14mm"/></rect>
```

Du kan også sette attributtet "fill-opacity" til 0 for å få en "hul" Rektangel.

Eksempel på bruk av fill-opacity

```highlight
<rect x="45mm" y="19mm" height="8mm" width="14mm" fill-opacity="0" stroke="black"/></rect>
```

**linjer**

Elementer av typen "\<line>" elementer legger til linjer i dokumentet.

Eksempel på linje element

```highlight
<line x1="40mm" y1="18mm" x2="94mm" y2="18mm" stroke="black" stroke-width="1"/>
```

Linjer starter i koordinatet (x1,y1) og ender i (x2,y2). For å justere tykkelsen på linjen settes attributtet "stroke-width" tilsvarende.

**Brukerdefinerte variabler**

Ved bruk av elementet \<DIPSExtensions:variable> kan du angi egendefinerte variabler som senere kan brukes i malen.

Eksempel på definisjon av brukerdefinert variabel

```highlight
<DIPSExtensions:variable name="Variable" value="Value" />
```

Attributtet "name" definerer variabelens navn og attributten "value" representerer variabelens verdi/innhold. Alle variabler i malen kan delvis eller fullstendig erstattes av den brukerdefinerte variabelen ved å sette inn variabelnavnet med to dollar tegn i starten og slutten.

Eksempel på bruk av brukerdefinert variabel

```highlight
<DIPSExtensions:variable name="Variable" value="Value" />

<text x="70mm" y="2mm" font-size="39pt">$$Variable$$</text>

<DIPSExtensions:variable name="Variable" value="RedefinedValue" />
<text x="2mm" y="15mm" font-size="10pt">$$Variable$$</text>

<DIPSExtensions:variable name="PositionVariable" value="{i*20 + 15}" />
<text x="2mm" y="$$PositionVariable$$mm" font-size="10pt">$$Variable$$</text>
```

**Løkker**

Du kan repetere samme sett med elementer flere ganger ved hjelp av løkker. Det er implementert to varianter av løkker i UPF. "For" løkker for egendefinert antall repetisjoner og "Foreach" løkker for repetisjon basert på antall gjentakende elementer i datamodellen for utskrifter som bruker det.

**"For" løkker**

Angis med elementet "\<DIPSExtensions:for>". Du angir i attributter hvor mange ganger underliggende malelementer skal repeteres og, repetisjonsvariabel ("iteration index"), startindeks, sluttindeks og inkrement for hver "runde". Repetisjonsvariabelen kan brukes som variabel i underliggende elementer i for eksempel beregning av posisjonering. Startindeks og inkrement er valgfrie. Standardverdier er "start på 0" og inkrement lik 1.

Eksempel på bruk av *For* løkke

```highlight
<DIPSExtensions:variable name="x0" value="10"/>
<DIPSExtensions:for name="i" start="0" end="10" increment="2">
    <text x="$$x0$$mm" y="{i*10}mm" font-size="12pt">Row $$i$$</text>
    <DIPSExtensions:for name="j" end="6">
        <text x="{j*40+$$x0$$+20}mm" y="{i*10}mm" font-size="12pt">Column $$j$$ in row $$i$$</text>
    </DIPSExtensions:for>
</DIPSExtensions:for>
```

**"Foreach" løkker**

Angis med elementet "\<DIPSExtensions:foreach>". Brukes for å repetere innen en samling med data (dokumenteres særskilt knyttet til funksjonalitet som benytter løsnignen). Repetisjonen krever angivelse av attributtene *name* (id på iterasjonsvariabelen, eks. "i"), *source* (kilde - samlingen data i datakilden som skal repeteres), *item* (dataprefiks for innhold som brukes i malen). I tillegg kan du angi en valgfri attributt *max-items-on-page*. Det vil da bli generert en ny side og alle tidligere angitte malelementer blir kopiert over på den nye siden.

Eksempel data

```highlight
{
    "hospitalWard": "Ortopeden",
    "patients": [
        {
            "id" : "010101789456",
            "name" : "Kalle Krank",
            "city" : "Tromsø"
        },
        {
            "id" : "17048945612",
            "name" : "Ola Normann",
            "city" : "Oslo"
        },
        {
            "id" : "19099145612",
            "name" : "Kari Normann",
            "city" : "Oslo"
        }
     ]
}
```

Eksempel på bruk av *foreach* løkke med eksempeldataen

```highlight
<svg height="297mm" width="210mm" xmlns:DIPSExtensions="http://www.dips.no/team/zen/print" xmlns="http://www.w3.org/2000/svg" dominant-baseline="hanging">

    <text x="5mm" y="5mm" font-size="16pt">{hospitalWard}</text>

    <DIPSExtensions:foreach name="i" source="patients" item="patient" max-items-on-page="2">
        <text x="5mm" y="{i*20 + 15}mm" font-size="11pt">{patient.id}</text> (1)
        <text x="5mm" y="{i*20 + 20}mm" font-size="11pt">{patient.name}</text>
        <text x="5mm" y="{i*20 + 25}mm" font-size="11pt">{patient.city}</text>
    </DIPSExtensions:foreach>
</svg>
```

|       |                                                                                                      |
| ----- | ---------------------------------------------------------------------------------------------------- |
| **1** | I første iterasjon er i lik 0. Da blir posisjon y lik 15. I etterfølgende iterasjoner øker y med 20. |

For å slippe å sette opp kalkulasjon av posisjon for alle underliggende elementer kan du gruppere disse i et underliggende SVG element.

Eksmepl på gruppering av elementer inne i en *foreach* løkke

```highlight
<svg height="297mm" width="210mm" xmlns:DIPSExtensions="http://www.dips.no/team/zen/print" xmlns="http://www.w3.org/2000/svg" dominant-baseline="hanging">

    <text x="5mm" y="5mm" font-size="16pt">{hospitalWard}</text>

    <DIPSExtensions:foreach name="i" source="patients" item="patient">
        <svg x="5mm" y="{i*20 + 15}mm" height="100mm" width="100mm" dominant-baseline="hanging"> (1)
            <text x="0mm" y="0mm" font-size="11pt">{patient.id}</text>
            <text x="0mm" y="5mm" font-size="11pt">{patient.name}</text>
            <text x="0mm" y="10mm" font-size="11pt">{patient.city}</text>
        </svg>
    </DIPSExtensions:foreach>
</svg>
```

|       |                                                                                                                                                                  |
| ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **1** | Her ser du at posisjonsberegningen gjøres kun på SVG elementet og ikke på de enkelte underliggende elementer som nå får sin posisjon relativt til SVG elementet. |

**Conditions**

**If Condition**

Elementet \<DIPSExtensions:if> kan brukes til å legge til betingede setninger i SVG ved å bruke enten json-collection eller brukerdefinerte variabler. If-condition krever at variabelen og verdiattributtene settes, er variabel 'expresion variabel' som skal sjekkes i betingelsen, og verdien er den som kontrolleres mot i betingelsen. Variabelen kan enten være en egenskap i collection eller en brukerdefinert variabel. I tillegg brukes den valgfrie attributtoperatoren til å definere den betingede operatoren for if-setningen. Bare to operatørtyper støttes, "lik" og "ikke-lik", standardverdien er "lik". eksempeldata: Eksempeldata:

```highlight
{
    "hospitalWard": "Ortopeden",
    "patients": [
        {
            "id" : "010101789456",
            "name" : "Kalle Krank",
            "city" : "Tromsø"
        },
        {
            "id" : "17048945612",
            "name" : "Ola Normann",
            "city" : "Oslo"
        },
        {
            "id" : "19099145612",
            "name" : "Kari Normann",
            "city" : "Oslo"
        }
     ]
}
```

Hvis uttrykket sjekkes mot en json-egenskap, kan det se omtrent slik ut:

```highlight
<svg height="297mm" width="210mm" xmlns:DIPSExtensions="http://www.dips.no/team/zen/print" xmlns="http://www.w3.org/2000/svg" dominant-baseline="hanging">
  <DIPSExtensions:if variable="{hospitalWard}" value="Ortopeden">
    <text x="5mm" y="10mm" font-size="6pt">Some text</text>
    <text x="15mm" y="10mm" font-size="6pt">Another text</text>
    <DIPSExtensions:barcode x = "20mm" y="15mm" height="8mm" width="29mm" type="code128">71233893</DIPSExtensions:barcode>
  </DIPSExtensions:if>
  <DIPSExtensions:if variable="{hospitalWard}" operator="not-equal" value="Ortopeden">
    <text x="5mm" y="10mm" font-size="6pt">Some other text</text>
    <text x="15mm" y="10mm" font-size="6pt">Another text</text>
  </DIPSExtensions:if>
</svg>
```

Hvis uttrykket sjekkes mot en brukerdefinert variabel, kan det se omtrent slik ut:

```highlight
<svg height="297mm" width="210mm" xmlns:DIPSExtensions="http://www.dips.no/team/zen/print" xmlns="http://www.w3.org/2000/svg" dominant-baseline="hanging">
  <DIPSExtensions:variable name="userVaribale" value="10" />
  <DIPSExtensions:if variable="$$userVaribale$$" value="9">
    <text x="5mm" y="10mm" font-size="6pt">Some text</text>
    <text x="15mm" y="10mm" font-size="6pt">Another text</text>
    <DIPSExtensions:barcode x = "20mm" y="15mm" height="8mm" width="29mm" type="code128">71233893</DIPSExtensions:barcode>
  </DIPSExtensions:if>
  <DIPSExtensions:if variable="$$userVaribale$$" operator="not-equal" value="9">
    <text x="5mm" y="10mm" font-size="6pt">Some other text</text>
    <text x="15mm" y="10mm" font-size="6pt">Another text</text>
  </DIPSExtensions:if>
</svg>
```

**Elseif & Else**

`<DIPSExtensions:elseif>`-elementet er en del av `<DIPSExtensions:if>`-setningsblokken som kan brukes til å sjekke tilleggsbetingelsene i blokken. Elseif krever også at variabelen og verdiattributtene settes, variabel er uttrykksvariabelen som skal sjekkes i betingelsen, og verdien er den som sjekkes mot i betingelsen. Variabelen kan enten være en egenskap i collection eller en brukerdefinert variabel. I tillegg brukes den valgfrie attributtoperatoren til å definere den betingede operatoren for if-setningen. Bare to operatørtyper støttes, "lik" og "ikke-lik", standardverdien er "lik". `<DIPSExtensions:else>`-elementet er også en del av `<DIPSExtensions:if>`-setningsblokken som kan brukes til å sjekke tilleggsbetingelsene i blokken. Dette krever ikke at noen attributter angis. Eksempeldata:

```highlight
<svg height="297mm" width="210mm" xmlns:DIPSExtensions="http://www.dips.no/team/zen/print" xmlns="http://www.w3.org/2000/svg" dominant-baseline="hanging">
  <DIPSExtensions:if variable="{hospitalWard}" value="Ortopeden">
    <text x="5mm" y="10mm" font-size="6pt">Some text</text>
    <text x="15mm" y="10mm" font-size="6pt">Another text</text>
    <DIPSExtensions:barcode x = "20mm" y="15mm" height="8mm" width="29mm" type="code128">71233893</DIPSExtensions:barcode>
    <DIPSExtensions:elseif variable="{hospitalWard}" operator="equal" value="Psychiatry">
      <text x="5mm" y="10mm" font-size="6pt">Some other text</text>
      <text x="15mm" y="10mm" font-size="6pt">Another text</text>
  </DIPSExtensions:elseif>
  <DIPSExtensions:else>
      <text x="5mm" y="10mm" font-size="6pt">Some other text</text>
      <text x="15mm" y="10mm" font-size="6pt">Another text</text>
  </DIPSExtensions:else>
  </DIPSExtensions:if>
</svg>
```

If-else tilstand kan brukes inne i foreache løkke og for løkker. Eksempeldata:

```highlight
<svg height="297mm" width="210mm" xmlns:DIPSExtensions="http://www.dips.no/team/zen/print" xmlns="http://www.w3.org/2000/svg" dominant-baseline="hanging">
    <text x="5mm" y="5mm" font-size="16pt">{hospitalWard}</text>
    <DIPSExtensions:foreach name="i" source="patients" item="patient" max-items-on-page="2">
        <text x="5mm" y="{i*20 + 15}mm" font-size="11pt">{patient.id}</text>
        <text x="5mm" y="{i*20 + 20}mm" font-size="11pt">{patient.name}</text>
        <text x="5mm" y="{i*20 + 25}mm" font-size="11pt">{patient.city}</text>
        <DIPSExtensions:if variable="{patient.city}" value="Tromsø">
          <text x="5mm" y="10mm" font-size="6pt">Some text</text>
          <text x="15mm" y="10mm" font-size="6pt">Another text</text>
          <DIPSExtensions:barcode x = "20mm" y="15mm" height="8mm" width="29mm" type="code128">71233893</DIPSExtensions:barcode>
          <DIPSExtensions:elseif variable="{patient.city}" operator="equal" value="Oslo">
            <text x="5mm" y="10mm" font-size="6pt">Some other text</text>
            <text x="15mm" y="10mm" font-size="6pt">Another text</text>
        </DIPSExtensions:elseif>
        <DIPSExtensions:else>
            <text x="5mm" y="10mm" font-size="6pt">Some other text</text>
            <text x="15mm" y="10mm" font-size="6pt">Another text</text>
        </DIPSExtensions:else>
        </DIPSExtensions:if>
    </DIPSExtensions:foreach>
</svg>
```

**Nye sider**

Utskrifter basert på SVG maler vil i noen tilfeller måtte gå ove flere sider. I malene kan man tvinge start av ny side ved å legge inn et "\<DIPSExtensions:newpage>" element. Elementet har to valgfrie attributter, *repeat* og *clear*.

Eksempel på bruk av *newpage*

```highlight
<DIPSExtensions:newpage /> (1)
<DIPSExtensions:newpage repeat="2" clear="true" /> (2)
```

|       |                                                                       |
| ----- | --------------------------------------------------------------------- |
| **1** | Gir 1 ny side uten fjerning av tidligere deklarerte elementer i malen |
| **2** | Gir 2 nye sider der tidligere deklarerte elementer i malen er fjernet |

Attributtet "Repeat" benyttes for å generere nye sider i det antall som angis. Attributtet "Clear" er som standard satt til "false" og angir om tidligere elementer i malen kopieres med til den nye siden eller ikke. Se eksepel under <<,sidenummerering>>.

\==== Sidenummerering

Som følge av behovet for flere sider er det laget et element som vil angi sidetall "\<DIPSExtensions:pageNumberVariable>". Dette elementet inneholder mulighet for å deklarere attributter for sidetall og totalt antall sider slik.

Deklarering av sidetallsvariabler

```highlight
<DIPSExtensions:pageNumberVariable pageNumberName="pageNumber" totalPageNumbersName="totalNumberOfPages" />
```

Disse attributtene kan benyttes som variabler på samme måte som brukerdefinerte variabler gjennom hele malen. Her følger et eksempel på bruk av sidetallsariabler sammen med "newpage" elementet.

Eksempel på bruk av sidetall i en SVG mal

```highlight
<?xml version="1.0" encoding="UTF-8"?>
<svg height="297mm" width="210mm" xmlns:DIPSExtensions="http://www.dips.no/team/zen/print" xmlns="http://www.w3.org/2000/svg" dominant-baseline="hanging" transform="rotate(0)">
    <rect x="0mm" y="0mm" height="297mm" width="210mm" rx="0" ry="0" fill="white" DIPSExtensions:preview="true"/>

    <DIPSExtensions:pageNumberVariable pageNumberName="pageNumber" totalPageNumbersName="totalNumberOfPages" />

    <text x="100mm" y="150mm" font-size="24pt">$$pageNumber$$ / $$totalNumberOfPages$$</text>
    <DIPSExtensions:newpage repeat="4" clear="false" />

</svg>
```

**Rotasjon**

Etikettskrivere har støtte for å skrive ulike felter i ulike retning fra utgangspunktet. Disse er normalt begrenset til 0, 90, 180 og 270 grader. Utskrift ved hjelp av PostScript (A4 skriver) støtter en finere grad av rotasjonsvinkler. Rotasjon angis med "transform" attributten i SVG med verdien "rotate(*vinkel i antall grader*)".

Eksempel på rotasjon

```highlight
<text x="2mm" y="2mm" font-size="12pt" transform="rotate(90)">Rotated text</text>
```

Rotasjon kan angis i SVG elementene for å rotere alle underliggende elementer, eller det kan angis på enkeltelementer som i eksempelet ovenfor. Legges det rotasjon på underliggende elementer blir denne lagt til rotasjonen i SVG elementet.

Eksempel på rotasjon av alle underelementer i et SVG element

```highlight
<svg x="0mm" y="0mm" height="20mm" width="210mm" dominant-baseline="hanging" transform="rotate(90)">
    <text x="83mm" y="2mm" font-size="22pt">Rotated text</text>
    <text x="83mm" y="12mm" font-size="22pt">Rotated text2</text>
</svg>
```

Her følger et litt mer avansert eksempel som bruker både rotasjon i SVG element og i underliggende elementer inne i for løkker.

Avansert SVG eksempel

```highlight
<?xml version="1.0" encoding="UTF-8"?>
<svg height="297mm" width="210mm" xmlns:DIPSExtensions="http://www.dips.no/team/zen/print" xmlns="http://www.w3.org/2000/svg" dominant-baseline="hanging" transform="rotate(30)">

  <DIPSExtensions:variable name="x" value="25"/>
  <DIPSExtensions:variable name="y" value="40"/>
  <DIPSExtensions:for name="i" start="0" end="360" increment="45">
    <text x="$$x$$mm" y="$$y$$mm" font-size="8pt" transform="rotate($$i$$)">Hello World!</text>
  </DIPSExtensions:for>

  <DIPSExtensions:variable name="x1" value="60"/>
  <DIPSExtensions:variable name="y1" value="40"/>
  <DIPSExtensions:variable name="x2" value="60"/>
  <DIPSExtensions:variable name="y2" value="50"/>
  <DIPSExtensions:for name="i" start="0" end="360" increment="45">
    <line x1="$$x1$$mm" y1="$$y1$$mm" x2="$$x2$$mm" y2="$$y2$$mm" stroke="black" stroke-width="3" transform="rotate($$i$$)"></line>
  </DIPSExtensions:for>

  <DIPSExtensions:variable name="x" value="90"/>
  <DIPSExtensions:variable name="y" value="40"/>
  <DIPSExtensions:for name="i" start="0" end="360" increment="45">
    <rect x="$$x$$mm" y="$$y$$mm" height="3mm" width="15mm" transform="rotate($$i$$)"></rect>
  </DIPSExtensions:for>

  <DIPSExtensions:variable name="x" value="150"/>
  <DIPSExtensions:variable name="y" value="40"/>
  <DIPSExtensions:for name="i" start="0" end="360" increment="45">
    <DIPSExtensions:barcode x="$$x$$mm" y="$$y$$mm" height="5mm" type="code128" transform="rotate($$i$$)">Hello!</DIPSExtensions:barcode>
  </DIPSExtensions:for>
</svg>
```

Resultat av eksempel SVG

{% hint style="info" %}
Kun PostScript støtter rotasjon i alle vinkler. Etikettskrivere vil runde av til nærmeste rette vinkel.
{% endhint %}

#### Maldefinerte skriverinnstillinger

En mal kan definere skriverinnstillinger som er spesifikke for skrivernes språk slik at det blir mulig å ha en tett kobling mellom skriverspråk og mal. Innstillingene i malen vil bli brukt dersom skriveren er satt opp med tilsvarende skriverspråk i skriveroppsett. Flere av innstillingene er merket med "Valgfri innstilling". Det betyr ikke nødvendigvis at du ikke må ta stilling til innstillingen. Det betyr bare at innstillingen ikke **må** settes i malen. Flere skrivermodeller tillater slike innstillinger direkte på skriveren eller via konfigureringsprogramvare du kan installere på din PC.

Eksempel på definisjon av skriverinnstillinger (*PrinterSettings*)

```highlight
  <DIPSExtensions:PrinterSettings> (2)
    <PrinterModel Name="PostScript">
      <PostscriptSettings Font="Helvetica" />
    </PrinterModel>
    <PrinterModel Name="epl2">
      <Epl2Settings DotsPerMillimeter="8.0" XOffsetInMillimeter="0.0" YOffsetInMillimeter="0.0" Speed="3" Density="12">
        <EplLabelLength LabelLength="256" SeparatorType="Gap" />
        <EplPrintDirection PrintFromTop="false" />
      </Epl2Settings>
    </PrinterModel>
    <PrinterModel Name="zpl2">
      <Zpl2Settings DotsPerMillimeter="8.0">
        <ZplMediaTracking MediaType="Y" />
        <ZplLabelLength LabelLength="256" />
      </Zpl2Settings>
    </PrinterModel>
      <PrinterModel Name="idp">
        <IdpSettings DotsPerMillimeter="8.0" Font="Swiss 721 BT" DataMatrixMagnify="4">
          <IdpSetup>
            <StartAdjust Value="-126" />
            <StopAdjust Value="0" />
            <XStart Value="34" />
            <Width Value="776" />
            <Length Value="288" />
            <LabelType Value="LabelWithGaps" />
            <PaperType Value="Transfer" />
            <PrintSpeed Value="100" />
          </IdpSetup>
        </IdpSettings>
      </PrinterModel>
  </DIPSExtensions:PrinterSettings>
```

**EPL2 innstillinger**

Innstillinger for skrivere som benytter språket "EPL2" angis med elementet "Epl2Settings".

**Mulige Epl2Settings**

| Innstilling                    | Type data                                                                                                       | Beskrivelse                                                                                                | Påkrevet?                                            |
| ------------------------------ | --------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| DotsPerMillimeter              | *decimaltall*                                                                                                   | Angir antall dots per millimeter for den aktuelle skriveren                                                | Valgfri innstilling                                  |
| XOffsetInMillimeter            | *decimaltall*                                                                                                   | Angir horisontal offset                                                                                    | Valgfri innstilling                                  |
| YOffsetInMillimeter            | *decimal*                                                                                                       | Angir vertikal offset                                                                                      | Valgfri innstilling                                  |
| Speed                          | *heltall*                                                                                                       | Angir utskriftshastighet                                                                                   | Valgfri innstilling                                  |
| Density                        | *heltall*                                                                                                       | Angir utskriftstetthet                                                                                     | Valgfri innstilling                                  |
| EplLabelLength                 | Se egen beskrivelse                                                                                             | Angir lengden på etiketten                                                                                 | Valgfri innstilling                                  |
| EplLabelLength→LabelLength     | *heltall*                                                                                                       | Angir etikettens lengde i antall dots                                                                      | Påkrevet innstilling dersom EplLabelLength defineres |
| EplLabelLength→Separatortype   | <p>Angis som en av</p><ul><li><em>Gap</em></li><li><em>BlackLine</em></li><li><em>ContinousMedia</em></li></ul> | Angir type media med tanke på hvordan skrivere skiller to etiketter fra hverandre                          | Påkrevet innstilling dersom EplLabelLength defineres |
| EplLabelLength→SeparatorLength | *heltall*                                                                                                       | Angir bredden på Gap eller BlackLine                                                                       | Påkrevet innstilling dersom EplLabelLength defineres |
| EplLabelLength→OffsetLength    | *heltall*                                                                                                       | Angir offset skriveren skal rulle ut eller inn etikett etter utskrift og etter at Gap/BlackLine er passert | Valgfri innstilling                                  |
| EplPrintDirection              | Underelement "PrintFromTop" settes til *true* eller *false*                                                     | Angir om skriveren skal starte på toppen eller bunnen av etiketten. Default er "false"                     | Valgfri innstilling                                  |

Eksempel på tom mal med EPL2 innstillinger

```highlight
<?xml version="1.0" encoding="UTF-8"?>
<svg height="36mm" width="53mm" xmlns="http://www.w3.org/2000/svg" xmlns:DIPSExtensions="http://www.dips.no/team/zen/print" dominant-baseline="hanging">
  <DIPSExtensions:PrinterSettings>
    <PrinterModel Name="epl2">
      <Epl2Settings DotsPerMillimeter="8.0" XOffsetInMillimeter="0.0" YOffsetInMillimeter="0.0" Speed="3" Density="12">
        <EplLabelLength LabelLength="256" SeparatorType="Gap" SeparatorLength="24" OffsetLength="20" />
        <EplPrintDirection PrintFromTop="false" />
      </Epl2Settings>
    </PrinterModel>
  </DIPSExtensions:PrinterSettings>
</svg>
```

**ZPL2 innstillinger**

Innstillinger for skrivere som benytter språket "ZPL2" angis med elementet "Zpl2Settings".

**Mulige Zpl2Settings**

| Innstilling                      | Type data                                                          | Beskrivelse                                                                                                                                                                                                                                                                                                                                                                                                                                    | Påkrevet?                                            |
| -------------------------------- | ------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| DotsPerMillimeter                | *decimaltall*                                                      | Angir antall dots per millimeter for den aktuelle skriveren                                                                                                                                                                                                                                                                                                                                                                                    | Valgfri innstilling                                  |
| ZplLabelLength                   | Underelement *LabelLength* angis med *heltall*                     | Angir lengden på etiketten                                                                                                                                                                                                                                                                                                                                                                                                                     | Valgfri innstilling                                  |
| ZplMediaTracking                 | Underelement *MediaType* angis med enten "N","Y","W","M" eller "A" | <p>Angir om mediaet er enten "continuous" eller "non-continuous"</p><ul><li>N betyr "continuous media"</li><li>Y betyr "non-continuous media web sensing"</li><li>W betyr "non-continuous media web sensing"</li><li>M betyr "non-continuous media mark sensing"</li><li>A betyr "auto-detects the type of media during calibration"</li></ul><p>Y og W gir samme resultat. Auto deteksjon av media støttes kun ag G-serie zebra skrivere.</p> | Påkrevet innstilling dersom ZplLabelLength defineres |
| ZplLabelHome→XOriginInMillimeter | *heltall*                                                          | X Origin setter startpunkt langs X aksen ut ifra etikettens størrelse. Default er 0. Angis i millimeter                                                                                                                                                                                                                                                                                                                                        | Valgfri innstilling                                  |
| ZplLabelHome→YOriginInMillimeter | *heltall*                                                          | Y Origin setter startpunkt langs Y aksen ut ifra etikettens størrelse. Default er 0. Angis i millimeter                                                                                                                                                                                                                                                                                                                                        | Valgfri innstilling                                  |
| ZplLabelHome→Inverted            | *true* eller *false*                                               | Inverted angir om etiketten skal skrives fra bunnen eller fra toppen                                                                                                                                                                                                                                                                                                                                                                           | Valgfri innstilling                                  |

Eksempel på tom mal med ZPL2 innstillinger

```highlight
<?xml version="1.0" encoding="UTF-8"?>
<svg height="36mm" width="53mm" xmlns="http://www.w3.org/2000/svg" xmlns:DIPSExtensions="http://www.dips.no/team/zen/print" dominant-baseline="hanging">
  <DIPSExtensions:PrinterSettings>
    <PrinterModel Name="zpl2">
      <Zpl2Settings DotsPerMillimeter="8.0">
        <ZplMediaTracking MediaType="Y" />
        <ZplLabelLength LabelLength="256" />
      </Zpl2Settings>
    </PrinterModel>
  </DIPSExtensions:PrinterSettings>
</svg>
```

**IDP innstillinger**

Innstillinger for skrivere som benytter språket "IDP" angis med elementet "IdpSettings".

**Mulige IDP innstillinger**

| Innstilling                      | Type data                                                                                                                                                                                                     | Beskrivelse                                                                                          | Påkrevet?                       |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------- |
| IdpSettings→DotsPerMillimeter    | *decimaltall*                                                                                                                                                                                                 | Angir antall punkter per millimeter for den aktuelle skriveren                                       | Valgfri innstilling             |
| IdpSettings→Font                 | <p>Angis som en av</p><ul><li><em>Default</em></li><li><em>Helvetica</em></li><li><em>Courier</em></li><li><em>Times-Roman</em></li><li><em>Swiss 721 BT</em></li></ul>                                       | Angir foretrukket font                                                                               | Valgfri innstilling             |
| IdpSettings→DataMatrixMagnify    | *heltall*                                                                                                                                                                                                     | Angir magnifikasjonsfaktor for Datamatrix strekkoder                                                 | Valgfri innstilling             |
| IdpSettings→IdpSetup→StartAdjust | *heltall*                                                                                                                                                                                                     | Angir antall punkter mediet/etiketten skal trekkes inn eller kjøres ut før utskriften starter        | Valgfri innstilling             |
| IdpSettings→IdpSetup→StopAdjust  | *heltall*                                                                                                                                                                                                     | Angir antall punkter mediet/etiketten skal trekkes inn eller kjøres ut etter at utskriften er ferdig | Valgfri innstilling             |
| IdpSettings→IdpSetup→XStart      | *heltall*                                                                                                                                                                                                     | Angir antall punkter offset i startposisjon langs X aksen                                            | Valgfri innstilling             |
| IdpSettings→IdpSetup→Width       | *heltall*                                                                                                                                                                                                     | Angir mediets/etikettens bredde i antall punkter                                                     | Valgfri innstilling             |
| IdpSettings→IdpSetup→Length      | *heltall*                                                                                                                                                                                                     | Angir mediets/etikettens lengde i antall punkter                                                     | Valgfri innstilling             |
| IdpSettings→IdpSetup→LabelType   | <p>Angis som en av følgende</p><ul><li><em>LabelWithGaps</em></li><li><em>LabelWithMark</em></li><li><em>TicketWithGaps</em></li><li><em>FixedLengthStrip</em></li><li><em>VariableLengthStrip</em></li></ul> | Angir type media/etikett                                                                             | Valgfri innstilling             |
| IdpSettings→IdpSetup→PaperType   | <p>Angis som en av følgende</p><ul><li><em>Transfer</em></li><li><em>DirectThermal</em></li></ul>                                                                                                             | Angir om skriveren din benytter fargebånd ("Transfer") eller ikke ("DirectThermal")                  | IdpSettings→IdpSetup→PrintSpeed |

Eksempel på tom mal med IdpSettings

```highlight
<?xml version="1.0" encoding="UTF-8"?>
<svg height="36mm" width="53mm" xmlns="http://www.w3.org/2000/svg" xmlns:DIPSExtensions="http://www.dips.no/team/zen/print" dominant-baseline="hanging">
  <DIPSExtensions:PrinterSettings>
    <PrinterModel Name="idp">
      <IdpSettings DotsPerMillimeter="8.0" Font="Swiss 721 BT" DataMatrixMagnify="4">
        <IdpSetup>
          <StartAdjust Value="-126" />
          <StopAdjust Value="0" />
          <XStart Value="34" />
          <Width Value="776" />
          <Length Value="288" />
          <LabelType Value="LabelWithGaps" />
          <PaperType Value="Transfer" />
          <PrintSpeed Value="100" />
        </IdpSetup>
      </IdpSettings>
    </PrinterModel>
  </DIPSExtensions:PrinterSettings>
</svg>
```

**Postscript innstillinger**

For utskrift på A4 skrivere kan du også gjøre enkelte innstillinger i "PostscriptSettings".

**Mulige PostscriptSettings**

| Innstilling | Type data                                                                                                                                                               | Beskrivelse            | Påkrevet?           |
| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- | ------------------- |
| Font        | <p>Angis som en av</p><ul><li><em>Default</em></li><li><em>Helvetica</em></li><li><em>Courier</em></li><li><em>Times-Roman</em></li><li><em>Swiss 721 BT</em></li></ul> | Angir foretrukket font | Valgfri innstilling |

Eksempel på tom mal med innstillinger for alle skriverspråk

```highlight
<?xml version="1.0" encoding="UTF-8"?>
<svg height="36mm" width="53mm" xmlns="http://www.w3.org/2000/svg" xmlns:DIPSExtensions="http://www.dips.no/team/zen/print" dominant-baseline="hanging">
    <DIPSExtensions:PrinterSettings>
        <PrinterModel Name="PostScript">
            <PostscriptSettings Font="Helvetica" />
        </PrinterModel>
        <PrinterModel Name="epl2">
            <Epl2Settings DotsPerMillimeter="8.0" XOffsetInMillimeter="0.0" YOffsetInMillimeter="0.0" Speed="3" Density="12">
                <EplLabelLength LabelLength="287" SeparatorType="Gap" SeparatorLength="24" />
            </Epl2Settings>
        </PrinterModel>
        <PrinterModel Name="zpl2">
            <Zpl2Settings DotsPerMillimeter="8.0">
                <ZplMediaTracking MediaType="Y" />
                <ZplLabelLength LabelLength="287" />
            </Zpl2Settings>
        </PrinterModel>
        <PrinterModel Name="idp">
            <IdpSettings DotsPerMillimeter="8.0" Font="Swiss 721 BT" DataMatrixMagnify="4">
                <IdpSetup>
                    <StartAdjust Value="-126" />
                    <StopAdjust Value="0" />
                    <XStart Value="34" />
                    <Width Value="776" />
                    <Length Value="288" />
                    <LabelType Value="LabelWithGaps" />
                    <PaperType Value="Transfer" />
                    <PrintSpeed Value="100" />
                </IdpSetup>
            </IdpSettings>
        </PrinterModel>
    </DIPSExtensions:PrinterSettings>
</svg>
```

**Jobbe med data i UPF maler**

I SVG malene kan du sørge for at det skrives ut data på en av tre måter.

1. Skrive tekst/innhold rett i malen.
2. Benytte standard DIPS malvariabler
3. Benytte data fra angitt preprosessor

Tekst kan du skrive i alle maler, men du kan ikke blande vanlige malvariabler og data fra preprosessorer. En preprosessor er et stykke programvare som designes for ulike spesifikke scenarier, slik som for eksempel prøvetakningslister. Preprosessoren vil da, gjennom egen dokumentasjon for aktuell funksjonalitet, avgjøre hvilke variabler som kan benyttes. Data fra preprosessorer knyttes inn til malen ved å angi dem med krøllparanteser. Eksempel: {patient.fullname} vil skiftes ut med aktuell data såfremt aktuell preprosessor støtter variabelen.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dokumentasjon.dips.no/universal-printing-framework/universal-printing-framework.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
