Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Ein Script für PDF-Tools um einen Briefkopf hinzuzufügen

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> OS X-Snippets
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Uhlhorn
•->
•->


Anmeldedatum: 11.12.2006
Beiträge: 5
Wohnort: Hamburg

BeitragVerfasst am: 11.12.2006 - 19:15    Titel: Ein Script für PDF-Tools um einen Briefkopf hinzuzufügen Antworten mit Zitat

Hi, ich bin neu und habe heute ein kleines Skript geschrieben, welches als Droplet ausgelegt ist. Man kann PDF-Dateien darauf ziehen und sie werden dann mit einem Briefkopf versehen. Das ist für alle, die aus irgendwelchen Anwendungen heraus PDFs schreiben können, diese aber nachträglich mit einem Briefkopf (Wasserzeichen) versehen müssen.

Ich selbst benötige im Endresultat ein Droplet, welches das Wasserzeichen nur bei der ersten Seite hinterlegt. Dazu müssen die Dokumente aber erst in einzelne Seiten aufgesplittet werden, und anschließend wieder zusammengefügt werden.
Und dann benötige ich es noch als Skript für die PDF-Services.

Gruß
Gerhard

P.S.: Warum kann ich das Listing nicht farbig machen?
P.P.S.: Hier die beiden Skripte zum Download:
http://www.uhlhorn-agentur.de/Bilder/BriefkopfAS.zip


Code:

-- Dieses AppleScript ist ein Droplet, welches bei PDF-Dateien, die man auf
-- dieses Droplet zieht, ein Briefkopf (Wasserzeichen) hinzufügt. Dieses
-- Wasserzeichen muss im aktuellen Benutzer-Ordner unter Dokumente als PDF
-- abgelegt sein und den Namen „Briefkopf.PDF“ tragen. Der Briefkopf wird
-- auf allen Seiten des Dokuments hinzugefügt.

-- Benötigt wird hierzu die Software PDF-Toolkit:
-- http://www.accesspdf.com/pdftk/index.html

-- Nur PDF-Dateien sollen bearbeitet werden
property type_list : {"PDF"}
property extension_list : {"pdf"}

-- This droplet processes files dropped onto the applet
on open these_items
   repeat with i from 1 to the count of these_items
      set this_item to item i of these_items
      set the item_info to info for this_item
      if (folder of the item_info is false) and ¬
         (alias of the item_info is false) and ¬
         ((the file type of the item_info is in the type_list) or ¬
            the name extension of the item_info is in the extension_list) then
         process_item(this_item)
      end if
   end repeat
end open

-- this sub-routine processes files
on process_item(this_item)
   -- NOTE that the variable this_item is a file refernce in alias format
   -- FILE PROCESSING STATEMENTS GOES HERE
   
   -- Ermittelt den Pfadnamen zum aktuellen Benutzer-Verzeichnis
   set UserFolder to do shell script "echo ~"
   
   -- Erstellt den kompletten Pfad zum Briefkopf in POSIX-Schreibweise
   -- Hier kann auch der Ort und der Name des Wasserzeichens geändert werden
   set Briefkopf to "'" & UserFolder & "/Documents/Briefkopf.pdf'"
   
   -- Wandelt den Pfad zum PDF-Dokument in POSIX um
   set TerminalFile to quoted form of the POSIX path of this_item
   
   -- Ermittelt den Dateinamen der zu bearbeitenden PDF-Datei
   set this_info to info for this_item
   set the current_name to the name of this_info
   
   -- Ermittelt den Pfad zur zu bearbeitenden PDF-Datei
   tell application "Finder"
      set the parent_container_path to (the container of this_item) as text
   end tell
   
   -- Erstellt den neuen Pfad und Namen zur Datei mit Kopf
   set this_item_text to this_item as text -- wandelt Item in text-String
   set this_item_length to (length of this_item_text) - 4 -- ermittelt Länge-4
   set new_file_name to (text 1 thru this_item_length of this_item_text) & "_Kopf.pdf"
   -- fügt "_Kopf" zwischen Dateinamen und Suffix ein
   
   -- wandelt in quoted POSIX um
   set new_posix_name to quoted form of the POSIX path of new_file_name
   
   -- erstellt den Terminal-Befehl für PDF-Toolkit
   set befehl to "/usr/local/bin/pdftk " & TerminalFile & " background " & Briefkopf & " output " & new_posix_name
   
   say "Start converting, please wait" using "Vicki"
   -- führt den Terminal-Befehl für für PDF-Toolkit aus
   do shell script (befehl)
   say "ready!" using "Vicki"
   
