37 Advanced Features

37.1 Command Line Parameters

The PDF Processor (PDFProcessor.exe) can be controlled via command line parameters. This enables integration into scripts, scheduled tasks, or operation as a Windows service.

Available Parameters

Parameter Short Form Description
--headless -h Starts in headless mode (without GUI dependency)
--service -s Starts as native Windows service (Service Control Manager)
--run_once -r Performs a single processing run, then exits
--quit -q Terminates a running instance
--profile "Name" -p "Name" Execute only the specified profile
--profiles [A,B,C] -ps [A,B,C] Execute only the specified profiles (comma-separated)

Examples

# Single processing run
PDFProcessor.exe --run_once

# Short form
PDFProcessor.exe -r

# Start as Windows service
PDFProcessor.exe --service

# Start as headless console (endless loop)
PDFProcessor.exe --headless

# Terminate running instance
PDFProcessor.exe --quit

# Headless with single processing
PDFProcessor.exe --headless --run_once

# Process only a specific profile
PDFProcessor.exe --headless --run_once --profile "Invoice Import"

# Process multiple profiles
PDFProcessor.exe -h -r --profiles [Invoices,Archive,Backup]

Profile Selection

With the --profile and --profiles parameters, you can limit processing to specific profiles. This is particularly useful for Windows Task Scheduler when different scheduled tasks should execute different profiles.

Single Profile:

PDFProcessor.exe -h -r -p "Invoice Import"
PDFProcessor.exe --headless --run_once --profile "Orders"

Multiple Profiles:

PDFProcessor.exe -h -r -ps [Invoices,Orders,Archive]
PDFProcessor.exe --headless --run_once --profiles [NightProcessing,Backup]

Profile Names with Commas:

If a profile name itself contains a comma, it must be enclosed in quotes. Both double and single quotes are supported:

# Profile name "Invoices, Import" contains a comma
PDFProcessor.exe -h -r --profiles ["Invoices, Import",Archive]

# With single quotes
PDFProcessor.exe -h -r --profiles ['Invoices, Import',Archive]

# Multiple profiles with commas
PDFProcessor.exe -h -r --profiles ["Invoices, Incoming","Orders, Outgoing",Backup]

# Mixed: profiles with and without commas
PDFProcessor.exe -h -r --profiles [Normal,"With, Comma",AlsoNormal]

Behavior: - Profile names are not case-sensitive ("Invoices" = "invoices" = "INVOICES") - Non-existent profiles are skipped (with warning in console) - Inactive profiles are also skipped (Active flag takes precedence) - Without profile specification, all active profiles are processed (default behavior)

Console Output:

[08:00:00] Profiles filter: Invoices, Archive

or for all profiles:

[08:00:00] Processing all active profiles

Combinations

Combination Behavior
--headless Autonomous continuous operation without GUI (console mode)
--service Native Windows service (continuous operation)
--run_once Process once, then exit
--headless --run_once Process once without GUI, then exit
--quit Terminate running instance

Exit Codes

Code Meaning
0 Successful termination
1 Unhandled exception
2 License expired or invalid
3 Configuration error
4 Another instance already active

37.2 Headless Mode / Service Operation

In headless mode, PDFProcessor runs without dependency on the GUI application. This is ideal for server operation or running as a Windows service.

Use Cases

Scenario Recommended Parameters
Windows Service (SC) --service or no parameter
Windows Service (NSSM) --headless
Docker Container --headless
Scheduled Task (one-time) --run_once
Script Integration --headless --run_once

Installation as Windows Service

Tip - set up directly in the program: The easiest way to set up the service is via the program interface: Menu > Options > Windows Service > "Set up service...". This automatically configures the program path, autostart, restart attempts after a crash, and the "Log on as a service" right correctly (one administrator confirmation). The following sections describe the manual command-line approach.

Service Account (important!)

The service must run under the same Windows user account under which you also open the program interface — not under Local System account (SYSTEM) and not under a separate service account.

Reason: Communication between the interface and the service (heartbeat signal, status messages, action triggers) runs through the user registry (HKEY_CURRENT_USER) and the user's AppData folder. Both are separate per Windows account. If the service runs under SYSTEM, it writes its signals to a hive that the interface cannot see. The interface then shows "External processor not active" even though the service is running correctly.

Changing the account after installation:

  1. Open services.msc, locate the PDFProcessor service → right-click → Properties
  2. Log On tab → select This account → enter your Windows user account with password
  3. Stop and restart the service

The interface should then detect the service as active.

The user account is also required for access to network drives — the SYSTEM account typically has no network permissions.

Network Drives in Service Operation

A Windows service cannot see the network drives that you connected in your Windows logon session - not even if it runs under the same account. It only reaches a path such as Y:\Documents if the program knows which share the drive letter belongs to. The program window remembers this mapping for the network drives of your logon session, and the service under the same account uses it.

If the mapping is missing - typically after importing profiles from another computer or with a service under a different account -, the tasks fail with a message such as "Could not find a part of the path ...". The program then adds a note to the message.

  • Recommended: Enter the network path of the share in the profiles, for example \\server\share\documents - or the local path if the folder is on the computer itself.
  • Without changing the profiles: Connect the drive under the account of the service (with "Reconnect at sign-in") and then open the program window once under this account.
  • When saving a profile and after an import, the program names the folders the service cannot resolve. The backup for support (section 2.6.4) contains the stored mapping and the drives of your logon session for this.
  • Files that were not processed in the meantime can be caught up afterwards (section 37.4).

PDFProcessor automatically detects when it is started by the Service Control Manager. The -s parameter is optional:

# Create service (automatic detection)
sc create PDFProcessor binPath= "\"C:\Program Files\Automatic PDF Processor\PDFProcessor.exe\""

# Alternatively: Create service with explicit service parameter
sc create PDFProcessor binPath= "\"C:\Program Files\Automatic PDF Processor\PDFProcessor.exe\" -s"

# Set startup type to "Automatic (Delayed Start)"
# (recommended: with a domain service account, the network is often not yet available
# right after booting - the delayed start avoids logon error 1069)
sc config PDFProcessor start= delayed-auto

# Recommended: Configure automatic restart attempts after a crash of the service process
# (only takes effect if the running service process ends unexpectedly - not on
# startup failures such as logon error 1069)
sc failure PDFProcessor reset= 86400 actions= restart/60000/restart/60000/restart/60000

# Start service
sc start PDFProcessor

# Stop service
sc stop PDFProcessor

# Remove service
sc delete PDFProcessor

