Skip to content

QR Codes

Press can generate QR codes directly in documents. They're commonly used for business cards, event badges, and documents that need to link to online resources.

Basic Usage

xml
<qr-code data="https://example.com/contact/jane-doe" />

The data attribute holds the content to encode -- typically a URL, but it can be any text.

Sizing

Control the size with width and height:

xml
<qr-code data="https://example.com" width="80pt" height="80pt" />

Data-Driven QR Codes

Bind the QR code content to data:

xml
<qr-code data="{{ data.profile-url }}" width="60pt" height="60pt" />

Conditional QR Codes

Show a QR code only when a URL is provided:

xml
<qr-code show-if="data.website" data="{{ data.website }}"
          width="60pt" height="60pt" />

Example: A Business Card

xml
<press>
  <document width="8.5cm" height="5.5cm" font-color="white" background-color="black">
    <repeat data="data.contacts" item="person">
      <page padding="0.5cm">
        <frame direction="row" height="100%" v-align="center">
          <frame width="fill" v-align="center">
            <frame font-size="12pt" font-style="bold">{{ person.name }}</frame>
            <frame font-size="9pt" font-color="#9EA7F0">{{ person.title }}</frame>
            <frame height="8pt" />
            <frame font-size="8pt" line-height="1.6">
              {{ person.email }}<br />
              {{ person.phone }}
            </frame>
          </frame>
          <frame show-if="person.url" width="fill" h-align="right" v-align="center">
            <qr-code data="{{ person.url }}" border-radius="0.2cm" padding="0.2cm" background-color="white" />
          </frame>
        </frame>
      </page>
    </repeat>
  </document>

  <data type="json">
  {
    "contacts": [
      {
        "name": "Jane Ashworth",
        "title": "Head of Operations",
        "email": "j.ashworth@example.com",
        "phone": "+44 7700 123456",
        "url": "https://example.com/team/jane-ashworth"
      },
      {
        "name": "Marcus Reed",
        "title": "Lead Developer",
        "email": "m.reed@example.com",
        "phone": "+44 7700 654321",
        "url": "https://example.com/team/marcus-reed"
      }
    ]
  }
  </data>
</press>

This generates one business card per contact, each with a QR code linking to their profile page.