end process_item

_________________
http://www.uhlhorn-agentur.de


Zuletzt bearbeitet von Uhlhorn am 12.12.2006 - 14:18, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name
Uhlhorn
•->
•->


Anmeldedatum: 11.12.2006
Beiträge: 5
Wohnort: Hamburg

BeitragVerfasst am: 12.12.2006 - 14:15    Titel: Antworten mit Zitat

Hier das zweite Skript, dass nur der ersten Seite ein Briefkopf oder Wasserzeichen hinzufügt.

Gruß
Gerhard

Code:

-- Dieses AppleScript ist ein Droplet, welches bei PDF-Dateien, die man auf
-- dieses Droplet zieht, ein Briefkopf (Wasserzeichen) hinzufügt. Dieses
-- Wasserzeichen muss im aktuellen Benutzer-Ordner unter Dokumente als PDF
-- abgelegt sein und den Namen „Briefkopf.PDF“ tragen. Der Briefkopf wird
-- auf allen Seiten des Dokuments hinzugefügt.

-- Benötigt wird hierzu die Software PDF-Toolkit:
-- http://www.accesspdf.com/pdftk/index.html

property type_list : {"PDF"} -- Nur PDF-Dateien sollen bearbeitet werden
property extension_list : {"pdf"} -- Nur PDF-Dateien sollen bearbeitet werden
property tmp_foldername : "tmp-Briefkopf" -- Name des temporären Odrners

-- This droplet processes files dropped onto the applet
-- Hier werden die PDF-Dateien herausgefiltert. Ergebnis wird in PDF2Convert zurückgegeben
on open these_items
   repeat with i from 1 to the count of these_items
      set PDF2Convert to item i of these_items
      set the item_info to info for PDF2Convert
      if (folder of the item_info is false) and ¬
         (alias of the item_info is false) and ¬
         ((the file type of the item_info is in the type_list) or ¬
            the name extension of the item_info is in the extension_list) then
         process_item(PDF2Convert)
      end if
   end repeat
end open

