Here one example for the new Swiss bill:
**********************************************************************
// Project : PrintTest of the function PsQrCode()
// File : PSTestQrCode.prg
//
**********************************************************************
#include "
PSCRIPT.CH"
#define CRLF Chr(13) + Chr(10)
// Procedure ..: Main()
FUNCTION Main()
Set Century ON
SetColor("W+/B")
Scroll(0, 0, 24, 79, 0)
// Bad programming techniques. Kids, don't do this at home <G> !
@0,1 say "PageScript 32 test QrCode" color "14/1"
@1,1 say "Initializing the PageScript printer driver. Please wait !"
if (nError := PSInit()) == PSE_NOERROR
@2,1 say PsGetVersion()
@3,1 say "Print to PDF File"
PsNewPage()
PSSetDevice(DEV_PDFFILE) // DEV_PREVIEW=2 Printer with
Print preview, DEV_PDFFILE=3 Print to a PDF File
PsSetFileName("TestQrCode1.pdf")
AbeeQrCode()
PsEndDoc()
@4,1 say "Print to PDF Spooler"
PsNewPage()
PSSetDevice(DEV_PRINTER)
PsPrintDialog()
AbeeQrCode()
PsEndDoc()
else
do case
case nError == PSE_DLLNOTLOADED
Alert("PageScript 32 DLL not loaded")
case nError == PSE_NOTINITIALIZED
Alert("PageScript 32 not initialized")
otherwise
Alert("Unknown error")
endcase
endif
InKey(4)
SetColor("W/N")
Scroll(0, 0, 24, 79, 0)
Return NIL
/*-----------------------------------------------------------------------------
Function ...: AbeeQrCode()
Description : Show QrCode capabilities
Author .....: Otto
Date .......: April 2020
-----------------------------------------------------------------------------*/
Static Function AbeeQrCode()
Local QrCode := ""
BEGINDOC WITH 0 TITLE "Printing QrCodes" ORIENTATION APS_PORTRAIT
PsSetFont(APS_ARIAL, APS_PLAIN, 8)
PsSetUnit(APS_MILL)
// Test Swiss Payements Standards 2020
QrCode := QrCode + "SPC" + CRLF
// QRType SPC
QrCode := QrCode + "0200" + CRLF
// Version 0200
QrCode := QrCode + "1" + CRLF
// Coding Type 1
QrCode := QrCode + "CH4431999123000889012" + CRLF
// Konto (IBAN ZE) CH4431999123000889012
QrCode := QrCode + "S" + CRLF
// Adresstyp (ZE) S
QrCode := QrCode + "Robert Schneider AG" + CRLF
// Name (ZE) Robert Schneider AG
QrCode := QrCode + "Rue du Lac" + CRLF
// Strasse oder Adresszeile 1 (ZE) Rue du Lac
QrCode := QrCode + "1268" + CRLF
// Hausnr. oder Adresszeile 2 (ZE) 1268
QrCode := QrCode + "2501" + CRLF
// PLZ (ZE) 2501
QrCode := QrCode + "Biel" + CRLF
// Ort (ZE) Biel
QrCode := QrCode + "CH" + CRLF
// Land (ZE) CH
QrCode := QrCode + CRLF
// Adresstyp (EZE)
QrCode := QrCode + CRLF
// Name (EZE)
QrCode := QrCode + CRLF
// Strasse oder Adresszeile 1 (EZE)
QrCode := QrCode + CRLF
// Hausnr. oder Adresszeile 2 (EZE)
QrCode := QrCode + CRLF
// PLZ (EZE)
QrCode := QrCode + CRLF
// Ort (EZE)
QrCode := QrCode + CRLF
// Land (EZE)
QrCode := QrCode + "2500.25" + CRLF
// Betrag 2500.25
QrCode := QrCode + "CHF" + CRLF
// Wõhrung CHF
QrCode := QrCode + "S" + CRLF
// Adresstyp (EZP) S
QrCode := QrCode + "Pia-Maria Rutschmann-Schnyder" + CRLF
// Name (EZP) Pia-Maria
Rutschmann-Schnyder
QrCode := QrCode + "Grosse Marktgasse" + CRLF
// Strasse oder Adresszeile 1 (EZP) Grosse Marktgasse
QrCode := QrCode + "28" + CRLF
// Hausnr. oder Adresszeile 2 (EZP) 28
QrCode := QrCode + "9400" + CRLF
// PLZ (EZP) 9400
QrCode := QrCode + "Rorschach" + CRLF
// Ort (EZP) Rorschach
QrCode := QrCode + "CH" + CRLF
// Land (EZP) CH
QrCode := QrCode + "QRR" + CRLF
// Referenztyp QRR
QrCode := QrCode + "210000000003139471430009017" + CRLF
// Referenz
210000000003139471430009017
QrCode := QrCode + "RG: 123456" + CRLF
// Unstrukturierte Mitteilungen
QrCode := QrCode + "EPD" + CRLF
// Trailer EPD
QrCode := QrCode + CRLF
// Rechnungsinformationen
QrCode := QrCode + "UV;UltraPay005;12345" + CRLF
// AV1 - Parameter Name AV1:
UV;UltraPay005;12345
QrCode := QrCode + "XY;XYService;54321"
// AV1 - Parameter Name AV2:
XY;XYService;54321
// Top of Page
PsSetImageQuality(200) // Quality default is 50
PsTextOut(20,10,"Swiss Payment
Standards",,,APS_ARIAL,14,APS_BOLD,APS_BLUE)
PsTextOut(30,10,"Printet with the help of PageScript32",,,APS_ARIAL,12)
PsTextOut(35,10,"Version : ",,,APS_ARIAL,12)
PsTextOut(35,40,PSGetVersion(),,,APS_ARIAL,12,,APS_RED)
PsTextOut(40,10,"Layout created by Otto Haldi",,,APS_ARIAL,12)
PsTextOut(45,10,"8 Januar 2022",,,APS_ARIAL,12)
PsBitmap(60,10,,93.5,"images/LogoAbee.bmp")
PsTextOut(180,10,"Layout of the payment part and
receipt",,,APS_ARIAL,12)
pLn = 192
// Drucken Zahlteil
PsQrCode(pLn+17-6,67-6,QrCode,1,242,4)
PsBitmap(pLn+36.5,86.5,,93.5,"images/PrFlag.bmp")
PsLine(pLn,5,pLn,205,0.3,APS_BLACK)
PsLine(pLn,62,pLn+100,62,0.3,APS_BLACK)
PsTextOut(pLn+5,67,"Zahlteil",,,APS_ARIAL,11,APS_BOLD)
PsTextOut(pLn+68,67,"Wõhrung",,,APS_ARIAL,8,APS_BOLD)
PsTextOut(pLn+68,82,"Betrag",,,APS_ARIAL,8,APS_BOLD)
PsTextOut(pLn+72,67,"CHF",,,APS_ARIAL,10)
PsTextOut(pLn+72,82,"2500.25",,,APS_ARIAL,10)
PsTextOut(pLn+88,67,"Name AV1:",,,APS_ARIAL,7,APS_BOLD)
PsTextOut(pLn+88,81,"UV;UltraPay005;12345",,,APS_ARIAL,7)
PsTextOut(pLn+91,67,"Name AV2:",,,APS_ARIAL,7,APS_BOLD)
PsTextOut(pLn+91,81,"XY;XYService;54321",,,APS_ARIAL,7)
PsTextOut(pLn+5,118,"Konto / Zahlbar an",,,APS_ARIAL,8,APS_BOLD)
PsTextOut(pLn+9,118,"CH44 3199 9123 0008 8901 2",,,APS_ARIAL,10)
PsTextOut(pLn+13,118,"Robert Schneider AG",,,APS_ARIAL,10)
PsTextOut(pLn+17,118,"Rue du Lac 1268",,,APS_ARIAL,10)
PsTextOut(pLn+21,118,"2501 Biel",,,APS_ARIAL,10)
PsTextOut(pLn+28,118,"Referenz",,,APS_ARIAL,8,APS_BOLD)
PsTextOut(pLn+32,118,"21 00000 00003 13947 14300 09017",,,APS_ARIAL,10)
PsTextOut(pLn+39,118,"Zusõtzliche Informationen",,,APS_ARIAL,8,APS_BOLD)
PsTextOut(pLn+43,118,"Bestellung No. 123456",,,APS_ARIAL,10)
PsTextOut(pLn+58,118,"Zahlbar durch",,,APS_ARIAL,8,APS_BOLD)
PsTextOut(pLn+62,118,"Pia-Maria Rutschmann-Schnyder",,,APS_ARIAL,10)
PsTextOut(pLn+66,118,"Grosse Marktgasse 28",,,APS_ARIAL,10)
PsTextOut(pLn+70,118,"9400 Rorschach",,,APS_ARIAL,10)
// Drucken Emfangsschein
PsTextOut(pLn+5,5,"Empfangsschein",,,APS_ARIAL,11,APS_BOLD)
PsTextOut(pLn+12,5,"Konto / Zahlbar an",,,APS_ARIAL,6,APS_BOLD)
PsTextOut(pLn+15,5,"CH44 3199 9123 0008 8901 2",,,APS_ARIAL,8)
PsTextOut(pLn+18,5,"Robert Schneider AG",,,APS_ARIAL,8)
PsTextOut(pLn+21,5,"Rue du Lac 1268",,,APS_ARIAL,8)
PsTextOut(pLn+24,5,"2501 Biel",,,APS_ARIAL,8)
PsTextOut(pLn+31,5,"Referenz",,,APS_ARIAL,6,APS_BOLD)
PsTextOut(pLn+34,5,"21 00000 00003 13947 14300 09017",,,APS_ARIAL,8)
PsTextOut(pLn+40,5,"Zahlbar durch",,,APS_ARIAL,6,APS_BOLD)
PsTextOut(pLn+43,5,"Pia-Maria Rutschmann-Schnyder",,,APS_ARIAL,8)
PsTextOut(pLn+46,5,"Grosse Marktgasse 28",,,APS_ARIAL,8)
PsTextOut(pLn+49,5,"9400 Rorschach",,,APS_ARIAL,8)
PsTextOut(pLn+68,5,"Wõhrung",,,APS_ARIAL,6,APS_BOLD)
PsTextOut(pLn+68,18,"Betrag",,,APS_ARIAL,6,APS_BOLD)
PsTextOut(pLn+72,5,"CHF",,,APS_ARIAL,8)
PsTextOut(pLn+72,18,"2500.25",,,APS_ARIAL,8)
PsTextOut(pLn+80,40,"Annahmestelle",,,APS_ARIAL,7,APS_BOLD)
ENDDOC
Return NIL