PDF Merge Layer - Join Layer with same name
- July 15, 2024
- 2 replies
- 1985 views
Hi!
I merged single page PDFs, all with the same Layer structure. After merged the document has for every page its own Layergoup and inside the layers. I like to merge the Layer with the same name to a single layer, to switch on/off the elements over the whole document with one click instead to switch every layer on every page. Here is a script which nearly does what i what. It merge the layers but when i switch visibility form a layer it only changes on page 1. It seems the the element on the other pages get "layerless". I cant hide them any more. Please can anybody help me. Here is the script and a demo file:
var ocgs = this.getOCGs();
var layers = {};
var newOrder = [];
// Funktion, um alle Ebenen sichtbar zu machen
function makeAllLayersVisible() {
for (var i = 0; i < ocgs.length; i++) {
var ocg = ocgs[i];
ocg.state = true; // Setzt jede Ebene auf sichtbar
}
}
// Funktion, um Ebenen zu kombinieren
function combineLayers() {
for (var i = 0; i < ocgs.length; i++) {
var ocg = ocgs[i];
var name = ocg.name;
if (!layers[name]) {
layers[name] = ocg;
newOrder.push(ocg);
} else {
// Kombinieren von Zuständen und Kindern
var existingOCG = layers[name];
if (ocg.state !== undefined) {
existingOCG.state = ocg.state || existingOCG.state;
}
if (ocg.children) {
if (!existingOCG.children) {
existingOCG.children = [];
}
for (var j = 0; j < ocg.children.length; j++) {
existingOCG.children.push(ocg.children[j]);
}
}
}
}
// Setze alle Ebenen auf sichtbar, falls sie nicht schon sichtbar sind
for (var key in layers) {
if (layers.hasOwnProperty(key)) {
layers[key].state = true;
}
}
}
// Alle Ebenen zuerst sichtbar machen
makeAllLayersVisible();
// Ebenen kombinieren
combineLayers();
// Neue Reihenfolge der Ebenen setzen
this.setOCGOrder(newOrder);
console.println("Layers combined successfully and set to visible.");