-- this sub-routine processes files
on process_item(PDF2Convert)
   -- NOTE that the variable PDF2Convert is a file refernce in alias format
   -- FILE PROCESSING STATEMENTS GOES HERE
   
   -- Ermittelt den Pfadnamen zum aktuellen Benutzer-Verzeichnis
   set UserFolder to do shell script "echo ~" -- … im POSIX-Format
   
   -- Erstellt den kompletten Pfad zum Briefkopf in POSIX-Schreibweise
   -- Hier kann auch der Ort und der Name des Wasserzeichens geändert werden
   set Briefkopf to "'" & UserFolder & "/Documents/Briefkopf.pdf'" -- im POSIX-Format
   set BriefkopfAS to POSIX file Briefkopf
   
   tell application "Finder"
      if not (exists BriefkopfAS) then
         say "Atention! File is missing!" using "Vicki"
         display dialog "Datei „Briefkopf.pdf“ fehlt im Ordner „Dokumente“!" buttons {"Cancel"} default button 1
         stop
      end if
   end tell
   
   -- Wandelt den Pfad zum PDF-Dokument in POSIX um
   set PDF2Convert_POSIX to quoted form of the POSIX path of PDF2Convert
   
   -- Ermittelt den Dateinamen der zu bearbeitenden PDF-Datei
   --set PDF2Convert_info to info for PDF2Convert
   --set the PDF2Convert_name to the name of PDF2Convert_info
   
   -- Ermittelt den Pfad zur zu bearbeitenden PDF-Datei
   tell application "Finder"
      set the parent_container_path to (the container of PDF2Convert) as text
   end tell
   
   -- ermittle den Pfad zum Ablageort für temporäre Dateien
   set tmp_path to path to temporary items from user domain
   
   
   tell application "Finder"
      if not (exists folder tmp_foldername of tmp_path) then
         make new folder at tmp_path with properties {name:tmp_foldername}
         --say "Temprary folder created" using "Vicki"
         set folder_tmp to (folder tmp_foldername of tmp_path)
      else
         set folder_tmp to (folder tmp_foldername of tmp_path)
         delete folder_tmp
         say "Temprary folder deleted" using "Vicki"
         make new folder at tmp_path with properties {name:tmp_foldername}
      end if
   end tell
   
   
   -- Erstellt den neuen Pfad und Namen zur Datei mit Kopf
   set PDF2Convert_text to PDF2Convert as text -- wandelt Item in text-String
   set PDF2Convert_length to (length of PDF2Convert_text) - 4 -- ermittelt Länge-4
   set new_PDF2Convert_name to (text 1 thru PDF2Convert_length of PDF2Convert_text) & "_Kopf.pdf"
   -- fügt "_Kopf" zwischen Dateinamen und Suffix ein
   
   -- wandelt in quoted POSIX um
   set new_PDF2Convert_name_POSIX to quoted form of the POSIX path of new_PDF2Convert_name
   
   
   -- Erster Terminal-Befehl soll erzeugt werden. PDF in einzelseiten zerlegen.
   --/usr/local/bin/pdftk {zu bearbeitende PDF-Datei} burst output /Users/gerhard/Library/Caches/TemporaryItems/tmp-Briefkopf/Seite%05d.pdf
   set PDF_tmp_text to (folder_tmp as text) & "Seite%05d.pdf"
   set PDF_tmp_POSIX to quoted form of the POSIX path of PDF_tmp_text
   set befehl to "/usr/local/bin/pdftk " & PDF2Convert_POSIX & " burst output " & PDF_tmp_POSIX
   say "Start converting, please wait" using "Vicki"
   do shell script (befehl) -- führt den Terminal-Befehl aus
   
   
   -- Zweiter Terminal-Befehl soll erzeugt werden. Erste Seite mit Briefkopf versehen.
   --/usr/local/bin/pdftk /Users/gerhard/Library/Caches/TemporaryItems/tmp-Briefkopf/Seite00001.pdf background /Users/gerhard/Desktop/Briefkopf.pdf output /Users/gerhard/Library/Caches/TemporaryItems/tmp-Briefkopf/Seite00001a.pdf
   set PDF1_tmp_text to (folder_tmp as text) & "Seite00001.pdf"
   set PDF1_tmp_POSIX to quoted form of the POSIX path of PDF1_tmp_text
   set PDF1a_tmp_text to (folder_tmp as text) & "Seite00001a.pdf"
   set PDF1a_tmp_POSIX to quoted form of the POSIX path of PDF1a_tmp_text
   set befehl to "/usr/local/bin/pdftk " & PDF1_tmp_POSIX & " background " & Briefkopf & " output " & PDF1a_tmp_POSIX
   do shell script (befehl) -- führt den Terminal-Befehl aus
   
   -- alte Seite00001.pdf löschen
   set PDF1a_del to ((folder_tmp as text) & "Seite00001.pdf") as text
   tell application "Finder"
      move file PDF1a_del to the trash
   end tell
   
   -- Dritter Befehl: Alle Seiten aus tmp-Briefkopf wieder zusammensetzen:
   --/usr/local/bin/pdftk /Users/gerhard/Library/Caches/TemporaryItems/tmp-Briefkopf/*.* cat output {zu bearbeitende PDF-Datei + Anhang}
   set PDF1_source_text to (folder_tmp as text) & "*.*"
   set PDF1_source_POSIX to the POSIX path of PDF1_source_text
   set new_PDF2Convert_POSIX to quoted form of the POSIX path of new_PDF2Convert_name
   set befehl to "/usr/local/bin/pdftk " & PDF1_source_POSIX & " cat output " & new_PDF2Convert_POSIX
   do shell script (befehl) -- führt den Terminal-Befehl aus
   
   say "ready!" using "Vicki"
   
   delete folder_tmp
   say "Temprary folder deleted" using "Vicki"
   
end process_item

_________________
http://www.uhlhorn-agentur.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name
Uhlhorn
•->
•->


Anmeldedatum: 11.12.2006
Beiträge: 5
Wohnort: Hamburg

BeitragVerfasst am: 15.12.2006 - 01:56    Titel: Antworten mit Zitat

Hmm…
Das Fehlen des Briefkopfes wird noch nicht richtig erkannt. Da gibt es einen Fehler (Abfrage entfernen, dann geht es).
Außerdem gibt es Probleme mit Umlauten (und vielleicht anderen Sonderzeichen). Den Grund kenne ich noch nicht.

Ich werde die Tage nachbessern.
_________________
http://www.uhlhorn-agentur.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> OS X-Snippets Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter