Connect failed: Connection timed out

[GastForen Programmierung/Entwicklung AppleScript pdf Auszüge in Indesign platzieren

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

pdf Auszüge in Indesign platzieren

jekyll
Beiträge gesamt: 2047

16. Nov 2017, 01:52
Beitrag # 1 von 23
Bewertung:
(7426 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Allerseits,
ich versuche pdf Auszüge in Indesign auf eine Bogen zu platzieren.
Leider komme ich nicht weiter bei der Anordnung die Auszüge.
Kann mir jemand auf die Sprünge helfen?
hier mein code:
Code
set ctSwatches to 12 
set pdfDok to "macHd:wbf:test2.pdf" as string
set pdfBreite to 280
set pdfHoehe to 220.7
set inddBreite to 450
set breiteOft to round (inddBreite / pdfBreite) rounding down
set hoeheOft to round (inddBreite / pdfHoehe) rounding down
set pdfHoeheZ to round (ctSwatches / breiteOft) rounding down
if pdfHoeheZ * breiteOft is less than ctSwatches then set pdfHoeheZ to pdfHoeheZ + 1
if breiteOft is greater than 1 or hoeheOft is greater than 1 then
if ctSwatches is greater than 1 then
--set pdfDok to ((filePath as string) & (dokName) & "Dr.pdf") as string
if breiteOft is equal to hoeheOft then
if pdfBreite is less than pdfHoehe then
my erstIndd(inddBreite, pdfHoehe, pdfBreite, pdfHoeheZ, ctSwatches, pdfDok, 1, breiteOft)
else
my erstIndd(inddBreite, pdfHoehe, pdfBreite, pdfHoeheZ, ctSwatches, pdfDok, 2, hoeheOft)
end if
else if hoeheOft is not greater than breiteOft then
my erstIndd(inddBreite, pdfHoehe, pdfBreite, pdfHoeheZ, ctSwatches, pdfDok, 1, breiteOft)
else
my erstIndd(inddBreite, pdfHoehe, pdfBreite, pdfHoeheZ, ctSwatches, pdfDok, 2, hoeheOft)
end if
end if
end if

on erstIndd(inddBreite, pdfHoehe, pdfBreite, pdfHoeheZ, ctSwatches, pdfDok, ausr, erg)
tell application "Adobe InDesign CC 2017"
set indd to make new document at beginning
tell indd
tell document preferences to set properties to {page width:inddBreite, page height:(pdfHoehe + 5) * pdfHoeheZ}
repeat with i from 1 to ctSwatches
set reEck to make rectangle of page 1 with properties {geometric bounds:{0, 0, pdfHoehe, pdfBreite}}
set stroke color of reEck to item 1 of swatches
my PlacePDF(i, indd, pdfDok, reEck)
if ausr is 2 then tell reEck to set rotation angle to 90
move parent of reEck of page 1 to my moveBounds(i, erg, pdfHoehe, pdfBreite, pdfHoeheZ)
end repeat
end tell
end tell
end erstIndd

on PlacePDF(seite, indd, pdfDok, reEck)
tell application "Adobe InDesign CC 2017"
set page number of PDF place preferences to seite
tell indd
place alias (pdfDok as string) on reEck
end tell
end tell
end PlacePDF

on moveBounds(zeahler, erg, pdfHoehe, pdfBreite, pdfHoeheZ)
set {pl1, pl2} to {0, 0}
--if zeahler is greater than 1 then
-- repeat with i from 1 to pdfHoeheZ
-- if zeahler is greater than 1 then
--
-- end if
-- end repeat
-- repeat with i from 1 to erg
-- if zeahler is greater than 1 then
--
-- end if
-- end repeat
--end if
--if zeahler is greater than 1 then
-- set {pl1, pl2} to {(pdfBreite + 5) * zeahler, 0}
--else if zeahler is not greater than erg then
--
--else if zeahler is not greater than erg then
-- set {pl1, pl2} to {(pdfBreite + 5) * zeahler, 0}
--else if i is not greater than 2 * erg then
-- set {pl1, pl2} to {(pdfBreite + 5) * zeahler, pdfHoehe + 5}
--else if i is not greater than 3 * erg then
-- set {pl1, pl2} to {(pdfBreite + 5) * zeahler, (pdfHoehe + 5) * 2}
--else if i is not greater than 4 * erg then
-- set {pl1, pl2} to {(pdfBreite + 5) * zeahler, (pdfHoehe + 5) * 3}
--else if i is not greater than 5 * erg then
-- set {pl1, pl2} to {(pdfBreite + 5) * zeahler, (pdfHoehe + 5) * 4}
--else if i is not greater than 6 * erg then
-- set {pl1, pl2} to {(pdfBreite + 5) * zeahler, (pdfHoehe + 5) * 5}
--else if i is not greater than 7 * erg then
-- set {pl1, pl2} to {(pdfBreite + 5) * zeahler, (pdfHoehe + 5) * 6}
--end if
return {pl1, pl2}
end moveBounds


und hier meine Daten dazu:

http://www.siscosep.com/hds/pdfPlatzieren.zip

Danke schon mal

(Dieser Beitrag wurde von jekyll am 16. Nov 2017, 01:55 geändert)
X

pdf Auszüge in Indesign platzieren

Hans Haesler
  
Beiträge gesamt: 5826

16. Nov 2017, 08:11
Beitrag # 2 von 23
Beitrag ID: #560713
Bewertung:
(7413 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Sándor,

der Link zu Deinen Daten funktioniert nicht. Bitte nochmal hochladen.

Gruss, Hans


als Antwort auf: [#560709]

pdf Auszüge in Indesign platzieren

jekyll
Beiträge gesamt: 2047

16. Nov 2017, 09:27
Beitrag # 3 von 23
Beitrag ID: #560717
Bewertung:
(7405 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen


als Antwort auf: [#560713]

pdf Auszüge in Indesign platzieren

Hans Haesler
  
Beiträge gesamt: 5826

16. Nov 2017, 17:26
Beitrag # 4 von 23
Beitrag ID: #560736
Bewertung:
(7366 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Sandor,

das folgende Script erwartet die Wahl des hochformatigen Dokuments "test.pdf".

Damit die Diskussion einfacher wird, sind Teile des Original-Codes weggelassen.

Beim Erzeugen der Rechtecke werden diese gleich richtig positioniert.
Zum Ausrichten der Kontur: Wenn "mittig", ragt sie um 0.5 pt über die Seitenränder hinaus. Deshalb ist explizit "innen" definiert.

Code
set ctSwatches to 12 
set pdfDok to (choose file) as Unicode text
set pdfBreite to 220.7
set pdfHoehe to 280
set inddBreite to 450
set breiteOft to round (inddBreite / pdfBreite) rounding down
set hoeheOft to round (inddBreite / pdfHoehe) rounding down
set pdfHoeheZ to round (ctSwatches / breiteOft) rounding down
if pdfHoeheZ * breiteOft is less than ctSwatches then set pdfHoeheZ to pdfHoeheZ + 1
if breiteOft is greater than 1 or hoeheOft is greater than 1 then
if ctSwatches is greater than 1 then
if breiteOft is equal to hoeheOft then
if pdfBreite is less than pdfHoehe then
my erstIndd(inddBreite, pdfHoehe, pdfBreite, pdfHoeheZ, ctSwatches, pdfDok, 1, breiteOft)
else
my erstIndd(inddBreite, pdfHoehe, pdfBreite, pdfHoeheZ, ctSwatches, pdfDok, 2, hoeheOft)
end if
else if hoeheOft is not greater than breiteOft then
my erstIndd(inddBreite, pdfHoehe, pdfBreite, pdfHoeheZ, ctSwatches, pdfDok, 1, breiteOft)
else
my erstIndd(inddBreite, pdfHoehe, pdfBreite, pdfHoeheZ, ctSwatches, pdfDok, 2, hoeheOft)
end if
end if
end if

on erstIndd(inddBreite, pdfHoehe, pdfBreite, pdfHoeheZ, ctSwatches, pdfDok, ausr, erg)
tell application "Adobe InDesign CC 2017"
activate
set indd to make new document at beginning
tell indd
tell document preferences to set properties to {page width:inddBreite, page height:(pdfHoehe + 5) * pdfHoeheZ}
set y1 to 0
set x1 to 0
repeat with n from 1 to ctSwatches
set reEck to make rectangle at page 1 with properties {geometric bounds:{y1, x1, y1 + pdfHoehe ¬
, x1 + pdfBreite}, stroke color:"Black", stroke weight:1, stroke alignment:inside alignment}
if n mod 2 is 0 then
set y1 to y1 + pdfHoehe + 5.965
set x1 to 0
else
set x1 to pdfBreite + 8.424
end if
my PlacePDF(n, indd, pdfDok, reEck)
end repeat
end tell
end tell
end erstIndd

on PlacePDF(seite, indd, pdfDok, reEck)
tell application "Adobe InDesign CC 2017"
set page number of PDF place preferences to seite
tell indd
place alias (pdfDok as string) on reEck
end tell
end tell
end PlacePDF

Die Reihenfolge ist nicht klar. Mit diesem Script werden die Rahmen von links nach rechts und von oben nach unten erzeugt und befüllt.

Gruss, Hans


als Antwort auf: [#560717]

pdf Auszüge in Indesign platzieren

jekyll
Beiträge gesamt: 2047

16. Nov 2017, 18:33
Beitrag # 5 von 23
Beitrag ID: #560740
Bewertung:
(7354 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
vielen Dank.

Antwort auf: Beim Erzeugen der Rechtecke werden diese gleich richtig positioniert.

ja das macht mehr Sinn :)

Antwort auf: Zum Ausrichten der Kontur: Wenn "mittig", ragt sie um 0.5 pt über die Seitenränder hinaus. Deshalb ist explizit "innen" definiert.

Die Kontur habe ich raus genommen. Bei mir ist die 1. Farbfeld "Ohne".

Code
if n mod 2 is 0 then 

was ist das "mod" hier? wie arbeitet es?

Ich teste dann mal ein wenig und melde mich noch mal.


als Antwort auf: [#560736]
(Dieser Beitrag wurde von jekyll am 16. Nov 2017, 18:34 geändert)

pdf Auszüge in Indesign platzieren

Hans Haesler
  
Beiträge gesamt: 5826

16. Nov 2017, 19:51
Beitrag # 6 von 23
Beitrag ID: #560745
Bewertung:
(7344 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Sándor,

bitte sehr.

Zitat Die Kontur habe ich raus genommen. Bei mir ist die 1. Farbfeld "Ohne".

Aha. Okay. Aber im Musterdokument sind schwarze 1-pt-Konturen zugewiesen.

Zitat was ist das "mod" hier? wie arbeitet es?

Das mod ist eine "Division" mit dem Operatoren modulo. Es wird festgestellt, wie oft die Zahl in der zu prüfenden enthalten ist. Aber als Ergebnis kommt nur der Restwert zurück.

Führe bitte mal folgendes Script aus:
Code
repeat with n from 2 to 5 
set res to n mod 2
display dialog "" & n & " --> " & res
end repeat

Das ist praktisch, z.B. wenn man erfahren will, ob ein Wert gerade oder ungerade ist.
Oder – wie im vorliegenden Script – ob die Reihe voll ist oder nicht.

Wenn mehr Spalten sind, erhöht man ganz einfach den Wert entsprechend:
Code
repeat with n from 1 to 12 
set res to n mod 4
display dialog "" & n & " --> " & res
end repeat

Immer wenn das Ergebnis Null ist, dann ist die Reihe voll.

Gruss, Hans


als Antwort auf: [#560740]

pdf Auszüge in Indesign platzieren

jekyll
Beiträge gesamt: 2047

16. Nov 2017, 20:03
Beitrag # 7 von 23
Beitrag ID: #560748
Bewertung:
(7340 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

Antwort auf: Aha. Okay. Aber im Musterdokument sind schwarze 1-pt-Konturen zugewiesen.

Das war kein absicht war Gestern ein wenig zu spät.

Antwort auf: Wenn mehr Spalten sind, erhöht man ganz einfach den Wert entsprechend:

dann kann ich hier mein Händler Variable "erg" (breiteOft oder hoeheOft) einsetzen oder?

Code
if n mod erg is 0 then 



als Antwort auf: [#560745]

pdf Auszüge in Indesign platzieren

Hans Haesler
  
Beiträge gesamt: 5826

16. Nov 2017, 20:24
Beitrag # 8 von 23
Beitrag ID: #560749
Bewertung:
(7337 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Sándor,

im Prinzip ja. Wie immer gilt: Probieren geht über Studieren. :-)

Noch eine Ergänzung: Wenn der Wert nach dem mod grösser ist, als der zu prüfende, kommt eine Eins zurück.

Gruss, Hans


als Antwort auf: [#560748]

pdf Auszüge in Indesign platzieren

jekyll
Beiträge gesamt: 2047

17. Nov 2017, 00:40
Beitrag # 9 von 23
Beitrag ID: #560754
Bewertung:
(7308 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
hier die nächste Problem:
ich möchte Prüfen ob meine division Ganzzahl ist.
Bekomme aber 6 / 3 = 2.0 was ist nicht integer sondern real.
Hat jemand dafür eine Lösung?

Code
set ctSwatches to 6 
set dokBreite to 120
set dokHoehe to 80
set inddBreite to 425

set brOft to round (inddBreite / dokBreite) rounding down
set hoeOft to round (inddBreite / dokHoehe) rounding down

set hoe to round (ctSwatches / hoeOft) rounding down

if ctSwatches is greater than brOft then
if ctSwatches / brOft is integer then
set br to (round (ctSwatches / brOft) rounding down)
set inddHoe to (dokHoehe) * br
else
set br to (round (ctSwatches / brOft) rounding down) + 1
set inddHoe to (dokHoehe) * br
end if
else
set inddHoe to (dokHoehe)
end if



als Antwort auf: [#560749]

pdf Auszüge in Indesign platzieren

Hans Haesler
  
Beiträge gesamt: 5826

17. Nov 2017, 08:03
Beitrag # 10 von 23
Beitrag ID: #560758
Bewertung:
(7258 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Sándor,

anstelle von Dividieren den modulo benutzen:

Code
if ctSwatches mod brOft is 0 then 

Zum Testen das folgende Script starten. Beim zweiten Mal den Wert von 'brOft' auf 4 ändern.

Code
set ctSwatches to 6 
set brOft to 3

display dialog (ctSwatches mod brOft is 0)

Wenn der Restwert Null ist, wird true gezeigt, sonst false.
Ist der Restwert anders als Null, dann ist das Ergebnis einer Division keine Ganzzahl.

Gruss,
Hans


als Antwort auf: [#560754]

pdf Auszüge in Indesign platzieren

jekyll
Beiträge gesamt: 2047

17. Nov 2017, 08:19
Beitrag # 11 von 23
Beitrag ID: #560760
Bewertung:
(7252 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

Merci


als Antwort auf: [#560758]

pdf Auszüge in Indesign platzieren

jekyll
Beiträge gesamt: 2047

17. Nov 2017, 10:01
Beitrag # 12 von 23
Beitrag ID: #560764
Bewertung:
(7225 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
ein RIESEN GROSSEN DANKE DIR.

Ich denke ich hab´s jetzt geschafft. Wahrscheinlich kann man den code viel eleganter schreiben aber so wie es aussieht läuft so.

Code
set ctSwatches to 7 
set dokBreite to 120
set dokHoehe to 85
set inddBreite to 425
set abstand to 3

set test to my testFormat(ctSwatches, dokBreite, dokHoehe, inddBreite, abstand)

on testFormat(ctSwatches, dokBreite, dokHoehe, inddBreite, abstand)
set brOft to round (inddBreite / (dokBreite + abstand)) rounding down
set hoeOft to round (inddBreite / (dokHoehe + abstand)) rounding down

set hoe to round (ctSwatches / hoeOft) rounding down

if ctSwatches is greater than brOft then
if ctSwatches mod brOft is 0 then
set br to (round (ctSwatches / brOft) rounding down)
set inddBrHoe to (dokHoehe) * br
else
set br to (round (ctSwatches / brOft) rounding down) + 1
set inddBrHoe to (dokHoehe) * br
end if
else
set inddBrHoe to (dokHoehe)
end if
if ctSwatches is greater than hoeOft then
if ctSwatches mod hoeOft is 0 then
set br to (round (ctSwatches / hoeOft) rounding down)
set inddHoeHoe to (dokHoehe) * br
else
set br to (round (ctSwatches / hoeOft) rounding down) + 1
set inddHoeHoe to (dokHoehe) * br
end if
else
set inddHoeHoe to (dokHoehe)
end if

if inddHoeHoe is equal to inddBrHoe then
if dokHoehe is greater than dokBreite then
set inddHoe to inddBrHoe
set form to "quer"
else
set inddHoe to inddHoeHoe
set form to "hoh"
end if
else if inddHoeHoe is less than inddBrHoe then
set inddHoe to inddBrHoe
set form to "quer"
else
set inddHoe to inddHoeHoe
set form to "hoh"
end if
return {inddHoe, form}
end testFormat



als Antwort auf: [#560758]

pdf Auszüge in Indesign platzieren

jekyll
Beiträge gesamt: 2047

5. Dez 2017, 09:17
Beitrag # 13 von 23
Beitrag ID: #561196
Bewertung:
(6176 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Allerseits,
ich wieder :)
Ich versuche die pdf Seiten so wie sie kommen hintereinander aufs Bogen zubekommen.

Hat jemand ne Tipp für mich? Ich bin froh dass die meisten aufm Bogen gelandet sind.

Code
set filmBreite to 455 
set filmHoehe to 560
set abstand to 1
set mm to 2.835

set pdfFolder to choose folder
tell application "Finder"
set pdfDoks to every file of pdfFolder whose name ends with ".pdf"
end tell

tell application "Adobe InDesign CC 2017"
set indd to make new document
tell indd to tell document preferences to set properties to {facing pages:false, page width:filmBreite, page height:filmHoehe}
set {inddSeiten, ergBr, erg} to {0, 0, 0}
set {x1, y1, aktInddSeiten} to {1, 1, 1}
repeat with n in pdfDoks
set pdfSeitenZahl to (do shell script "/usr/bin/mdls " & quoted form of POSIX path of (n as alias) & " | /usr/bin/awk '/kMDItemNumberOfPages/{print $3}'") as integer
set {hoehePx, breitePx} to paragraphs of (do shell script "mdls " & quoted form of POSIX path of (n as alias) & "| grep -Ei 'kMDItemPage(Height|Width)' | awk '{print $3}'")
set dokBreite to (((((round (breitePx) rounding up) / mm) * 100) div 1) / 100)
set dokHoehe to (((((round (hoehePx) rounding up) / mm) * 100) div 1) / 100)
set form to my check(pdfSeitenZahl, dokBreite, dokHoehe, filmBreite, filmHoehe, abstand)
set {inddSeiten, ergBr, erg} to {inddSeiten + (item 1 of form), item 2 of form, item 3 of form}
tell indd to tell document preferences to set properties to {pages per document:inddSeiten}

repeat with i from 1 to pdfSeitenZahl
set page number of PDF place preferences to i
tell indd

set reEck to make rectangle at page aktInddSeiten with properties {geometric bounds:{y1, x1, y1 + dokHoehe, x1 + dokBreite}}
set stroke color of reEck to item 1 of swatches
place alias (n as string) on reEck

if filmBreite is greater than (x1 + dokBreite + abstand) and filmHoehe is greater than (y1 + dokHoehe + abstand) then
set res to i mod ergBr
if res is 0 then
set y1 to y1 + dokHoehe + abstand
set x1 to 1
else
set x1 to (dokBreite + abstand) * res
end if
else if filmBreite is less than (x1 + dokBreite + abstand) and filmHoehe is greater than (y1 + dokHoehe + abstand) then
set x1 to 1
set aktInddSeiten to aktInddSeiten + 1
else
set x1 to 1
set y1 to 1
set aktInddSeiten to aktInddSeiten + 1
end if
end tell
end repeat
end repeat
end tell

on check(pdfSeitenZahl, dokBreite, dokHoehe, filmBreite, filmHoehe, abstand)
set dokBreite to dokBreite + abstand
set dokHoehe to dokHoehe + abstand
set qBr to round (filmBreite / dokBreite) rounding down
set qHoe to round (filmHoehe / dokHoehe) rounding down
set qErg to qBr * qHoe
if qErg is greater than pdfSeitenZahl and qHoe is greater than 0.9 then
set inddSeiten to 1
else if qErg is pdfSeitenZahl and qHoe is greater than 0.9 then
set inddSeiten to 1
else
set inddSeiten to round (pdfSeitenZahl / qErg) rounding up
end if
return {inddSeiten, qBr, qErg}
end check



als Antwort auf: [#560758]

pdf Auszüge in Indesign platzieren

jekyll
Beiträge gesamt: 2047

5. Dez 2017, 09:34
Beitrag # 14 von 23
Beitrag ID: #561198
Bewertung:
(6169 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen


als Antwort auf: [#561196]

pdf Auszüge in Indesign platzieren

Hans Haesler
  
Beiträge gesamt: 5826

5. Dez 2017, 10:17
Beitrag # 15 von 23
Beitrag ID: #561201
Bewertung:
(6159 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Sándor,

ich bin unterwegs und könnte erst heute Abend versuchen, das Problem zu verstehen.
Also: Hoffentlich kommt mir jemand zuvor ... ;-).

Gruss, Hans


als Antwort auf: [#561198]
X