Kuonen.PDFTools Prüfstand

QR-Rechnung

Der vollständige Zahlteil mit Empfangsschein nach dem Style Guide von SIX — 210 × 105 mm an der unteren Blattkante, mit QR-Code, Schweizerkreuz, festen Feldtiteln in vier Sprachen und den Leerfeldern mit Eckmarken. Werte hinterlegen, sofort sehen. Ein ungültiger Datensatz wird laut abgelehnt — eine falsche IBAN oder eine QR-IBAN ohne QR-Referenz erscheint als Fehler, nicht als hübsch gesetzter, unbrauchbarer Zahlteil.

Zahlungsempfänger und Betrag
QR-IBAN (Institut 30000–31999) verlangt QRR; eine normale IBAN verlangt SCOR oder NON.
Zahlungsempfänger (Adresse)
Zahlungspflichtiger (leerer Name = Leerfeld)
  • Nutzdaten: 223 Zeichen
  • Bericht: leer — alles vollstaendig gedruckt.
  • Hinweis: Der allgemeine Preflight ist fuer eine QR-Rechnung nicht der richtige Bericht (Helvetica ist laut SIX Style Guide zugelassen und nicht einzubetten; die 5-mm-Ruhezone kommt aus dem Layout). Gezeigt wird der fachlich passende SwissQrBillLayoutReport.
  • 5,964 Byte
  • Ladestatus: Success
  • 1 Seite(n)
Berichte zu diesem Lauf
QR-Rechnung — gekuerzte Angaben Kuonen.PDFTools.QrBill.SwissQrBillLayoutReport ohne Befund

Der Zahlteil hat eine feste Groesse, die Werte aus dem Swiss QR Code haben keine. Was nicht hineinpasste, wurde gekuerzt und mit »…« gekennzeichnet — und hier gemeldet, statt still verschluckt.

Bericht leer — alle Angaben wurden vollstaendig gedruckt.

So steuern Sie das an — mit genau den oben eingegebenen Werten

Direkt — derselbe Zahlteil an dieselbe Stelle, direkt über die Zeichen-API (PageCanvas.DrawSwissQrBillAtPageBottom). Beide Wege erzeugen dasselbe Ergebnis — der Zahlteil gehört auf einer integrierten QR-Rechnung immer an die untere Blattkante. Die Vorschau oben bleibt darum stehen; es wechselt nur der gezeigte Quelltext.

using Kuonen.PDFTools.Authoring;
using Kuonen.PDFTools.Pages;
using Kuonen.PDFTools.Barcodes;
using Kuonen.PDFTools.QrBill;

var bill = new SwissQrBill
{
    Iban = "CH4431999123000889012",
    Currency = "CHF",
    ReferenceType = SwissQrReferenceType.Qrr,
    Reference = "210000000003139471430009017",
    Creditor = SwissQrAddress.Structured(
        "Max Muster & Soehne", "Musterstrasse", "123",
        "8000", "Seldwyla", "CH"),
};

bill.Amount = 2500.25m;

bill.UltimateDebtor = SwissQrAddress.Structured(
    "Simon Muster", "Musterstrasse", "1",
    "8000", "Seldwyla", "CH");

var options = new SwissQrBillLayoutOptions { Language = SwissQrBillLanguage.German };

var builder = new PdfDocumentBuilder { Title = "QR-Rechnung" };
PageCanvas page = builder.AddPage(PageSize.A4);

// Der Zahlteil sitzt an der unteren Blattkante — die einzige zulaessige Stelle.
page.DrawSwissQrBillAtPageBottom(bill, options);

byte[] pdf = builder.Build();