Important: There must be a space after each equals sign (e.g., binPath= "..."). Paths containing spaces (such as "Program Files") must additionally be wrapped in escaped inner quotation marks (\"...\") - otherwise, starting the service will later fail with "The system cannot find the file specified".

With NSSM (Non-Sucking Service Manager)

NSSM manages the process externally and therefore requires headless mode (--headless):

# Install service
nssm install PDFProcessor "C:\...\PDFProcessor.exe" --headless

# Start service
nssm start PDFProcessor

# Stop service
nssm stop PDFProcessor

# Remove service
nssm remove PDFProcessor

Difference: --service vs. --headless

Mode Usage Description
--service / -s SC, Windows Services Registers with the Service Control Manager. Required for native Windows services.
--headless / -h NSSM, Docker, Scripts Console headless mode without GUI dependency. For all other scenarios.

Note: When PDFProcessor is started by the Service Control Manager, it detects this automatically — even without the -s parameter. The parameter serves as an explicit safeguard.

Diagnostics

If problems occur with the Windows service, a diagnostic file is automatically created:

  • File: ServiceDiagnostics.log in the application data folder of the account the service runs under (%APPDATA%\Automatic PDF Processor 2)
  • Content: Start messages, error messages, mode detection

Setting Up Scheduled Tasks

For regular processing without continuous operation:

  1. Open Task Scheduler (taskschd.msc)
  2. Create New Task
  3. Action: Start program → PDFProcessor.exe -r
  4. Trigger: As needed (e.g., hourly, daily)
# Example: Daily processing at 8:00 AM (all active profiles)
schtasks /create /sc daily /tn "PDFProcessor" /tr "\"C:\...\PDFProcessor.exe\" -r" /st 08:00

# Example: Daily invoice processing at 9:00 AM (specific profile only)
schtasks /create /sc daily /tn "PDF Invoices" /tr "\"C:\...\PDFProcessor.exe\" -h -r -p \"Invoice Import\"" /st 09:00

# Example: Nightly archiving at 2:00 AM (multiple profiles)
schtasks /create /sc daily /tn "PDF NightArchive" /tr "\"C:\...\PDFProcessor.exe\" -h -r --profiles [Archive,Backup,Cleanup]" /st 02:00

Tip: With different scheduled tasks for different profiles, you can set up flexible processing scenarios - e.g., invoices hourly during the day, archiving once nightly.

Console Output

In headless mode, the processor outputs status information:

[08:00:00] Automatic PDF Processor 2.0.0 started
[08:00:00] Version: 2.0.0
[08:00:00] License: VALID
[08:00:00] Mode: Headless + RunOnce + Profiles: [Invoices, Archive]
[08:00:00] Profiles filter: Invoices, Archive
[08:00:00] Culture: en-US
[08:00:00] AppData: C:\Users\...\AppData\...

Configuration

Headless mode uses the same configuration as the GUI application: - Configuration Path: %APPDATA%\Automatic PDF Processor 2\ - Profiles: Profiles.json - Options: Options.json

Note: With centralized profile management, the path configured in options is used.


37.3 Processing Time Diagnostics

The diagnostics window provides an overview of processing times and program activity.

Access: Menu button → Other → Processing Time Diagnostics...

Tab: Runtime

Shows program activity for the last 7 days.

Column Description
Date Day of activity
Start Program start time
End End time (or last known activity)
Duration Total runtime

Tab: Global Processing Times

Shows the global time window settings configured in program options: - Active weekdays - Processing period (From/To) - Next scheduled time

Tab: Profile-Specific Processing Times

Lists all profiles that use their own processing times:

Column Description
Profile Profile name
Status Active/Inactive in current time window
Next Window When the next time window begins
Processed Today Number of files processed today

Tab: Waiting Files

Shows files waiting for their time window:

Column Description
File Path to the waiting file
Profile Assigned profile
Waiting Until Start of the next time window

37.4 Catch-Up Processing

The "Catch Up" function allows applying one or more profiles to all PDF files from a specific time period.

How It Works

  1. Select Profiles: Mark the desired profiles in the profile list (multiple selection with Ctrl+Click or Shift+Click possible)
  2. Start Catch-Up: Click Catch Up in the toolbar above the profile list
  3. Set Time Period: If needed, you can restrict the time period (From/To)
  4. Processing: The selected profiles are applied to all PDF files in their monitored folders

Dialog Options

Option Description
From/To Restrict time period (based on file modification date)
Without Restriction Process all files in monitored folders

Use Cases

  • Historical Data: Migrate existing files to a new archive
  • Error Correction: Reprocess files after profile adjustment
  • Manual Trigger: Process files from another source folder
  • Test: Test new profiles with existing files

37.5 Retry on Errors

The retry system enables automatic repetition of failed processing.

Configuration (per Profile)

The retry settings can be found in the Profile Settings on the Advanced page under Retries on Errors (Section 8.3.2).

Setting Default Description
Active No Enable retries
Maximum Attempts 3 Number of retry attempts
Period 1 hour Attempts are distributed within this period

Interval Calculation

Attempts are distributed evenly over the period:

Attempts Period Interval Between Attempts
3 1 hour 20 minutes
3 3 hours 1 hour
5 1 hour 12 minutes

Period Options

Unit Usage
Seconds For quick retries (e.g., network issues)
Minutes For medium-term retries
Hours For longer-term retries (default)
Days For very long retry periods

Process Flow

  1. Error during processing → File is added to retry list
  2. Wait → System waits for calculated interval
  3. Retry → Processing is attempted again. Only the tasks that were still pending run; tasks already completed successfully (such as sending an email) are not executed again, even if the profile has been changed in the meantime
  4. On success → File is removed from retry list
  5. On another error → Next attempt after another interval

Automatic Cleanup

  • 7-Day Rule: Entries whose last error was more than 7 days ago are automatically removed
  • Maximum Attempts: No further retry is performed after reaching maximum attempts
  • File no longer present: If the file of a retry is missing, the program removes the entry. If only its folder is temporarily unreachable, for example during a NAS outage, the entry is kept
  • Deleted profile: The program removes retries of a deleted profile and notes this in the diagnostic log
  • Processing the file again: If the file is processed again before the next attempt - with "Reprocess file" in the log or during catch-up processing -, its pending retry is dropped, because this processing runs all tasks of the profile. If it fails, a new retry starts
  • Unreadable entries: If a retry file cannot be read, the program moves it to the "Unreadable" subfolder of the "RetryInfos" folder in the application data and notes this in the diagnostic log

Retry Status in Log

Errors with active retry function show additional information:

Information Description
Next Attempt Time of next retry attempt
Remaining Number of remaining attempts

Use Cases

Scenario Recommended Configuration
Network Printer 3 attempts, 10 minutes
Email Server 3 attempts, 30 minutes
External Storage 5 attempts, 1 hour
Batch Processing 3 attempts, 2 hours

Example

Configuration: - Maximum attempts: 3 - Period: 1 hour

Process on error at 10:00: 1. First error: 10:00 2. Second attempt: 10:20 3. Third attempt: 10:40 4. Final attempt: 11:00

After the final attempt, the file is marked as "failed" and appears in the log under "Failed Retries".

Notification on Exhausted Attempts

In the profile notification settings, you can enable email notification when all retry attempts have failed.


37.6 Tips and Notes

Service Operation

  • Service account: The service must run under the same user account as the interface, otherwise "External processor not active" will be shown. See section 37.2 → Service Account (important!).
  • Logging: In headless and service mode, errors are written to the console and error log. Additionally, ServiceDiagnostics.log is created in the application data folder.
  • Configuration Changes: Changes to profiles are automatically applied.

Retry Strategy

  • Temporary Errors: Short intervals (minutes) for network issues, printer availability
  • External Dependencies: Longer intervals (hours) for external systems that may be under maintenance
  • Not Too Many Attempts: Too many retries can burden the system

Catch-Up Processing

  • Multiple Profiles: You can select multiple profiles at once to apply them together to a time period
  • Consider Filters: Only files matching profile filters are processed
  • Large Time Periods: Processing may take longer for very large time periods

37.7 Several users on one computer (terminal server)

On a terminal server or another computer with several users, each user account works with its own profiles, settings and license entry. Since version 2.11.1, several user accounts also process files at the same time.

  • One processing per user account: If the program is open under the same account in a second session, or if the processing runs as a Windows service under this account, the program does not start a second processing. The status bar then shows "Processing runs in another Windows session or in the service".
  • Each folder is processed by one account only: This way, no file is processed twice. The account that processes a folder first keeps it; the other one skips it and shows the notice "... processed by another user account on this computer" below the profile list. If one account monitors a folder including its subfolders and another account monitors one of these subfolders, the subfolder belongs to the account that monitors it itself.
  • Catch-up processing: Catch-up processing also skips folders that another account processes.
  • The same folders for several users: If the files of the same folders are to be processed for several users, set up the profiles in one user account or use the Windows service (section 37.2).
  • Limits: This coordination is not possible between different computers - a monitored folder should always be processed by one installation only. The same folder under different network names, such as server name and IP address, counts as different.

37.8 Data Protection: Stored Data and Connections

This overview helps with assessing the program under data protection law. Automatic PDF Processor is a Windows application installed locally. Processing takes place on the computer on which the program runs and at the destinations you define in the profiles, for example folders, printers, email recipients or databases. The program sends neither the contents of your files nor error reports to us; the connections it establishes to our servers are listed below under "Connections". Text recognition and barcode recognition run on the computer itself.

Storage Locations

All data is stored in the user profile of the Windows account under which the program runs - when operated as a Windows service, in the profile of the service account.

Data Location
Configuration, log, protocols and status data %APPDATA%\Automatic PDF Processor 2\
Automatic backups (unless you specify a folder) %APPDATA%\Automatic PDF Processor 2 - Backups\
Intermediate files during processing %LOCALAPPDATA%\GillmeisterSoftware\ or the working directory (section 36.2), some also in the Windows temp folder (%TEMP%) or next to the target file; they are deleted again after the operation, leftovers of an interruption after a few hours
Sign-in to Microsoft 365 (Exchange Online) %LOCALAPPDATA%\GillmeisterSoftware\APP\
Status information for the display, including the processing details (see below) Windows registry under HKEY_CURRENT_USER\SOFTWARE\Gillmeister Software\Automatic PDF Processor 2

Stored Data and Retention

Which personal data occurs depends on your documents and profiles.

Data Content Retention
Log Per processed file: file name and folder, size and date, PDF metadata (for example author, title, subject, names of embedded attachments), profile name, result and error messages of the tasks including destination paths. When sending email, the recipient addresses, not the subject and text. For "Replace Content" and "Insert Barcode", the values found or inserted. 365 days by default (section 36.7). Expired entries are deleted at startup and then once a day. "Delete Log Database" (section 2.6.7) clears the log completely.
Processing log (CSV, only if enabled) Time, profile, status, folder and file name, tasks with details such as recipients and destinations 30 days by default (section 36.8)
Already processed files Path, size and modification date, so that no file is processed twice 90 days by default after the file was last present in the monitored folder (section 36.3)
Error log Technical error messages, some with file paths 7 days
Status and diagnostic log Progress messages with file paths, profile names and the recipients of notifications Status log 14 days, diagnostic log limited in size (section 36.13)
Notices in the main window Message texts, some with file paths 7 days
Processing details Recently processed files with their tasks 3 days, at most 1000 entries
Retries File, profile and error messages of failed processing Until successful, at most 7 days after the last error
Email drafts (SMTP and Exchange Online with "Do not send message, but only save it in the draft folder") Complete message with attachments Until sent or deleted in the "Email Drafts" window
Configuration Profiles and program options, including email addresses of recipients and accounts, paths and filter terms Until you change them

Passwords: The program stores passwords for email accounts and PDF files encrypted, as well as the password and connection string of the task "Save to Database". With the option "Store passwords in Windows Credential Manager" (section 36.2), the passwords of the program options are stored in the Windows Credential Manager of your user account instead. The program does not know your Microsoft 365 (Exchange Online) password: you sign in directly with Microsoft in the browser, and only the sign-in for later sending is stored.

Backups, Support Backup and Error Report

  • Automatic backups (section 36.9; every 4 hours by default, the latest 50 are kept) contain the configuration, the protocols, the list of already processed files, retries and email drafts, but not the log and the passwords in Windows Credential Manager. They are ZIP files - store them in a protected location.
  • The backup for support (section 2.6.4) is only created when you create it yourself. The program removes passwords, account names and license files from the options and profiles. It also contains an overview of the profiles, optionally with a test run of the sample files, and an excerpt of the log of the last 14 days. Saved email drafts are not included.
  • An error report (text file on the desktop, section 2.6.1) is created by the program on request and after an unexpected program error. It contains the program versions and the error messages.
  • None of this is sent to us automatically. We only receive data if you send it to us, for example with a support request.

Connections

Connection When Data transmitted
Update check (www.gillmeister-software.de) When the main window opens No program data; the list of current versions is retrieved
License update (www.gillmeister-software.de) About every 14 days, immediately if the license file is missing or invalid A hash value of the license key and a pseudonymous installation ID - not the license key and not the license name
Language packs for text recognition (www.gillmeister-software.com) When a profile uses a language that is not installed, or when you install a language (chapter 38) Name of the language
Email sending and databases During processing Only to the servers you set up (SMTP server, Microsoft 365, database); Outlook is accessed on the computer itself

As with any access to a web page, the usual connection data accrues on our servers; details are given in our privacy policy (www.gillmeister-software.com/privacy.aspx). Online help, ordering and downloads only open in the browser when you click them.

Access

The Windows user under which the program runs and the administrators of the computer have access to the local data; the program has no user management of its own. You define in the profiles who receives files and messages. We as the manufacturer have no access to your data.