PDF-Dokumente

PDFMerge#

Fügt mehrere PDF-Dateien zu einer einzigen zusammen.

<PDFMerge Sources="{@myFiles}" Destination="C:\Ausgabe\Merged.pdf" Variable="{@Result}" />

Attribute:

  • Sources: DataTable-Variable mit Dateipfaden (Spalte Value oder FullName, z.B. aus FileListDirectory) ? oder semikolon-getrennte Pfade direkt als String.
  • Destination: Zielpfad der zusammengeführten PDF-Datei. Das Verzeichnis wird automatisch erstellt wenn es nicht existiert.
  • Condition: (Optional) Steuert die Ausführung der Aktion. Wenn die Bedingung nicht erfüllt ist, wird die Aktion übersprungen.
  • Variable: (Optional) true bei Erfolg.
  • IgnoreError: (Optional) Gibt an, ob Fehler ignoriert werden sollen (true oder false, Standardwert: false).

Beispiel:

<!-- Alle PDFs eines Monats zu einem Archiv zusammenführen -->
<Set Variable="{@Monatspfad}" Value="C:\Rechnungen\{@SystemYear}\{@SystemMonth}\" />

<FileListDirectory Source="{@Monatspfad}" Data="{@myFiles}" OnlyFiles="true" />
<PDFMerge Sources="{@myFiles}"
          Destination="C:\Archiv\Rechnungen_{@SystemYear}_{@SystemMonth}.pdf" />

 

PDFSplit#

Teilt eine PDF-Datei in mehrere kleinere Dateien auf.

<PDFSplit Source="C:\Dok.pdf" DestinationFolder="C:\Seiten\" PagesPerFile="1" Variable="{@AnzahlDateien}" />

Attribute:

  • Source: Pfad zur aufzuteilenden PDF-Datei.
  • DestinationFolder: Zielverzeichnis für die erzeugten Dateien. Dateinamen: Dateiname_001.pdf, Dateiname_002.pdf, ...
  • PagesPerFile: (Optional) Anzahl Seiten pro Ausgabedatei. Standard: 1.
  • Condition: (Optional) Steuert die Ausführung der Aktion. Wenn die Bedingung nicht erfüllt ist, wird die Aktion übersprungen.
  • Variable: (Optional) Anzahl der erzeugten Dateien als Integer.
  • IgnoreError: (Optional) Gibt an, ob Fehler ignoriert werden sollen (true oder false, Standardwert: false).

Beispiel:

<!-- Sammellieferschein in Einzelseiten aufteilen -->
<PDFSplit Source="C:\Lieferscheine\Sammel_{@SystemDate}.pdf"
          DestinationFolder="C:\Lieferscheine\Einzeln\"
          PagesPerFile="1"
          Variable="{@AnzahlSeiten}" />

<Print Text="Aufgeteilt in {@AnzahlSeiten} Einzeldateien." />

 

PDFExtractPages#

Extrahiert bestimmte Seiten aus einer PDF-Datei in eine neue Datei.

<PDFExtractPages Source="C:\Dok.pdf" Destination="C:\Auszug.pdf" Pages="1,3,5-8" Variable="{@Result}" />

Attribute:

  • Source: Pfad zur Quell-PDF.
  • Destination: Pfad der neuen PDF mit den extrahierten Seiten.
  • Pages: Kommagetrennte Seitenzahlen und Bereiche (1-basiert). Beispiele: "1", "1,3,5", "2-5", "1,3,7-10".
  • Condition: (Optional) Steuert die Ausführung der Aktion. Wenn die Bedingung nicht erfüllt ist, wird die Aktion übersprungen.
  • Variable: (Optional) true bei Erfolg.
  • IgnoreError: (Optional) Gibt an, ob Fehler ignoriert werden sollen (true oder false, Standardwert: false).

Beispiel:

