81
Ideas/Suggestions / Re: Filtering on Fields
« Last post by RTT on December 27, 2021, 06:32:40 PM »OK
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"
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');
Yes, still an active project.