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

hidalgo01.08.1710: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“
0

Kommentare

MikeMuc04.08.1721:40
Super, ich hoffe es läuft ohne weitere Fehler durch
+1
hidalgo04.08.1722: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“
0
Weia
Weia05.08.1709: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”)“
0
hidalgo05.08.1709: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“
0
Weia
Weia05.08.1710: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”)“
0
hidalgo05.08.1710: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“
+1
MikeMuc05.08.1716: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
+2
hidalgo05.08.1716: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“
+1
Weia
Weia05.08.1716: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”)“
0
Weia
Weia05.08.1716: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”)“
+1
Weia
Weia05.08.1716: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”)“
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.