41
Ideas/Suggestions / Re: Comments Flattener
« Last post by RTT on December 27, 2021, 06:31:23 PM »is this also possible for tapping into Acrobat's preflight options?Sure, but you will need to create a custom preflight profile to include that fixup. It seems only profiles can be executed from Acrobat javascript.
Preflight > "Discard hidden layer content and flatten visible layers"
Create a new preflight profile, give it that "Discard hidden layer content and flatten visible layers" name (so the next script can find it) and add that fixup to it.
You can use the next PDF-ShellTools script to run it.
Code: [Select]
var oPreflight;
var app = pdfe.CreateObject("AcroExch.App");
var baseDoc = pdfe.CreateObject("AcroExch.PDDoc");
if (baseDoc.create()) {
var JSObject = baseDoc.getJSObject();
if (JSObject) {
JSObject.addScript("getPreflightObj", "function getPreflightObj(){return Preflight}");
oPreflight = JSObject.getPreflightObj();
JSObject.removeScript('getPreflightObj');
if (oPreflight != undefined) {
pdfe.echo('Loading preflight profile');
oProfile = oPreflight.getProfileByName('Discard hidden layer content and flatten visible layers');
if (oProfile) {
pdfe.echo(" [OK]", 0, 1);
} else {
pdfe.echo(" [not found]", 0xFF0000, 1);
}
}
}
baseDoc.Close();
}
if (oProfile) {
var ProgressBar = pdfe.ProgressBar;
ProgressBar.max = pdfe.SelectedFiles.Count;
for (var i = 0; i < pdfe.SelectedFiles.Count; i++) {
try {
ProgressBar.position = i + 1;
var FileObj = pdfe.SelectedFiles(i);
var FullPathFilename = FileObj.Filename;
FileObj.Close();
pdfe.echo('Processing: ' + FullPathFilename);
baseDoc.Open(FullPathFilename);
try {
var JSObject = baseDoc.getJSObject();
if (JSObject) {
var PreflightResult = JSObject.preflight(oProfile);
if (PreflightResult.numFixed > 0) {
baseDoc.Save(1, FullPathFilename);
pdfe.echo(" [OK]", 0, 1);
} else {
pdfe.echo(" [fixup(s) not applied]", 0, 1);
}
}
} catch (err) {
pdfe.echo(FullPathFilename + ': ' + err, 0xFF0000, 2);
pdfe.echo(' ');
}
baseDoc.Close();
} catch (err) {
pdfe.echo(err, 0xFF0000);
pdfe.echo(' ');
}
}
}
app.Exit();
pdfe.echo('Done');