Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum
>
Software
>
Dokumente in PDFs umwandeln
Dokumente in PDFs umwandeln
hidalgo
01.08.17
10:30
Wie der Titel schon sagt, möchte ich Dokumente, in meinem Fall alte Mellel-Dokumente in PDFs umwandeln. Ich habe ungefähr 3000 alte Dokumente in einer Ordnerstruktur, die ich umwandeln möchte, da ich Mellel nicht mehr verwende aber sicherstellen möchte, dass ich zukünftig auf die Dokumente zugreifen kann, auch wenn Mellel dereinst nicht mehr auf dem Computer installiert bzw. laufen wird.
Am liebsten wäre mir eine Service-Lösung, die mittels Rechtsklick auf die Datei diese an Ort umwandelt. Wer kann mir da helfen?
„«Probleme kann man nie mit derselben Denkweise lösen, durch die sie entstanden sind.» Albert Einstein“
Hilfreich?
0
Kommentare
|<
1
2
MikeMuc
04.08.17
21:40
Super, ich hoffe es läuft ohne weitere Fehler durch
Hilfreich?
+1
hidalgo
04.08.17
22:14
Ja, hoffe ich auch. Habe gerade gemerkt, dass ich falsch gezählt hatte. Wahrscheinlich hatte ich nicht berücksichtigt, dass es *.mellel und *.mell als Endung gibt, als ich auf die Zahl 3000 gekommen bin. Es sind viel mehr. Der Ordner, der gerade durchgearbeitet wird, enthält über 4000 Dokumente.
„«Probleme kann man nie mit derselben Denkweise lösen, durch die sie entstanden sind.» Albert Einstein“
Hilfreich?
0
Weia
05.08.17
09:17
hidalgo
Ja, hoffe ich auch. Habe gerade gemerkt, dass ich falsch gezählt hatte. Wahrscheinlich hatte ich nicht berücksichtigt, dass es *.mellel und *.mell als Endung gibt, als ich auf die Zahl 3000 gekommen bin. Es sind viel mehr. Der Ordner, der gerade durchgearbeitet wird, enthält über 4000 Dokumente.
Gute Güte, wie viele Dokumente pro Tag hast Du denn früher mit Mellel verfasst?
Wenn das Skript jetzt 100% so funktioniert, wie es soll, könntest Du dann im Interesse der lesenden Nachwelt hier nochmals das komplette, funktionierende Skript in voller Länge 1:1 posten? Danke von einem armen Menschen, der sich beim Anblick von AppleScript immer fragt, ob es irgendeinen Menschen auf der Welt gibt, der diese komplett drogengeschwängerte Syntax wirklich verstehen kann …
„“I don’t care” is such an easy lie. (The Warning, “Satisfied”)“
Hilfreich?
0
hidalgo
05.08.17
09:23
In über 10 Jahren kommt halt schon was zusammen, das sind dann nicht so viele Dateien pro Tag.
Haha, ich kann mit dir mitfühlen. Ich habe ja auch keine Ahnung von Programmieren und so. Ohne MikeMuc (ich kann nicht genug danken) wäre das nichts geworden.
set baseFolder to choose folder
process_folders("", baseFolder as text, {".mellel", ".mell"})
on doPrint(thePath)
tell application "System Events"
tell process "Mellel"
delay 2
tell application "System Events" to tell (first button whose name is "Bestehende Datei ersetzen") of (first window of application process "Mellel" whose description is "Dialog") to if exists then click
tell menu bar 1
tell menu "Ablage"
click menu item "Drucken…"
end tell
end tell
tell sheet 1 of window 1
tell menu button "PDF"
click
pick menu item "Als PDF sichern …" of menu 1
end tell
keystroke "G" using {command down, shift down}
delay 1
set value of combo box "Den folgenden Ordner öffnen:" of sheet 1 of sheet 1 to thePath
click button "Öffnen" of sheet 1 of sheet 1
end tell
click button "Sichern" of sheet 1 of sheet 1 of window 1
click button 1 of window 1
end tell
end tell
end doPrint
on process_folders(root, folderNameToProcess, fileExt)
-- copied from https://stackoverflow.com/questions/3896175/applescript-proc essing-files-in-folders-recursively
tell application "Finder"
set theItems to every file of folder (root & folderNameToProcess)
repeat with theFile in theItems
copy name of theFile as string to FileName
repeat with ext in fileExt
if FileName ends with ext then
tell application "Finder" to open theFile
set fileLocation to container of theFile as alias
set myPath to POSIX path of fileLocation
my doPrint(myPath)
end if
end repeat
end repeat
set theFolders to name of folders of folder (root & folderNameToProcess)
repeat with theFolder in theFolders
copy theFolder as string to TheFolderName
try
my process_folders(root & folderNameToProcess, TheFolderName & ":", fileExt)
on error errStr number errorNumber
display dialog errStr
end try
end repeat
end tell
end process_folders
„«Probleme kann man nie mit derselben Denkweise lösen, durch die sie entstanden sind.» Albert Einstein“
Hilfreich?
0
Weia
05.08.17
10:17
hidalgo
In über 10 Jahren kommt halt schon was zusammen, das sind dann nicht so viele Dateien pro Tag.
Nunja: „über 10 Jahre“ ≈ 4000 Tage. Also musstest Du im Schnitt pro Tag ein Dokument verfassen, um
allein diesen einen Ordner
mit 4000 Dateien vollzubekommen. Und dann sind da ja offenbar noch die anderen Ordner … Ich verfasse, wenn’s hoch kommt, vielleicht ein Dokument pro Woche …
Haha, ich kann mit dir mitfühlen. Ich habe ja auch keine Ahnung von Programmieren und so.
Naja, ich
habe
Ahnung vom Programmieren. Ich tue oft monatelang nichts anderes. Aber
gerade deshalb
ist mir ein völliges Rätsel, wie man auf eine so wirre Syntax wie AppleScript kommen kann. Ich meine,
tell X to tell Y to if exists then click
– wie hohes Fieber muss man als Mensch mit minimalen Sprachgefühl haben, damit einem
sowas
einfällt?
Ich kriege jedesmal Verknotungen in meinem Hirn, wenn ich AppleScript auch nur
lesen
muss – vom Schreiben ganz zu schweigen. Aus meiner Sicht ist das der maximal schiefgegangene Versuch, Programmieren „umgangssprachlich“ und dadurch leichter verständlich zu machen.
„“I don’t care” is such an easy lie. (The Warning, “Satisfied”)“
Hilfreich?
0
hidalgo
05.08.17
10:43
Die Dokumente sind ja nicht von mir. Und wenn man Notizen, Listen und anderes einfach immer in Mellel gemacht hat, ist das nicht so arg. Stell dir vor, du hättest deinen Code in Mellel verfasst, da kommt halt schon einiges zusammen.
In welcher Sprache programmierst du denn? So schlecht kann AppleScript für Laien nicht sein, sonst hätte ich das auch mit massiver Unterstützung von MikeMuc nicht hingekriegt. Zugegeben, ich hatte einfach Code-Schnippsel aus dem Netz zusammengepappt, MikeMuc hat daraus ein richtiges Programm gemacht.
Mir ist aber eigentlich egal, wie etwas zustande kommt, wenn es am Ende funktioniert. Hättest du dich früher gemeldet, hätten wir (oder du) die Sache in einer anderen Sprache schreiben können.
„«Probleme kann man nie mit derselben Denkweise lösen, durch die sie entstanden sind.» Albert Einstein“
Hilfreich?
+1
MikeMuc
05.08.17
16:25
Ja, hast dich wacker geschlagen. Vor allem weil ich die wichtigen UI Scripting Stellen ja ausgelassen habe. Die hast du dir ja selber zusammen gestrickt oder gut kopiert.
Auch die Ergänzung der Liste mit den Dateiänderungen hast du richtig gemacht. Damit hast du bewiesen das du an der Stelle die Variable als Liste erkannt ä und auch richtig erweitert hast.
So schwer ist AS also dann doch nicht
Hilfreich?
+2
hidalgo
05.08.17
16:29
@ MikeMuc
Vielen Dank für die Blumen.
Wahrscheinlich ist es mit AppleScript wie mit anderen Dingen. Was für Laien leicht verständlich ist, löst bei Profis Kopfschütteln aus.
„«Probleme kann man nie mit derselben Denkweise lösen, durch die sie entstanden sind.» Albert Einstein“
Hilfreich?
+1
Weia
05.08.17
16:35
hidalgo
Und wenn man Notizen, Listen und anderes einfach immer in Mellel gemacht hat, ist das nicht so arg.
OK, dann ja. Ich hätte erwartet, dass man ein Programm wie
Mellel
nur für layoutete Texte einsetzt, also Publikationen und vielleicht noch Briefe.
So schlecht kann AppleScript für Laien nicht sein, sonst hätte ich das auch mit massiver Unterstützung von MikeMuc nicht hingekriegt.
Es gibt einen Unterschied zwischen dem leichten Lesen und dem leichten Schreiben einer Programmiersprache.
Perl z.B. ist berüchtigt dafür, schlecht
lesbar
zu sein. Ein (sehr harmloses!) Beispiel aus irgendeinem gerade offenen Fenster bei mir:
$CSS =~ s/\.(o|t)tf\?#iefix/.eot?#iefix/g;
Alles klar?
Es ist aber, wenn man die Regeln kennt, sehr einfach (im Sinne von
wenig umständlich
) zu
schreiben
.
Der Schöpfer von AppleScript wollte AppleScript für Laien leichter verständlich machen und kam dazu auf die aus meiner Sicht fatale Idee, sogenannte
Fuzzy Logic
zu nutzen, d.h. die Sprache gezielt unscharf zu machen.
Das ist ein bisschen so wie bei Siri: Siri soll den Anschein erwecken, Menschen zu „verstehen“, weswegen Du Ihr Befehle auf diverse Arten erteilen kannst – aber eben beileibe nicht auf
alle
, die ein Mensch verstehen würde. Dadurch kommt das permanente Rumgerate zustande, wie man Siri nun einen Befehl so erteilen kann, dass sie ihn befolgt. Da wäre eine klare, präzise Befehlsart wie
Siri iTunes spiele Bach Cellosuiten
oftmals viel einfacher, auch wenn kein Mensch ansonsten so reden würde.
Was bei so simplen Aufgaben schon nervig ist, ist beim Programmieren aus meiner Sicht aber fatal.
tell X to tell Y to if exists then click
if exists then tell X to tell Y to click
if exists tell X to tell Y to then click
tell X to tell Y to click if exists
Usw.
Lesbar
ist das etwa alles gleich gut. Aber was davon kann man
schreiben
, damit das Programm funktioniert, was nicht? Ich habe (ehrlich) keine Ahnung! Ich kriege nur Gehirnverknotungen bei sowas.
Sprich: Um grob zu verstehen, was Skripte tun, die man sich aus dem Internet zusammenklaubt, mag AppleScript einfach sein. Um solche Skripte selbst
schreiben
zu können, ist es aus meiner Sicht der Horror.
In welcher Sprache programmierst du denn?
Diverse Sprachen, aber mit Abstand am liebsten Objective-C, die „Muttersprache“ von Cocoa. Die hat aus meiner Sicht genau richtig gemacht, woran AppleScript so grandios scheitert: Eine der menschlichen Sprache nachempfundene, insofern leicht verständliche, aber dennoch präzise Programmiersprache.
Aber selbst in C, der „Muttersprache“ von Unix, angeblich schwer verständlich, funktioniert obiges Beispiel aus meiner Sicht weit klarer:
Taste = X –> Y –> Dialog;
if (Taste) click (Taste);
Hättest du dich früher gemeldet, hätten wir (oder du) die Sache in einer anderen Sprache schreiben können.
Du kannst nicht jede beliebige Programmiersprache nehmen, um ein Skript zu schreiben, das mit Mac-Programmen so interagiert, wie Du es benötigt hattest. Dazu muss es die entsprechenden Schnittstellen zwischen macOS und der Skriptsprache geben, und die gab es die allermeiste Zeit
ausschließlich
für AppleScript, sodass Du gezwungen warst, diese Sprache dafür zu verwenden.
Seit 3 Jahren geht gottseidank auch JavaScript. Auch keine tolle Sprache, aber wenigstens eine „richtige“ Programmiersprache.
„“I don’t care” is such an easy lie. (The Warning, “Satisfied”)“
Hilfreich?
0
Weia
05.08.17
16:46
hidalgo
Wahrscheinlich ist es mit AppleScript wie mit anderen Dingen. Was für Laien leicht verständlich ist, löst bei Profis Kopfschütteln aus.
Da mag was dran sein …
„“I don’t care” is such an easy lie. (The Warning, “Satisfied”)“
Hilfreich?
+1
Weia
05.08.17
16:52
Ich hatte meinen längeren Beitrag gerade eben fast fertig, da stürzte mein Browser ab.
Also alles nochmal geschrieben, und dabei dann in der Eile einen Fehler gemacht. Richtig muss es für C heißen:
Taste = X –> Y –> Dialog –> Taste[1];
if (Taste) click (Taste);
Nur für die, die sich gewundert haben … (Und ja, es ist auch nur eine Stilisierung, kein echter Code …)
„“I don’t care” is such an easy lie. (The Warning, “Satisfied”)“
Hilfreich?
0
|<
1
2
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.
Mac mini mit M4
iOS 18: Kritik an neuer Fotos-App reißt nicht ab
Kopplung "iPhone + Apple Watch" sowie Anbindung...
Kopfhörer für Workout
iPhone 16 Pro: Tippen oder Wischen ignoriert, N...
Kurz: 5G-Netze noch mit sehr wenigen Nutzern ++...
Das MacBook Pro M4
Vor 10 Jahren: Das iPhone 6 und "Bendgate"