[GastForen Programmierung/Entwicklung AppleScript InDesign - auf welcher Seite befindet sich die Tabellenzelle

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

InDesign - auf welcher Seite befindet sich die Tabellenzelle

Anonym
Beiträge gesamt: 22827

22. Mai 2003, 21:53
Beitrag # 1 von 2
Bewertung:
(938 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Hans,

vielen Dank für dein Angebot. Ich nehme es natürlich dankend an.

Das Problem ist wie folgt: Ich habe eine Messekatalog-Datenbank mit vielen Adressen, die ich in eine Tabelle einfließen lasse und dementsprechend formatiere. Alles mit einem Fließtext über viele Seiten laufend. Das funktioniert auch alles einwandfrei. Jetzt möchte ich aber noch nach Warengruppen publizieren und einen Überbegriff (die jeweilige Warengruppe) setzen, die dann die gewünschten Adressen beeinhaltet. Das funktioniert auch alles einwandfrei, jedoch hab ich das Problem, das ich nicht prüfen kann, ob sich der Überbegriff und die darauffolgende Adresse auf der gleichen Seite befindet. Ich will ausschließen, das die Warengruppe auf der einen Seite steht und die Adresse auf der anderen.
Wenn ich mir die Referenz zur Zelle, Spalte oder Tabelle geben lasse, erhalte ich immer den Anfangspunkt. d.h. immer Seite 1. Die Zelle befindet sich aber auf Seite 37. Somit kann ich nicht prüfen wo sich diese Zellen befinden. Ich wollte dann jeweils eine neue Tabelle für jede Warengruppe beginnen, aber habe ja dann wieder das gleiche Problem. Ich hab noch überlegt, für den Überbegriff und die folgenden Adressen jeweils eine eigene Tabelle zu setzen und dann die Tabellen-Seiten abzufragen. Das wäre eine Möglichkeit, aber nicht wünschenswert. Ich dachte auch an eine Option, den Überbegriff auf der nächsten Seite nochmals anzeigen zu lassen, aber das ist ja noch problematischer, da ich einen Tabellen-Fleckenteppich bekomme. Ich habe so um die 200 Warengruppen, die dann "n" Adressen beinhalten.

Vielleicht hast Du ja einen Ansatz, der mein Problem löst. Wie sieht es da eigentlich mit Quark 5.01 aus? Welche Infos bekommt man da? Kann man da die tatsächliche Seite auslesen?

Ole hat mir bestätigt, das die Zellenposition nicht abgefragt werden kann, da immer die Startposition zurückgegeben wird. Er hat mir eben geraten, das VB-Script in meine Lösung einzubauen, aber leider weiß ich nicht, was darin enthalten sein könnte.

happy filemaking


Armin
X

InDesign - auf welcher Seite befindet sich die Tabellenzelle

Hans Haesler
  
Beiträge gesamt: 5826

26. Mai 2003, 15:24
Beitrag # 2 von 2
Beitrag ID: #418159
Bewertung:
(937 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Armin,

also... ich kenne mich überhaupt nicht mit Visual Basic aus. Trotzdem studierte ich Uncle Ole's Code
und kann nun sagen, dass er Dir nicht viel nützen wird. Hier in groben Zügen, was er enthält:

Zuerst wird eine Referenz zu einer Musterzelle geholt, dann wird ein Suchstring bestimmt: "!!". Dieser
Suchstring wird in die Musterzelle eingesetzt. Anschliessend wird der Handler zum Suchen dieses Strings
aufgerufen. Mit einer Repeat-Schleife wird jede Seite abgefragt, der Textrahmen (Ole's Script sieht mehrere
Textrahmen pro Seite vor) der aktuellen Seite wird dupliziert, damit darin nach dem String gesucht werden
kann. Wenn in einem Rahmen nichts gefunden wird, dann wird der Rahmen wieder gelöscht und zur nächsten Seite
übergegangen. Sobald der String gefunden ist, weiss man auch auf welcher Seite sich die Zelle befindet.

Schön und gut aber äusserst schwerfällig. Zudem gibt es zwei Probleme. Erstens kann man so einen Überbegriff,
welcher unten auf der Seite steht, nicht finden. Und zweitens ist das Resultat mit dem 'search'-Befehl immer
dasselbe. Egal, ob der verkettete Textrahmen adressiert wird oder dessen temporäres Duplikat.

Der Suchbefehl (in einer Repeatschleife, werden die Seiten natürlich mit einer Zählervariablen adressiert):
---
tell document 1 of application "InDesign 2.0.2"
  search for "!!" in text 1 of text frame 1 of page 1
end tell
---

Ich habe versucht, das Problem anders anzupacken: Mit einer Repeat-Schleife werden alle Reihen abgefragt.
Dabei wird der vertikale Wert der Grundline des Textes der Zelle 2 der aktuellen Reihe in eine Variable
gesetzt. Dieser Wert mit jenem der vorhergehenden Zelle verglichen:
---
set p to 0
set prevVal to 0
tell document 1 of application "InDesign 2.0.2"
  activate
  tell page 1
    tell text frame 1
      tell table 1
        repeat with i from 1 to count rows
          tell row i
            try
              tell cell 2
                tell text 1
                  set actVal to baseline of line 1
                  if (prevVal - actVal) > 100 then
                    set p to p + 1
                    set okay to my getPointSize(i)
                    if okay = 1 then my modHeight(p, prevVal)
                  end if
                end tell
              end tell
            end try
          end tell
          set prevVal to actVal
        end repeat
      end tell
    end tell
  end tell
  display dialog "Fertig." buttons "OK" default button 1 with icon 1
end tell
---
Der aktuelle Wert wird bei jedem Umgang der Variablen 'prevVal' übergeben. Wenn das Resultat von 'prevVal
minus actVal' grösser als 100 ist, dann bedeutet dies, dass die Zelle auf einer neuen Seite steht. Der Zähler
'p' wird um eins erhöht. Im Handler 'getPointSize()' wird festgestellt, ob der Schriftgrad der vorhergehenden
Zelle 15 pt beträgt. Ist dies der Fall, dann wird der Wert '1' zurückgegeben und mit dem Handler 'modHeight()'
die Höhe des Textframes gekürzt: auf die Position der Grundlinie des Überbegriffs minus 3 mm, damit dieser auf
die nächste Seite verschoben wird.

Ich werde Dir das ganze Script zusenden. Dann hoffe ich, dass es sich auch im Echt-Einsatz so gut bewährt,
wie hier mit einem kleinen Testdokument.

Hans Haesler, hsa@ringier.ch


als Antwort auf: [#418158]

Aktuell

InDesign / Illustrator
MTT_300x300_11_2022

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!