PDF-ShellTools > General
Displaying PDF Page Size in Windows Explorer
nightslayer23:
--- Quote from: RTT on May 24, 2017, 11:40:40 PM ---
--- Quote from: nightslayer23 on May 24, 2017, 03:38:32 AM ---How do we get it to display the dimensions in the correct orientation..?
I want say, A1's that are Portrait to display as: 594 x 841 and A1's that are Landscape to display as 841 x 594..
--- End quote ---
In the above script, change the lines
var w = Math.min(Page.Width, Page.Height);
var h = Math.max(Page.Width, Page.Height);
to
var w = Page.Width;
var h = Page.Height;
--- End quote ---
thank you. I did do this already, kind of worked. Sometimes it works, sometimes not. Must be some glitch where if a pdf has been rotated to landscape, it takes on the original length and width and not the update rotation. I wanted to be able to differentiate Landscape and Portrait files from one another but it doesn't seem possible for some reason.
RTT:
--- Quote from: nightslayer23 on May 25, 2017, 06:08:04 AM ---
--- Quote ---And show this info in a Windows Explorer column? How to format such data?
--- End quote ---
Commas?
A1,A4,A3 etc.
--- End quote ---
A quick modification of the included "List paper sizes used" sample script for you to play.
--- Code: ---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++) {
ProgressBar.position = i + 1;
pdfe.echo('Processing ' + pdfe.SelectedFiles(i).Filename);
var PaperSizes = {};
var Pages = pdfe.SelectedFiles(i).Pages;
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.Size += ' (' + PaperSize.width + 'x' + PaperSize.height + ')';
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;
}
}
}
}
//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;
});
//output results
pdfe.echo(pdfe.SelectedFiles(i).Filename, 0, 2);
pdfe.echo(' Size details:');
for (var n = 0; n < PaperSizes.length; n++) {
pdfe.echo(' ' + PaperSizes[n].Size + ' = ' + PaperSizes[n].count);
}
var sizesStr='';
for (var n = 0; n < PaperSizes.length; n++) {
sizesStr=sizesStr+PaperSizes[n].Size+',';
}
pdfe.echo(' Sizes list: ' + sizesStr.substr(0,sizesStr.length-1));
}
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;
}
--- End code ---
RTT:
--- Quote from: nightslayer23 on May 25, 2017, 06:17:51 AM ---Sometimes it works, sometimes not. Must be some glitch where if a pdf has been rotated to landscape, it takes on the original length and width and not the update rotation. I wanted to be able to differentiate Landscape and Portrait files from one another but it doesn't seem possible for some reason.
--- End quote ---
Indeed, the page width/height properties are not taking into account the page rotation! I will have this fixed in the next release.
Meanwhile, you can also check the page rotation:
if (Page.Rotation == 90 || Page.Rotation == 270) {
var w = Page.Height;
var h = Page.Width;
} else {
var w = Page.Width;
var h = Page.Height;
}
nightslayer23:
--- Quote from: RTT on May 26, 2017, 12:46:26 AM ---
--- Quote from: nightslayer23 on May 25, 2017, 06:08:04 AM ---
--- Quote ---And show this info in a Windows Explorer column? How to format such data?
--- End quote ---
Commas?
A1,A4,A3 etc.
--- End quote ---
A quick modification of the included "List paper sizes used" sample script for you to play.
--- Code: ---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++) {
ProgressBar.position = i + 1;
pdfe.echo('Processing ' + pdfe.SelectedFiles(i).Filename);
var PaperSizes = {};
var Pages = pdfe.SelectedFiles(i).Pages;
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.Size += ' (' + PaperSize.width + 'x' + PaperSize.height + ')';
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;
}
}
}
}
//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;
});
//output results
pdfe.echo(pdfe.SelectedFiles(i).Filename, 0, 2);
pdfe.echo(' Size details:');
for (var n = 0; n < PaperSizes.length; n++) {
pdfe.echo(' ' + PaperSizes[n].Size + ' = ' + PaperSizes[n].count);
}
var sizesStr='';
for (var n = 0; n < PaperSizes.length; n++) {
sizesStr=sizesStr+PaperSizes[n].Size+',';
}
pdfe.echo(' Sizes list: ' + sizesStr.substr(0,sizesStr.length-1));
}
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;
}
--- End code ---
--- End quote ---
At what point do I modify this sorry to add the information to the metadata? I am trying but struggling :S
RTT:
--- Quote from: nightslayer23 on May 29, 2017, 03:42:27 AM ---At what point do I modify this sorry to add the information to the metadata? I am trying but struggling :S
--- End quote ---
You may replace the line
pdfe.echo(' Sizes list: ' + sizesStr.substr(0,sizesStr.length-1));
by:
--- Code: --- sizesStr = sizesStr.substr(0, sizesStr.length - 1);
var FileMetadata = pdfe.SelectedFiles(i).Metadata;
if (FileMetadata.PageSize !== sizesStr) {
FileMetadata.PageSize = sizesStr;
if (FileMetadata.CommitChanges()) {
pdfe.echo('(' + sizesStr + ') [OK]');
} else {
pdfe.echo('Set metadata property failed', 0xFF0000);
}
} else {
pdfe.echo('(' + sizesStr + ') [already set]');
}
--- End code ---
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version