Skip to main content
Feb 6, 2019 3:41 PM UTC
Question

Set page Label without numbering style

Is it possible to apply a page label without numbering style like we can using style "none" with page numbering in Acrobat?

var labels = "4, 9, 13";

var labelsplit = labels.split(", ");

if (labelsplit.length == this.numPages) {

    for (var i=0; i<this.numPages; i++) {

            this.setPageLabels(i, ["D", "", labelsplit]);

            //this.setPageLabels(i, ["r", "", labelsplit]);

            //this.setPageLabels(i, [ "A", "C4-Lot", 4])

    }

}

My problem is if my labels contain something else than integer...

For a label like "C4-LotD" I would have to evaluate if the last letter is upper case and then "D" is the fourth letter of alphabetical order to come out with:

this.setPageLabels(i, [ "A", "C4-Lot", 4])

Label not ending by alphanumeric character will be a problem. Maybe another way to label pages?

This topic is closed to new replies. Start a new post to keep the conversation going.

4 replies

BarlaeDC
Community Expert
Community Expert
Feb 7, 2019 4:04 PM UTC

Hi,

Are the page label endings predictable, i.e. they are a known set of characters that are allowed or are all characters allowed?

Regards

Malcolm

Translate
Feb 12, 2019 5:24 PM UTC

After research chance are that labels will end by alphanumerical characters. The only way I found to get a label otherwise is to use Acrobat and put numbering style to "none". This way suggest to label each page one by one which should be rare.

For now i will deal with non-alphanumerical character by adding a "1" and the end. So I will use:

var labels = "I,II,1,2,A,B,@_!";

labelsplit = labels.split(",");

var pageLabel = "";

var prefix = "";

var nStart = 1

if (labelsplit.length == this.numPages) {

    for (var i=0; i<this.numPages; i++) {

            pageLabel = labelsplit;

            mDecimal = pageLabel.match(/\d+$/);

        if (mDecimal) {

            nStart = mDecimal[0];

            prefix = pageLabel.slice(0, mDecimal[0].length*-1);

            this.setPageLabels(i, ["D", prefix, nStart]);

        }

        else{

            prefix = pageLabel.slice(0, -1);

            charAsNumber = pageLabel.charCodeAt((pageLabel.length - 1));

            if (charAsNumber > 64 && charAsNumber < 91) {

                 //is uppercase letter

                this.setPageLabels(i, [ "A", prefix, charAsNumber -= 64])

            }

            else if (charAsNumber > 96 && charAsNumber < 123) {

            //is lowercase letter

                this.setPageLabels(i, [ "a", prefix, charAsNumber -= 96])

            }

            else{

                //dealing with non-alphanumeric ending, for now add at numbering "1"

                this.setPageLabels(i, [ "D", pageLabel, 1])

            }

        }

    }

}

Is there a way to label a page without numbering style?

Translate
Feb 7, 2019 2:30 PM UTC

Thanks, I did'nt know that method. My idea for resolving the char number was to create an array A-Z then do a find to retreive the index number. Still don't know how resolving Label not ending by alphanumeric character...

Translate
BarlaeDC
Community Expert
Community Expert
Feb 6, 2019 4:10 PM UTC

Hi,

I don't know if pages labels can be created as you want but working out which number a letter is, is pretty trivial, you could just use.

var pageLabel = "C4-LotD";

// make string uppercase, get last char

var charAsNumber = pageLabel.toUpperCase().charCodeAt((pageLabel.length - 1));

// subtract 64 as that is the start ( well 1 less than an A in ASCII )

charAsNumber -= 64;

this would set the string as a number, no matter if it was uppercase or lowercase, you would get the same number ( I am making the assumption that is what you want)

Caveat: wont work with extended chars.

Regards

Malcolm

Translate