View Single Post
Old 11-21-2024, 01:17 PM   #16
Frenzie
Wizard
Frenzie ought to be getting tired of karma fortunes by now.Frenzie ought to be getting tired of karma fortunes by now.Frenzie ought to be getting tired of karma fortunes by now.Frenzie ought to be getting tired of karma fortunes by now.Frenzie ought to be getting tired of karma fortunes by now.Frenzie ought to be getting tired of karma fortunes by now.Frenzie ought to be getting tired of karma fortunes by now.Frenzie ought to be getting tired of karma fortunes by now.Frenzie ought to be getting tired of karma fortunes by now.Frenzie ought to be getting tired of karma fortunes by now.Frenzie ought to be getting tired of karma fortunes by now.
 
Posts: 1,763
Karma: 731681
Join Date: Oct 2014
Location: Antwerp
Device: Kobo Aura H2O
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");
Frenzie is offline   Reply With Quote