<!-- Nur die ersten 2 Seiten eines Angebots als Kundenvorschau extrahieren -->
<PDFExtractPages Source="C:\Angebote\Angebot_{@ID}.pdf"
                 Destination="C:\Vorschau\Angebot_{@ID}_Vorschau.pdf"
                 Pages="1-2" />

 

PDFGetPageCount#

Gibt die Seitenanzahl einer PDF-Datei zurück.

<PDFGetPageCount Source="C:\Dok.pdf" Variable="{@Seiten}" />

Attribute:

  • Source: Pfad zur PDF-Datei.
  • Condition: (Optional) Steuert die Ausführung der Aktion. Wenn die Bedingung nicht erfüllt ist, wird die Aktion übersprungen.
  • Variable: Speichert die Seitenanzahl als Integer.
  • IgnoreError: (Optional) Gibt an, ob Fehler ignoriert werden sollen (true oder false, Standardwert: false).

Beispiel:

<!-- Seitenanzahl aller PDFs in einem Ordner in DB erfassen -->
<FileListDirectory Source="C:\Dokumente\" Data="{@myFiles}" OnlyFiles="true" />
<ForEach Data="{@myFiles}">
    <StringEndsWith Value="{@Data:Value}" Search=".pdf">
        <PDFGetPageCount Source="{@Data:FullName}" Variable="{@Seiten}" />
        <SQLExecute Query="UPDATE Dokumente SET Seiten={@Seiten} WHERE Pfad='{@Data:FullName}'"
                    Connection="{@myConn}" />
    </StringEndsWith>
</ForEach>

 

PDFAddWatermark#

Fügt ein Wasserzeichen auf alle Seiten einer PDF ein ? entweder als Text oder als Bild (Logo, Stempel).

<PDFAddWatermark Source="" Destination="" Text="VERTRAULICH"
                 Image="" ImageWidth="0" ImageHeight="0"
                 Opacity="0.3" FontSize="60" Rotation="45" Variable="{@Result}" />

Attribute:

  • Source: Pfad zur Quell-PDF.
  • Destination: Pfad der Ausgabe-PDF mit Wasserzeichen.
  • Text: Wasserzeichen-Text (z.B. VERTRAULICH, ENTWURF). Wird ignoriert wenn Image gesetzt ist.
  • Image: (Optional) Pfad zu einer PNG- oder JPG-Datei die als Bildwasserzeichen verwendet wird. Wenn gesetzt hat Image Vorrang vor Text.
  • ImageWidth: (Optional) Breite des Bildwasserzeichens in Punkt. 0 = 50% der Seitenbreite, proportional skaliert.
  • ImageHeight: (Optional) Höhe des Bildwasserzeichens in Punkt. 0 = proportional zur Breite berechnet.
  • Opacity: (Optional) Transparenz von 0.0 (unsichtbar) bis 1.0 (voll deckend). Standard: 0.3.
  • FontSize: (Optional) Schriftgröße beim Textwasserzeichen. Standard: 60.
  • Rotation: (Optional) Drehwinkel in Grad für Text und Bild. Standard: 45. 0 für aufrechtes Bild.
  • Condition: (Optional) Steuert die Ausführung der Aktion. Wenn die Bedingung nicht erfüllt ist, wird die Aktion übersprungen.
  • Variable: (Optional) true bei Erfolg.
  • IgnoreError: (Optional) Gibt an, ob Fehler ignoriert werden sollen (true oder false, Standardwert: false).

Beispiel Text-Wasserzeichen:

<!-- Entwürfe kennzeichnen -->
<PDFAddWatermark Source="C:\Angebote\Angebot_{@ID}.pdf"
                 Destination="C:\Angebote\Angebot_{@ID}.pdf"
                 Text="ENTWURF"
                 Opacity="0.2"
                 FontSize="80" />

Beispiel Bild-Wasserzeichen (Firmenlogo, aufrecht zentriert):

