[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste

Tabellenzeilen als einzelne Textrahmen

Hans Haesler
  
Beiträge gesamt: 5826

14. Sep 2018, 12:24
Bewertung:

gelesen: 3089

Beitrag als Lesezeichen
Hallo Faxinger,

ja, das hatte ich missverstanden. Doch mit convertToText() wird es nicht funktionieren.

Nachstehend das Script von 2014. So geändert, dass zuerst in jeder Reihe die Zellen vereint werden.

Code
//ZeilenZuRahmen_601d.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 ("Eine Tabelle auswählen.", "Achtung");
exit();
}

var curType = curSel[0].constructor.name;

if (curType == "Table") {
var curTable = curSel[0];
}
else {
alert ("Eine Tabelle auswählen.", "Stop");
exit();
}

// in jeder Reihe die Zellen vereinen
var allRows = curTable.rows;
var nRows = allRows.length;
for (var r=nRows-1; r>-1; r--) {
allRows[r].cells[0].merge(allRows[r].cells.itemByRange(1,-1));
}

// die Suchen/Ersetzen-Preferences löschen
app.findTextPreferences = app.changeTextPreferences = null;

// die Returns durch Tabs ersetzen
app.findTextPreferences.findWhat = "\r";
app.changeTextPreferences.changeTo = "\t";
curTable.changeText();

// die Suchen/Ersetzen-Preferences löschen
app.findTextPreferences = app.changeTextPreferences = null;

// die Ebene "Zeilen" erzeugen
var cellsLayer = curDoc.layers.item("Zeilen");
try {
cellsLayer.locked = false;
}
catch (e){
cellsLayer = curDoc.layers.add({name:"Zeilen"});
}
app.activeWindow.activeLayer = cellsLayer;

// 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;

// 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();

Dabei wird als Trenner zwischen den Zellen-Inhalten automatisch ein Return eingefügt. Damit die Höhe der Reihe erhalten bleibt, werden die Returns durch Tabs ersetzt.

Versuche es bitte mal mit dieser Lösung.

Gruss, Hans

(Dieser Beitrag wurde von Hans Haesler am 14. Sep 2018, 13:38 geändert)
Änderungsverlauf:
Beitrag geändert von Hans Haesler (Veteran) am 14. Sep 2018, 13:38

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
17.04.2024

Online
Mittwoch, 17. Apr. 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!