This has some user set options at the top which may make it something others can use. Also should help with your position problem. Though its not perfect gets it close. it also does not set the actual document units, Still can't find that... let me know how it goes for you.
// Puts Selected items in a new document
// New Document Settings
var newDocSet = new DocumentPreset;
newDocSet.title = "My New Document"
var unit = "inch"; // keep to "inch" or "mm"
var width = "8.5";
var height = "11";
var color = "RGB"; // keep to "RGB" or "CMYK"
var reposition = "true"; // Set to true or false
//
var doc = app.activeDocument;
var art = doc.selection;
var newArt;
if(art.length > 0){
if(unit == "inch" || unit == "mm" && color == "RGB" || color == "CMYK"){
if(unit == "inch"){newDocSet.width = width * 72; newDocSet.height = height * 72; newDocSet.RulerUnits = "Inches";}
if(unit == "mm"){newDocSet.width = width * 2.834645; newDocSet.height = height * 2.834645; newDocSet.RulerUnits = "Millimeters";}
if(color == "RGB"){var newDoc = app.documents.addDocument(DocumentColorSpace.RGB,newDocSet);}
if(color == "CMYK"){var newDoc = app.documents.addDocument(DocumentColorSpace.CMYK,newDocSet);}
newDoc.rulerOrigin = [0,0];
for(var i = 0; i < art.length; i++){
var pos = art.visibleBounds;
art.selected = false;
newArt = art.duplicate(newDoc, ElementPlacement.PLACEATEND);
if (reposition == "true"){
var pos2 = newArt.visibleBounds;
var X = pos[0] - pos2[0];
var Y = pos[3] - pos2[3];
newArt.translate(X,Y, true, true, true, true);
}
}
}else{alert("Units or Colorspace not set correctly");}
}else{alert("nothing selected");}
... View more