<!-- Firmenlogo als halbtransparenten Stempel einbetten -->
<PDFAddWatermark Source="C:\Dok.pdf"
                 Destination="C:\Dok_Logo.pdf"
                 Image="C:\Assets\Logo_Wasserzeichen.png"
                 Opacity="0.15"
                 Rotation="0"
                 ImageWidth="200" />

 

PDFProtect#

Schützt eine PDF-Datei mit einem Passwort und setzt Berechtigungen.

<PDFProtect Source="C:\Dok.pdf" Destination="C:\Dok_Geschuetzt.pdf"
            UserPassword="oeffnen123" OwnerPassword="admin456" Variable="{@Result}" />

Attribute:

  • Source: Pfad zur Quell-PDF.
  • Destination: Pfad der passwortgeschützten Ausgabe-PDF.
  • UserPassword: (Optional) Passwort zum Öffnen des Dokuments.
  • OwnerPassword: (Optional) Passwort für Bearbeitungsrechte.
  • Condition: (Optional) Steuert die Ausführung der Aktion. Wenn die Bedingung nicht erfüllt ist, wird die Aktion übersprungen.
  • Variable: (Optional) true bei Erfolg.
  • IgnoreError: (Optional) Gibt an, ob Fehler ignoriert werden sollen (true oder false, Standardwert: false).

Hinweis: Drucken ist standardmäßig erlaubt, Bearbeiten und Kopieren des Inhalts sind gesperrt.

Beispiel:

<!-- Lohnabrechnung mit persönlichem Passwort schützen und versenden -->
<SQLReadData Data="{@Mitarbeiter}"
             Query="SELECT ID, Name, Email, PdfPasswort FROM Mitarbeiter WHERE Aktiv=1"
             Connection="{@myConn}" />
<ForEach Data="{@Mitarbeiter}">
    <Set Variable="{@Quelle}" Value="C:\Abrechnungen\Abrechnung_{@Data:ID}.pdf" />
    <Set Variable="{@Ziel}"   Value="C:\Temp\Abrechnung_{@Data:ID}_geschuetzt.pdf" />

    <PDFProtect Source="{@Quelle}" Destination="{@Ziel}"
                UserPassword="{@Data:PdfPasswort}">
        <SendMail To="{@Data:Email}"
                  Subject="Ihre Lohnabrechnung"
                  Body="Anbei Ihre Lohnabrechnung. Passwort: Ihr Geburtsdatum (TTMMJJJJ)."
                  Attachment="{@Ziel}" />
        <FileDelete File="{@Ziel}" />
    </PDFProtect>
</ForEach>

 

PDFRotatePages#

Rotiert bestimmte oder alle Seiten einer PDF-Datei.

<PDFRotatePages Source="C:\Dok.pdf" Destination="C:\Dok_Rotiert.pdf"
                Pages="all" Degrees="90" Variable="{@Result}" />

Attribute:

  • Source: Pfad zur Quell-PDF.
  • Destination: Pfad der Ausgabe-PDF mit rotierten Seiten.
  • Pages: Kommagetrennte Seitenzahlen und Bereiche (1-basiert) oder all für alle Seiten.
  • Degrees: Rotationswinkel. Erlaubte Werte: 90, 180, 270.
  • Condition: (Optional) Steuert die Ausführung der Aktion. Wenn die Bedingung nicht erfüllt ist, wird die Aktion übersprungen.
  • Variable: (Optional) true bei Erfolg.
  • IgnoreError: (Optional) Gibt an, ob Fehler ignoriert werden sollen (true oder false, Standardwert: false).

Beispiel:

<!-- Gescannte Seiten die im Querformat eingingen korrigieren -->
<PDFRotatePages Source="C:\Scan\Eingang.pdf"
                Destination="C:\Scan\Eingang_korrigiert.pdf"
                Pages="2,4,6"
                Degrees="270" />

 

PDFGetMetadata#

Liest die Metadaten (Titel, Autor, Thema, Ersteller) einer PDF-Datei aus.

<PDFGetMetadata Source="C:\Dok.pdf"
                Title="{@PdfTitel}" Author="{@PdfAutor}"
                Subject="{@PdfThema}" Creator="{@PdfErsteller}"
                Variable="{@Result}" />

Attribute:

  • Source: Pfad zur PDF-Datei.
  • Title: (Optional) Variable die den Titel der PDF speichert.
  • Author: (Optional) Variable die den Autor speichert.
  • Subject: (Optional) Variable die das Thema/Betreff speichert.
  • Creator: (Optional) Variable die die erstellende Anwendung speichert.
  • Condition: (Optional) Steuert die Ausführung der Aktion. Wenn die Bedingung nicht erfüllt ist, wird die Aktion übersprungen.
  • Variable: (Optional) true bei Erfolg.
  • IgnoreError: (Optional) Gibt an, ob Fehler ignoriert werden sollen (true oder false, Standardwert: false).

Beispiel:

<!-- Metadaten aller PDFs in einem Ordner in DB indexieren -->
<FileListDirectory Source="C:\Archiv\" Data="{@myFiles}" OnlyFiles="true" />
<ForEach Data="{@myFiles}">
    <StringEndsWith Value="{@Data:Value}" Search=".pdf">
        <PDFGetMetadata Source="{@Data:FullName}"
                        Title="{@Titel}" Author="{@Autor}" Subject="{@Thema}" />
        <DataParameterClear DataParameter="{@myParam}" />
        <DataParameterAddString Name="Pfad"  Value="{@Data:FullName}" DataParameter="{@myParam}" />
        <DataParameterAddString Name="Titel" Value="{@Titel}"         DataParameter="{@myParam}" />
        <DataParameterAddString Name="Autor" Value="{@Autor}"         DataParameter="{@myParam}" />
        <DataParameterAddString Name="Thema" Value="{@Thema}"         DataParameter="{@myParam}" />
        <DataParameterInsert DataParameter="{@myParam}" Connection="{@myConn}" Table="DokumentIndex" />
    </StringEndsWith>
</ForEach>

 

PDFSetMetadata#

Schreibt Metadaten (Titel, Autor, Thema) in eine PDF-Datei.

<PDFSetMetadata Source="C:\Dok.pdf" Destination="C:\Dok_Meta.pdf"
                Title="Rechnung 2026-001" Author="Max Mustermann" Subject="Rechnung"
                Variable="{@Result}" />

Attribute:

  • Source: Pfad zur Quell-PDF.
  • Destination: Pfad der Ausgabe-PDF mit den neuen Metadaten.
  • Title: (Optional) Neuer Titel des Dokuments.
  • Author: (Optional) Neuer Autor des Dokuments.
  • Subject: (Optional) Neues Thema/Betreff des Dokuments.
  • Condition: (Optional) Steuert die Ausführung der Aktion. Wenn die Bedingung nicht erfüllt ist, wird die Aktion übersprungen.
  • Variable: (Optional) true bei Erfolg.
  • IgnoreError: (Optional) Gibt an, ob Fehler ignoriert werden sollen (true oder false, Standardwert: false).

Beispiel:

<!-- Metadaten nach Report-Export automatisch setzen -->
<SQLLookup Table="Kunden" Field="Firmenname" Where="ID={@KundenID}"
           Connection="{@myConn}" Variable="{@Firma}" />

<ReportExportPDF Report="C:\Reports\Rechnung.repx"
                 Export="C:\Temp\Rechnung_{@RechnungID}.pdf"
                 Filter="[RechnungID]=={@RechnungID}" />

<PDFSetMetadata Source="C:\Temp\Rechnung_{@RechnungID}.pdf"
                Destination="C:\Rechnungen\Rechnung_{@RechnungID}.pdf"
                Title="Rechnung {@RechnungID}"
                Author="{@Firma}"
                Subject="Rechnung">
    <FileDelete File="C:\Temp\Rechnung_{@RechnungID}.pdf" />
</PDFSetMetadata>