Montag, 4. Juni 2012

Mehr Zeit für Teamwork durch Automatisierung - Über freie PDF-Tools

Es gibt bestimmte Arbeiten, die immer gleich ablaufen. Zum Beispiel habe ich es oft mit vielen Textdokumenten zu tun, die ich von verschiedenen Kollegen bekomme. Meine Kunden möchten aber eine einzige PDF-Datei, in der sie sich schnell zu Recht finden. Dazu muss ich jede Word-Datei öffnen und als PDF-Datei abspeichern. Hinterher muss ich alle PDF-Dateien in der richtigen Reihenfolge aneinander hängen. Das lässt sich automatisieren. So gewinne ich Zeit für andere Dinge und meine Kollegen haben etwas mehr Zeit, um mir Informationen zu liefern. In diesem Artikel erkläre ich, mit welchen Tools ich aus vielen Word-Dokumenten eine PDF-Datei mache.

In unserer Firma koordiniere ich die Kundenverträge, d. h. zu Beginn erstelle ich viele Word-Dokumente und verteile sie an Kollegen. Diese tragen die Details ein und schicken mir die Dateien zurück.

Wenn man einen Vertrag mit 60 Dokumenten hat und jeden Tag Änderungen kommen, fängt man an zu überlegen, ob sich das Erstellen von PDF-Dateien nicht automatisieren lässt. Mit Word und ein paar freien Tools aus dem Netz geht das ganz wunderbar. Vielen Dank an Stephan List, der in seinem Toolblog immer wieder neue Software und Dokumente vorstellt.

Das sind die wichtigsten Schritte:
  • Schritt 1: Ich rufe Microsoft Word mit Hilfe eines VBA-Makros auf und speichere jede Datei als PDF-Datei ab (Beispielmakro siehe unten)
  • Schritt 2: Ich nutze PDFTK, um alle PDF-Dateien aneinanderzuhängen.
  • Schritt 3: Mit jpfbookmarks lege ich Lesezeichen fest.
  • Schritt 4: BeCyPDFMetaEdit ist praktisch, um Titel, Autor und Datum der PDF-Datei festzulegen.
Diese Schritte kann man in eine Batchdatei kopieren und die sie nacheinander ablaufen lassen /1/.

Unten habe ich ein Beispiel angefügt, um das Prinzip zu erläutern. In dem Beispiel gibt es einen Projektvertrag mit 2 Anlagen. Wenn das Skript durchgelaufen ist, gibt es eine neue PDF-Datei mit Lesezeichen und richtigen Metadaten.

Was hat das mit Teamwork zu tun?
  • Stupide Arbeiten, die man automatisieren kann, binden uns unnötig. Sie halten uns davon ab, Zeit mit unseren Kunden oder Kollegen zu verbringen.
  • Meine Kollegen sind von meinen Arbeitsergebnissen abhängig. Meine Prozesse dürfen nicht länger dauern als nötig. Ich muss prüfen, was für mein Team die kritischen Schritte sind, ohne die dessen Arbeit stockt.
  • Jeder im Team sollte sein Handwerkzeug beherrschen. Bei Routinevorgängen sollte jeder einzelne sich überlegen, was er optimieren kann, damit das Team besser wird. Das gilt besonders für Vorgänge, die häufig vorkommen und zeitintensiv sind. Automate the pain away. 
Beobachten Sie Ihr Team. Welche Schritte sind besonders wichtig? Kann man diese optimieren? Investieren Sie jede Woche eine Stunde in Ihr eigenes Handwerkszeug. Irgendetwas kann man immer verbessern.

Anmerkungen und Verweise:
Anhang


Um die Lesbarkeit des Makros und der Batchdatei zu erhöhen, habe ich die Dienste http://www.zilpher.com/colourcode.php und http://tohtml.com/Batch/ benutzt. Damit wird der Text bunter :-)

VBA-Makro für Word:

Sub UpdateAndPDF()
'
' UpdateAndPDF Makro
'
' Kopfzeile aktualisieren

    If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
        ActiveWindow.Panes(2).Close
    End If
    If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
        ActivePane.View.Type = wdOutlineView Then
        ActiveWindow.ActivePane.View.Type = wdPrintView
    End If
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    Selection.WholeStory
    Selection.Fields.Update
    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
  
' Rest aktualisieren
  
    Selection.WholeStory
    Selection.Fields.Update
   
' Alle Äderungen annehmen

    WordBasic.AcceptAllChangesInDoc
  
' PDF-Dateiname festlegen

    If (Right(ActiveDocument.FullName, 5) = ".docx") Then
        PDFFilename = (Replace(ActiveDocument.FullName, ".docx", ".pdf"))
    Else
        PDFFilename = (Replace(ActiveDocument.FullName, ".doc", ".pdf"))
    End If

' PDF erstellen

    ActiveDocument.ExportAsFixedFormat OutputFileName:= _
        PDFFilename _
        , ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
        wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
        Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
        CreateBookmarks:=wdExportCreateHeadingBookmarks, DocStructureTags:=True, _
        BitmapMissingFonts:=False, UseISO19005_1:=False
      
' Dokument speichern und Word beenden

    ActiveDocument.Save
    Application.Quit

End Sub

Batchdatei, die aus den drei Word-Dateien projektvertrag.docx, pv_Anlage1_Projektbeschreibung.docx und pv_Anlage2_Ansprechpartner.docx die PDF-Datei Projektvertrag_Version_1.pdf erzeugt:
@echo off
REM Word aufrufen
"c:\Program Files\Microsoft Office\Office14\WINWORD.EXE" projektvertrag.docx /mUpdateAndPDF
"c:\Program Files\Microsoft Office\Office14\WINWORD.EXE" pv_Anlage1_Projektbeschreibung.docx /mUpdateAndPDF
"c:\Program Files\Microsoft Office\Office14\WINWORD.EXE" pv_Anlage2_Ansprechpartner.docx /mUpdateAndPDF

REM PDFTK starten
PDFTK projektvertrag.pdf pv_Anlage1_Projektbeschreibung.pdf pv_Anlage2_Ansprechpartner.pdf cat output projektvertrag_t1.pdf

REM Lesezeichen exportieren
jpdfbookmarks_cli projektvertrag.pdf -d > bookmarks.txt
jpdfbookmarks_cli pv_Anlage1_Projektbeschreibung.pdf -d >> bookmarks.txt
jpdfbookmarks_cli pv_Anlage2_Ansprechpartner.pdf -d >> bookmarks.txt
ECHO Bitte Lesezeichen in Datei bookmarks.txt korrigieren
PAUSE

REM Lesezeichen in Gesamtdatei eintragen
jpdfbookmarks_cli projektvertrag_t1.pdf --apply bookmarks.txt --out projektvertrag_t2.pdf

REM Lesezeichen beim Oeffnen der PDF-Datei anzeigen
jpdfbookmarks_cli projektvertrag_t2.pdf --show-on-open yes --out projektvertrag_t3.pdf

REM Titel und Autor eintragen
BeCyPDFMetaEdit projektvertrag_t3.pdf -T "Projektvertrag"
BeCyPDFMetaEdit projektvertrag_t3.pdf -A "Jan Fischbach"

REM Aufräumen
REN projektvertrag_t3.pdf Projektvertrag_Version_1.pdf
DEL projektvertrag_t2.pdf
DEL projektvertrag_t1.pdf


Keine Kommentare:

Kommentar veröffentlichen