-
1. Re: JS Check if a page has section prefix set
John.Kordas Jun 29, 2010 8:55 PM (in response to John.Kordas)I must be missing something.
If I use either of the options below I get 23 returning in my console.
app.activeDocument.pages.item("Sec1:23").name
app.activeDocument.pages.itemByName("Sec1:23").name
So if the name is 23 shouldn't app.activeDocument.pages.itemByName("23").name work?
-
2. Re: JS Check if a page has section prefix set
Harbs. Jun 29, 2010 10:26 PM (in response to John.Kordas)page.appliedSection.sectionPrefix
However, unless you specifically need the name, I would generally use the Page.documentOffset to identify a page.
Harbs
-
3. Re: JS Check if a page has section prefix set
John.Kordas Jun 29, 2010 11:43 PM (in response to Harbs.)Thanks Harbs,
The process I have allows the user to enter the page numbers they wish to send off. So for the example here a user may type in the dialog 21-23. Now the process I'm using to determine the pages is
mySplitResult would be 21,22,23.
for(var myCounter = 0; myCounter < mySplitResult.length; myCounter++){
try{
var myPageName = myDocument.pages.item(mySplitResult[myCounter]).name;
}
catch(e){When the script runs page 21 its fine and works, 22 is fine as there is no page 22 and its captured, but 23 is there and should work but because it has a section prefix it needs to be myDocument.pages.item("Sec1:"+mySplitResult[myCounter]).name; to work.
Is there a way around this?
-
4. Re: JS Check if a page has section prefix set
Kasyan Servetsky Jun 30, 2010 1:22 AM (in response to John.Kordas)Hi John,
Here is my idea how to solve this:
var pageRange = "21-23, 25, 28"; // user enters page numbers here the same way as in UI pageRange = pageRange.replace(/\s+/g, ""); var unrangedPages = Unrange(pageRange).split(","); var selectedPages = []; for (var i = 0; i < unrangedPages.length; i++) { var pageNumber = unrangedPages[i]; for (var p = 0; p < pages.length; p++) { var thePage = pages[p]; var pageName = thePage.name; if (pageName.search("Sec\\d+:" + pageNumber) != -1) { selectedPages.push(thePage); } } } for (var j = 0; j < selectedPages.length; j++) { var currentPage = selectedPages[j]; // Do something here $.writeln(currentPage.name); } function Unrange(s) { return s.replace (/(\d+)-(\d+)/g, Expand); } function Expand() { var expanded = []; var start = Number(arguments[1]); var stop = Number(arguments[2]); for (var i = start; i <= stop; i++) { expanded.push(i); } return expanded; }Kasyan
-
5. Re: JS Check if a page has section prefix set
John.Kordas Jun 30, 2010 4:05 PM (in response to Kasyan Servetsky)Thanks Kasyan,
I had to change
for (var p = 0; p < pages.length; p++) {
var thePage = pages[p];to
for (var p = 0; p < app.activeDocument.pages.length; p++) {
var thePage = app.activeDocument.pages[p];hope this was correct. I did not seem to get anything back in the console unless I changed
if (pageName.search("Sec\\d+:" + pageNumber) != -1) {to
if (pageName.search("Sec\\d+:" + pageNumber) == -1) {This would return
21
23
24
25
21
23
24
25
21
23
24
25
21
23
24
25
21
23
24
25
undefinedI can see that you are expanding the pages entered by the user and then doing a search to see if a Sec prefix has been applied. Is this correct? If that's correct then could you search for just the number and if it is there it doesn't matter what the prefix is as the user may enter any name they wish for the prefix. If I'm understanding this correctly I like the method.
Cheers John.
-
6. Re: JS Check if a page has section prefix set
John.Kordas Jun 30, 2010 8:03 PM (in response to John.Kordas)This seems to be working for me:
var pageIsArray = [];
var docArray = [];
var yesVals = [];
var noVals = [];
for(var loopPages = 0; loopPages < myDocument.pages.length; loopPages++){
docArray.push(myDocument.pages[loopPages].name);
}
for(var myCounter = 0; myCounter < mySplitResult.length; myCounter++){
if (docArray.toString().indexOf(mySplitResult[myCounter].toString()) != -1) {
yesVals.push(mySplitResult[myCounter]);
}else{
noVals.push(mySplitResult[myCounter]);
}
}
$.write("Doc "+docArray+"\n")
$.write("page "+pageIsArray+"\n")
$.write("Yes "+yesVals+"\n")
$.write("No "+noVals+"\n")
$.write("Split "+mySplitResult+"\n")Upon further testing I found that once I hit pg23 it starts giving me all the pages not just pg 23 and 24 and 25. Back to the drawing board.
-
7. Re: JS Check if a page has section prefix set
Kasyan Servetsky Jul 1, 2010 7:49 AM (in response to John.Kordas)John, I just forgot to copy-paste a couple of lines at top of the script. From my memory, It should be something like this:
var doc = app.activeDocument: var pages = doc.pages;
I tested it yesterday and it worked for me -- returned the selected pages in a document with section prefixes.
I guess that you use in you document prefixes in the following form: "Sec" + one or more digit + colon.
The script loops thru the selected pages (unrangedPages array) and searches a regular expression in the name of each page -- if it's found, the page is added to the selectedPages array.
I suppose that you need to keep the section prefixes -- if not, you can remove them by script like so:
aDoc = app.activeDocument; aDoc.sections.everyItem().sectionPrefix = ""; aDoc.sections.everyItem().includeSectionPrefix = false;
Regards,
Kasyan
-
8. Re: JS Check if a page has section prefix set
John.Kordas Jul 1, 2010 3:31 PM (in response to Kasyan Servetsky)Thanks Kasyan,
I think removing the prefix might be the best way to go. I have a feeling this might be a bug because if I run the following code for page 23:
app.activeDocument.pages.item(1).namethe console returns 23. So I then turn on the "Include prefix when numbering page" option in the numbering & section options panel and run the code again. This time I get Sec1:23. If I run your code it now returns Sec1:23 and Sec1:25.
The strange part is if I turn off the "Include prefix when numbering page" option and try the following code:
app.activeDocument.pages.itemByName ("23").nameI get Object is Invalid. If I run
app.activeDocument.pages.itemByName ("Sec1:23").name
It returns 23. Turn the option back on and then run the script again I get Sec1:23.So is this a bug should app.activeDocument.pages.itemByName ("23").name return 23 I've tried both CS3 and CS5 and get the same result. It does not make sense to me. So I think removing the prefix might be the only option.
Cheers, John
-
9. Re: JS Check if a page has section prefix set
Kasyan Servetsky Jul 3, 2010 1:42 AM (in response to John.Kordas)Yes, it's really weird to me that you always have to include section prefix when you are referencing page using itemByName() or item() — despite the fact that data browser shows name without prefix when "Include prefix when numbering page" is off.
Kasyan



