A modification of a previous script, that fills the PageSize property with the list of paper sizes, that now also calculates the PageOrientation property checking all the pages.
STDSizes=[
{'Size': 'A0','width':841,'height':1189},
{'Size': 'A1','width':594,'height':841},
{'Size': 'A2','width':420,'height':594},
{'Size': 'A3','width':297,'height':420},
{'Size': 'A4','width':210,'height':297},
{'Size': 'A5','width':148,'height':210},
{'Size': 'A6','width':105,'height':148},
{'Size': 'A7','width':74,'height':105},
{'Size': 'A8','width':52,'height':74},
{'Size': 'A9','width':37,'height':52},
{'Size': 'A10','width':26,'height':37},
{'Size': 'B0','width':1000,'height':1414},
{'Size': 'B1','width':707,'height':1000},
{'Size': 'B2','width':500,'height':707},
{'Size': 'B3','width':353,'height':500},
{'Size': 'B4','width':250,'height':353},
{'Size': 'B5','width':176,'height':250},
{'Size': 'B6','width':125,'height':176},
{'Size': 'B7','width':88,'height':125},
{'Size': 'B8','width':62,'height':88},
{'Size': 'B9','width':44,'height':62},
{'Size': 'B10','width':31,'height':44},
{'Size': 'C0','width':917,'height':1297},
{'Size': 'C1','width':648,'height':917},
{'Size': 'C2','width':458,'height':648},
{'Size': 'C3','width':324,'height':458},
{'Size': 'C4','width':229,'height':324},
{'Size': 'C5','width':162,'height':229},
{'Size': 'C6','width':114,'height':162},
{'Size': 'C7','width':81,'height':114},
{'Size': 'C8','width':57,'height':81},
{'Size': 'C9','width':40,'height':57},
{'Size': 'C10','width':28,'height':40},
{'Size': '4A0','width':1682,'height':2378},
{'Size': '2A0','width':1189,'height':1682},
{'Size': 'Letter','width':215.9,'height':279.4},
{'Size': 'Legal','width':215.9,'height':355.6},
{'Size': 'Junior Legal','width':203.2,'height':127},
//{'Size': 'Ledger','width':432,'height':279},
{'Size': 'Tabloid','width':279,'height':432},
{'Size': 'PA4','width':210,'height':280},
{'Size': 'Arch A','width':229,'height':305},
{'Size': 'Arch B','width':305,'height':457},
{'Size': 'Arch C','width':457,'height':610},
{'Size': 'Arch D','width':610,'height':914},
{'Size': 'Arch E','width':914,'height':1219},
{'Size': 'Arch E1','width':762,'height':1067},
{'Size': 'Arch E2','width':660,'height':965},
{'Size': 'Arch E3','width':686,'height':991},
{'Size': '2R','width':64,'height':89},
{'Size': 'LD,DSC','width':89,'height':119},
{'Size': '3R,L','width':89,'height':127},
{'Size': 'LW','width':89,'height':133},
{'Size': 'KGD','width':102,'height':136},
{'Size': '4R,KG','width':102,'height':152},
{'Size': '2LD,DSCW','width':127,'height':169},
{'Size': '5R,2L','width':127,'height':178},
{'Size': '2LW','width':127,'height':190},
{'Size': '6R','width':152,'height':203},
{'Size': '8R,6P','width':203,'height':254},
{'Size': 'S8R,6PW','width':203,'height':305},
{'Size': '11R','width':279,'height':356},
{'Size': 'A3+,Super B','width':330,'height':483}
];
STDSizes.sort(function(a, b) {
return (a.height > b.height) ? -1 : ((b.height > a.height) ? 1 : 0);
});
var ProgressBar = pdfe.ProgressBar;
ProgressBar.max = pdfe.SelectedFiles.Count;
var eps = 1; //size compare tolerance [mm]
for (var i = 0; i < pdfe.SelectedFiles.Count; i++) {
var PaperSizes = {};
var File = pdfe.SelectedFiles(i);
var Pages = File.Pages;
var PortraitCount = 0;
var LandscapeCount = 0;
ProgressBar.position = i + 1;
pdfe.echo(File.Filename);
if (Pages.Count > 0) {
for (var ii = 0; ii < Pages.Count; ii++) {
var Page = Pages(ii);
if (Page) {
var w = Math.min(Page.Width, Page.Height);
var h = Math.max(Page.Width, Page.Height);
for (var n = 0; n < STDSizes.length; n++) {
hdif = h - STDSizes[n].height;
if (Math.abs(hdif) < eps && Math.abs(w - STDSizes[n].width) < eps) {
SizeID = STDSizes[n].Size;
if (!PaperSizes[SizeID]) {
var PaperSize = clone(STDSizes[n]);
PaperSize['count'] = 1;
PaperSizes[SizeID] = PaperSize;
} else {
PaperSizes[SizeID].count += 1;
}
break;
} else if (hdif > 0) { //stop search if page height>current stdSize height
var SizeID = w.toFixed() + 'x' + h.toFixed();
var PaperSize = {
'Size': SizeID,
'width': Math.floor(w * 10) / 10,
'height': Math.floor(h * 10) / 10,
'notStd': true
}
STDSizes.splice(n, 0, PaperSize);
PaperSize['count'] = 1;
PaperSizes[SizeID] = PaperSize;
break;
}
}
(Page.Height > Page.Width) ? PortraitCount++ : LandscapeCount++;
}
}
//sort descending by page size count. Standard sizes and higher heights first
PaperSizes = sortObj(PaperSizes, function(a, b) {
if (a['notStd'] == b['notStd']) {
return (a.count > b.count) ? -1 : ((b.count > a.count) ? 1 : (a.height > b.height) ? -1 : ((b.height > a.height) ? 1 : 0));
} else if (!a['notStd']) return -1;
return 1;
});
var FileMetadata = File.Metadata;
var Changed = false;
var sizesStr = '';
for (var n = 0; n < PaperSizes.length; n++) {
sizesStr = sizesStr + PaperSizes[n].Size + ',';
}
sizesStr = sizesStr.substr(0, sizesStr.length - 1);
if (FileMetadata.PageSize !== sizesStr) {
FileMetadata.PageSize = sizesStr;
Changed = true;
}
var PageOrientationStr = 'Portrait';
if (PortraitCount && LandscapeCount) PageOrientationStr = 'Mixed'
else if (LandscapeCount) PageOrientationStr = 'Landscape';
if (FileMetadata.PageOrientation !== PageOrientationStr) {
FileMetadata.PageOrientation = PageOrientationStr;
Changed = true;
}
if (Changed) {
if (FileMetadata.CommitChanges()) {
pdfe.echo(' (Paper sizes: ' + sizesStr + ' - Orientation: ' + PageOrientationStr + ') [OK]');
} else {
pdfe.echo(' [commit changes failed]', 0xFF0000);
}
} else {
pdfe.echo(' (Paper sizes: ' + sizesStr + ' - Orientation: ' + PageOrientationStr + ') [properties already set]');
}
} else {
pdfe.echo(' [not a PDF or has no pages]', 0xFF0000);
}
}
pdfe.echo("Done");
//======================================================================
function clone(obj) {
if (obj == null || typeof(obj) != 'object') return obj;
var temp = new obj.constructor();
for (var key in obj)
temp[key] = clone(obj[key]);
return temp;
}
function sortObj(object, sortFunc) {
var rv = [];
for (var k in object) {
if (object.hasOwnProperty(k)) {
rv.push(object[k]);
}
}
rv.sort(sortFunc);
return rv;
}