Skip to main content
Participant
August 30, 2021
Answered

Qr code web hyperlink to hyperlink for interactive pdf.

  • August 30, 2021
  • 1 reply
  • 2210 views

Hello,

I'm creating a catalog in indesign. It's finished and about 800 pages. I just got asked to make it interactive. We have qr codes included on almost all the pages. I would like to ask if somebody knows if its possible to script a action to create a hyperlink from the currently used qr code web hyperlink 

What legendary scripter can help me with this 🙂

Thanks in advance!

Correct answer Sunil Yadav

Just Put a try catch block for exception handling, that will take of things.

//=======================================
addHyperlinkQRCode();
function addHyperlinkQRCode(){
    var myDoc = app.documents[0];
    for(var i = 0; i < myDoc.pages.length; i++){
        for(var p = 0; p < myDoc.pages[i].pageItems.length; p++){
            try{
                if(myDoc.pages[i].pageItems[p].epss.length > 0){
                    var QRCode = getHyperlinkQRCode(myDoc.pages[i].pageItems[p].epss[0]);
                    if(QRCode != null){
                        myDoc.pages[i].pageItems[p].createHyperlinkQRCode(QRCode);
                        var src=myDoc.hyperlinkPageItemSources.add(myDoc.pages[i].pageItems[p]);
                        var dest = myDoc.hyperlinkURLDestinations.add(QRCode);
                        myDoc.hyperlinks.add(src, dest);
                        }
                    }
                }
            catch(e){}
            }
        }
    }
//=======================================
function getHyperlinkQRCode(QRCodeObject){
    try{
        var idmsFile = File (Folder.temp+"/~QR.idms");
        QRCodeObject.exportFile(ExportFormat.INDESIGN_SNIPPET, idmsFile);
        idmsFile.encoding = "UTF-8";
        idmsFile.open("r");
        var allData = new XML (idmsFile.read());
        idmsFile.close();
        idmsFile.remove();
        var qrcode = allData..HyperlinkQRCode.@UrlLink;
        if(qrcode.length() == 1) {
            return qrcode.toString();
            }
        else{
            null;
            }
        }
    catch(e){
        return null;
        }
    }
//=======================================

Best

Sunil

1 reply

Sunil Yadav
Legend
September 1, 2021

To add the hyperlink on QR code itself, so that while just onclick it should jump, you can give it a shot to below snippet :

//=======================================
addHyperlinkQRCode();
function addHyperlinkQRCode(){
    var myDoc = app.documents[0];
    for(var i = 0; i < myDoc.pages.length; i++){
        for(var p = 0; p < myDoc.pages[i].pageItems.length; p++){
            if(myDoc.pages[i].pageItems[p].epss.length > 0){
                var QRCode = getHyperlinkQRCode(myDoc.pages[i].pageItems[p].epss[0]);
                if(QRCode != null){
                    myDoc.pages[i].pageItems[p].createHyperlinkQRCode(QRCode);
                    var src=myDoc.hyperlinkPageItemSources.add(myDoc.pages[i].pageItems[p]);
                    var dest = myDoc.hyperlinkURLDestinations.add(QRCode);
                    myDoc.hyperlinks.add(src, dest);
                    }
                }
            }
        }
    }
//=======================================
function getHyperlinkQRCode(QRCodeObject){
    try{
        var idmsFile = File (Folder.temp+"/~QR.idms");
        QRCodeObject.exportFile(ExportFormat.INDESIGN_SNIPPET, idmsFile);
        idmsFile.encoding = "UTF-8";
        idmsFile.open("r");
        var allData = new XML (idmsFile.read());
        idmsFile.close();
        idmsFile.remove();
        var qrcode = allData..HyperlinkQRCode.@UrlLink;
        if(qrcode.length() == 1) {
            return qrcode.toString();
            }
        else{
            null;
            }
        }
    catch(e){
        return null;
        }
    }
//=======================================

Best

Sunil

Joeri5E20Author
Participant
September 1, 2021

Hi Sunil!

Thanks for the snippet, but unfortunately it is not working. I'm getting an error.
See the attachment for the window error.

I hope this doesn't take to much time to find a fix for this!
Thanks alot for the effort!

Best 
Joeri

Sunil Yadav
Sunil YadavCorrect answer
Legend
September 1, 2021

Just Put a try catch block for exception handling, that will take of things.

//=======================================
addHyperlinkQRCode();
function addHyperlinkQRCode(){
    var myDoc = app.documents[0];
    for(var i = 0; i < myDoc.pages.length; i++){
        for(var p = 0; p < myDoc.pages[i].pageItems.length; p++){
            try{
                if(myDoc.pages[i].pageItems[p].epss.length > 0){
                    var QRCode = getHyperlinkQRCode(myDoc.pages[i].pageItems[p].epss[0]);
                    if(QRCode != null){
                        myDoc.pages[i].pageItems[p].createHyperlinkQRCode(QRCode);
                        var src=myDoc.hyperlinkPageItemSources.add(myDoc.pages[i].pageItems[p]);
                        var dest = myDoc.hyperlinkURLDestinations.add(QRCode);
                        myDoc.hyperlinks.add(src, dest);
                        }
                    }
                }
            catch(e){}
            }
        }
    }
//=======================================
function getHyperlinkQRCode(QRCodeObject){
    try{
        var idmsFile = File (Folder.temp+"/~QR.idms");
        QRCodeObject.exportFile(ExportFormat.INDESIGN_SNIPPET, idmsFile);
        idmsFile.encoding = "UTF-8";
        idmsFile.open("r");
        var allData = new XML (idmsFile.read());
        idmsFile.close();
        idmsFile.remove();
        var qrcode = allData..HyperlinkQRCode.@UrlLink;
        if(qrcode.length() == 1) {
            return qrcode.toString();
            }
        else{
            null;
            }
        }
    catch(e){
        return null;
        }
    }
//=======================================

Best

Sunil