//ZeilenZuRahmen_602d.js //© 14.09.2018 / Hans Haesler, Châtelard 52, CH-1018 Lausanne //DESCRIPTION:Tabellenzeilen in Textrahmen umwandeln // vorbeugenderweise das Anzeigen von Dialogen aktivieren app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll; // prüfen, ob ein Dokument geöffnet ist if (app.documents.length == 0) { alert ("Es ist kein Dokument offen.", "Achtung"); exit(); } // das aktuelle Dokument var curDoc = app.documents[0]; // die Auswahl speichern und prüfen curSel = app.selection; if (curSel.length == 0) { alert ("Einen Textrahmen auswählen.", "Achtung"); exit(); } var curType = curSel[0].constructor.name; if (curType == "TextFrame") { var targetFrame = curSel[0]; } else { if (curSel[0].hasOwnProperty("baseline")) { targetFrame = curSel[0].parentTextFrames[0]; } else { alert ("Einen Textrahmen auswählen.", "Achtung"); exit(); } } // die im Rahmen enthalte(n) Tabelle(n) var allTables = targetFrame.tables; var nTables = allTables.length; // die Suchen/Ersetzen-Preferences löschen app.findTextPreferences = app.changeTextPreferences = null; // Suchen/Ersetzen-Strings app.findTextPreferences.findWhat = "\r"; app.changeTextPreferences.changeTo = "\t"; // eine Schleife durch die Tabellen for (var t=nTables-1; t>-1; t--) { var curTable = allTables[t]; var allRows = curTable.rows; var nRows = allRows.length; // in jeder Reihe die Zellen vereinen for (var r=nRows-1; r>-1; r--) { allRows[r].cells[0].merge(allRows[r].cells.itemByRange(1,-1)); } // die Returns durch Tabs ersetzen curTable.changeText(); // dis absolute Seitennummer var p = curTable.parent.parentPage.documentOffset; // alle Zellen var allCells = curTable.cells; // eine Schleife durch die Zellen for (var c=0; c<allCells.length; c++) { var cH = allCells[c].height; // Höhe var cW = allCells[c].width; // Breite var yO = allCells[c].topInset; // Zellversatz oben var xO = allCells[c].leftInset; // Zellversatz links // der obere Zellenrand var y1 = (allCells[c].insertionPoints[0].baseline)-(yO*3)-0.25; // der linke Zellenrand var hP = (allCells[c].insertionPoints[0].horizontalOffset)-xO; var y2 = y1+cH; // der untere Rand var x2 = hP+cW; // der rechte Rand // den Textrahmen erzeugen var curFrame = curDoc.pages[p].textFrames.add({geometricBounds:[y1, hP, y2, x2], strokeColor:"None"}); // der Abstand des Textes zum Rahmen curFrame.textFramePreferences.insetSpacing = [yO, xO, 0, 0]; // versuchen, den Inhalt der Zelle zu kopieren und einzusetzen try { app.select(allCells[c].texts[0]); app.copy(); app.select(curFrame.insertionPoints[0]); app.paste(); } catch (e) { } } } // die Auswahl aufheben app.selection = null; // die Suchen/Ersetzen-Preferences löschen app.findTextPreferences = app.changeTextPreferences = null; // das Ende der Aktion verkünden var dlog = new Window("palette"); dlog.size = [320,100]; dlog.add("statictext", [80, 100, 320, 116], "Fertig."); dlog.show(); // eine kleine Pause $.sleep(999); // das Fenster schliessen dlog.close();
| 27.11.2023