I was able to reach out to Adobe through my work. They mentioned it was an abnormal behavior for there to be over 100,000 lines of Document Ancestors, and thought it may be because it was a template. It turns out a lot of the art I work with has extensive lines of Ancestors, and when placing them into a completely new file, that file acquires them. A lot of these assets are CG renders, which too I would believe to be new files. While I'm not sure where the Document Ancestors originated, I was able to figure out how to eliminate them:
function deleteDocumentAncestorsMetadata() {
whatApp = String(app.name);//String version of the app name
if(whatApp.search("Photoshop") > 0) { //Check for photoshop specifically, or this will cause errors
//Function Scrubs Document Ancestors from Files
if(!documents.length) {
alert("There are no open documents. Please open a file to run this script.")
return;
}
if (ExternalObject.AdobeXMPScript == undefined) ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript");
var xmp = new XMPMeta( activeDocument.xmpMetadata.rawData);
// Begone foul Document Ancestors!
xmp.deleteProperty(XMPConst.NS_PHOTOSHOP, "DocumentAncestors");
app.activeDocument.xmpMetadata.rawData = xmp.serialize();
}
}
//Now run the function to remove the document ancestors
deleteDocumentAncestorsMetadata();
Adobe mentioned that these were meant for file forensics and did not contain any sensitive information. I also tested scripting this with a loop provided in one of the Javascript Reference Documents, and while it does successfully eliminate the ancestors without opening the file, it doesn't reduce the file size until it is opened, and saved again. So, it must be run before save on an open file and will incorporate easily into my save scripts. Problem solved! If you are new to scripting, copy the above lines into a plain text document(no formatting as it may not work) and change the extension to JSX. From there in Photoshop go to File>Scripts>Browse, and locate this script to run it on an open file. This can be tedious to do per file, so if you have to run on many, place the file in a stationary location, and record an action that runs this script. If you are unfamiliar, once the script is recorded you can batch this script on files by navigating File > Automate > Batch. As the file does need to be saved to eradicate the document ancestors, I recommend pairing your script action with a save as in a stationary location, as save as actions will remember the folder you saved to.
... View more