Commit aa9f396b authored by Volker Krause's avatar Volker Krause
Browse files

Add VGN extractor script

Shows how to use a non-RCT2 U_TLAY payload in an UIC 918.3 barcode.
parent 2c1cb86d
......@@ -64,6 +64,8 @@
Copyright (c) 2019 Volker Krause <>
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
function parseBarcode(barcode)
var ticket = Barcode.decodeUic9183(barcode);
if (!ticket)
return null;
var res = JsonLd.newTrainReservation();
res.reservationNumber = ticket.pnr;
res.reservedTicket.ticketToken = "aztectBin:" + Barcode.toBase64(barcode); = ticket.ticketLayout.text(0, 0, 72, 1);
res.reservationFor.departureTime = JsonLd.toDateTime(ticket.ticketLayout.text(3, 0, 72, 1).match(/([\d\.: ]+)/)[1], "dd.MM.yyyy hh:mm", "de"); = ticket.ticketLayout.text(7, 0, 72, 1); = ticket.ticketLayout.text(8, 0, 72, 1);
return res;
function parsePdf(pdf) {
// try to find the UIC918.3 barcode
var images = pdf.pages[0].images;
for (var i = 0; i < images.length; ++i) {
var barcode = Barcode.decodeAztecBinary(images[i]);
if (barcode)
return parseBarcode(barcode);
return null;
"type": "pdf",
"filter": [
{ "property": "provider", "match": "3415" }
"script": "vgn.js",
"function": "parsePdf"
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment