Some quick experimentation shows that key and value seem to be reversed compared to the older version.
Code:
// tested in MuPDF 1.24.3
if (scriptArgs.length < 2) {
print("usage: mutool run dejavu.js input.pdf output.pdf");
quit();
}
var bgPix = new Pixmap(ColorSpace.DeviceGray, [0,0,1,1], false);
var fgPix = new Pixmap(ColorSpace.DeviceGray, [0,0,1,1], false);
bgPix.clear(255);
fgPix.clear(0);
var doc = new PDFDocument(scriptArgs[0]);
var bgImg = doc.addImage(new Image(bgPix));
for (var i = 0; i < doc.countPages(); ++i) {
var page = doc.findPage(i);
page.Resources.XObject.forEach(function (xobj, name) {
var mask = xobj.SMask;
if (mask) {
// In newer versions this seems to say "Error: truncated jbig2 segment header"
// var fgImg = doc.addImage(new Image(fgPix, doc.loadImage(mask)));
// Quick workaround for the above problem
var fgImg = doc.graftObject(mask);
page.Resources.XObject[name] = fgImg;
} else {
page.Resources.XObject[name] = bgImg;
}
});
}
doc.save(scriptArgs[1], "garbage=compact,compress");