When managing a Windows print environment, there are many situations where organizations need to preserve printed documents for auditing, compliance, troubleshooting, or automated processing. Windows can store raw print data as spooler files, and by enabling the “Keep spooler files” option, you can instruct the print system to retain these files permanently.
This guide explains in detail:
- What SPL and SHD spooler files are
- How the “Keep spooler files” option works
- Why regular PDF tools cannot convert SPL files
- How to use VeryPDF SPL to PDF Converter Command Line to convert SPL files into PDF
- How to build a fully automated nightly conversion workflow
- How to clean up original spool files safely after conversion
- Optional enhancements and advanced usage
This article is designed to be clear, practical, and directly applicable for administrators, developers, and IT teams.
1. Understanding Windows Spooler Files (SPL and SHD)
When a document is printed in Windows, the printing system creates temporary spooler files in the spool directory:
▪ SPL file
The SPL file contains the actual printed content in raw printer format. This is not plain text or PDF. It may contain:
- EMF (Enhanced Metafile) print data
- PCL print stream
- PostScript stream
- RAW printer commands
- Printer-language-specific binary sequences
The SPL file represents the exact data sent to the printer.
▪ SHD file
The SHD (Shadow) file contains job metadata, including:
- Username
- Document title
- Page count
- Printer name
- Submission time
- Job ID
Normally, after the print job finishes successfully, Windows deletes both SPL and SHD files automatically.
2. What “Keep Spooler Files” Does and Why You Need It
The “Keep spooler files” option, available in the Windows Printer Properties or Print Server settings, tells Windows to stop deleting SPL and SHD files after printing. This is useful for:
- Auditing / Compliance – keeping a copy of all printed materials
- Document archiving – storing an exact representation of output
- Security monitoring – tracking what users are printing
- Troubleshooting print errors – analyzing raw print data
- Automated workflows – converting SPL files to PDF or image formats
- Integration with enterprise systems – processing print activity as part of nightly batch operations
When the option is enabled, all SPL/SHD files remain in:
C:\Windows\System32\spool\PRINTERS
This folder requires administrator privileges to access.
3. Why Most PDF Converters Cannot Open SPL Files
SPL files are not document files. They contain raw printer-language data, not human-readable content. Standard PDF converters are designed to convert formats such as:
- Word documents
- Images
- Text files
- HTML
- Office documents
These tools expect structured, high-level formats—not low-level EMF, PCL, or RAW printing instructions. This is why most commonly available PDF converters cannot interpret or convert .SPL files, even if the name looks similar to “spool output”.
To process SPL files correctly, you need a tool that understands print data streams.
4. Introduction to VeryPDF SPL to PDF Converter Command Line
VeryPDF SPL to PDF Converter Command Line is a specialized tool built explicitly for converting:
- SPL → PDF
- PRN → PDF
- EMF → PDF
- PCL → PDF
- RAW printer streams → PDF
https://www.verypdf.com/app/hookprinter/spool-spl-to-pdf-converter.html
It supports:
- Automatic batch conversion
- Command-line operation
- Scheduled tasks
- Server-side workflows
- Support for multiple spooler formats
- Processing of EMF-SPL, PCL-SPL, PostScript SPL, and RAW-SPL files
The tool is ideal for environments that:
- Keep spooler files
- Need to convert them daily or hourly
- Need to archive or distribute them
- Want a reliable conversion method that does not require user interaction
5. Enabling "Keep Spooler Files" on Your Printer
Below are the steps to enable the setting on Windows:
Method 1 — Enable from Printer Properties
- Open Control Panel → Devices and Printers.
- Right-click your printer → Printer Properties.
- Go to the Advanced tab.
- Enable Keep printed documents (this is the UI name for keeping spooler files).
- Click OK.
Method 2 — Enable at Print Server Level
- Open Print Management (printmanagement.msc).
- Select Print Servers → [Your Server] → Printers.
- Right-click a printer → Properties → Advanced.
- Check Keep printed documents.
After this, SPL/SHD files will remain in the spool folder after printing.
6. Full Workflow: Convert SPL Files to PDF Automatically Every Night
A complete automation process includes:
- Enable “Keep spooler files”
- Allow SPL/SHD files to accumulate during the day
- Use a nightly scheduled script to:
- Scan the spool folder
- Convert SPL to PDF using VeryPDF SPL to PDF
- Move generated PDFs to archive folders
- Delete SPL/SHD files
This ensures clean daily processing, prevents file pileup, and creates orderly archives.
7. Setting Up VeryPDF SPL to PDF Converter Command Line
After installing the tool:
Locate the executable path (for example):
C:\VeryPDF\SPL2PDF\spool2pdf.exe
Test conversion manually:
spool2pdf.exe sample.spl output.pdf
Once you confirm conversion works, you can build automation around the tool.
8. Full PowerShell Automation Script (Highly Detailed)
The script below is production-grade and handles:
- File discovery
- Time-based filtering
- Conversion
- Error handling
- Logging
- Cleanup
- Folder management
You can place this script in:
C:\Scripts\ConvertSPLtoPDF.ps1
PowerShell Script
# ==========================================================
# ConvertSPLtoPDF.ps1 - Automated SPL to PDF Conversion
# ==========================================================
# --------------------------
# CONFIGURATION
# --------------------------
$SpoolFolder = "C:\Windows\System32\spool\PRINTERS"
$OutputFolder = "D:\ArchivedPDFs"
$LogFolder = "D:\SPL_Logs"
$WorkingFolder = "D:\SPL_Work"
$ConverterPath = "C:\VeryPDF\SPL2PDF\spool2pdf.exe"
# Delay (in minutes) to avoid processing files still being written
$MinimumAge = 10
# --------------------------
# INITIAL SETUP
# --------------------------
$LogFile = Join-Path $LogFolder "SPLtoPDF-" + (Get-Date -Format "yyyyMMdd") + ".log"
foreach ($path in @($OutputFolder, $LogFolder, $WorkingFolder)) {
if (!(Test-Path $path)) { New-Item -ItemType Directory -Path $path | Out-Null }
}
function WriteLog($msg) {
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
"$timestamp`t$msg" | Out-File -Append -Encoding UTF8 $LogFile
}
WriteLog "---------- Script Started ----------"
# --------------------------
# FILE DISCOVERY
# --------------------------
$Cutoff = (Get-Date).AddMinutes(-$MinimumAge)
$SPLFiles = Get-ChildItem -Path $SpoolFolder -Filter *.spl |
Where-Object { $_.LastWriteTime -lt $Cutoff }
foreach ($spl in $SPLFiles) {
$BaseName = $spl.BaseName
$SHDFile = Join-Path $SpoolFolder ($BaseName + ".shd")
WriteLog "Processing $($spl.FullName)"
# Output PDF path
$TimeStamp = Get-Date -Format "yyyyMMdd-HHmmss"
$TempPDF = Join-Path $WorkingFolder ("Job_" + $TimeStamp + "_" + $BaseName + ".pdf")
# --------------------------
# RUN CONVERTER
# --------------------------
$Arguments = @("-i", "`"$($spl.FullName)`"", "-o", "`"$TempPDF`"")
WriteLog "Running converter: $ConverterPath $Arguments"
$Process = Start-Process $ConverterPath -ArgumentList $Arguments -Wait -NoNewWindow -PassThru
if ($Process.ExitCode -eq 0 -and (Test-Path $TempPDF)) {
WriteLog "Conversion succeeded: $TempPDF"
# Move PDF to final location
$FinalPDF = Join-Path $OutputFolder (Split-Path $TempPDF -Leaf)
Move-Item $TempPDF $FinalPDF -Force
# --------------------------
# CLEANUP ORIGINAL FILES
# --------------------------
try {
Remove-Item $spl.FullName -Force
if (Test-Path $SHDFile) { Remove-Item $SHDFile -Force }
WriteLog "Deleted SPL/SHD originals for $BaseName"
}
catch {
WriteLog "Error deleting originals: $_"
}
}
else {
WriteLog "Conversion FAILED for $($spl.FullName)"
WriteLog "Exit Code: $($Process.ExitCode)"
# Keep SPL/SHD for troubleshooting
}
}
WriteLog "---------- Script Completed ----------"
9. Scheduling the Script to Run Automatically Each Night
Use Windows Task Scheduler:
- Open Task Scheduler
- Click Create Task
- General tab
- Name: Convert SPL to PDF Automatically
- Run whether user is logged on or not
- Run with highest privileges
- Triggers tab
- New → Daily → Set time (e.g., 2:00 AM)
- Actions tab
- Program:
powershell.exe - Arguments:
-ExecutionPolicy Bypass -File "C:\Scripts\ConvertSPLtoPDF.ps1"
- Program:
- Save and enter credentials
- Right-click → Run to test
After that, conversion occurs automatically every night.
10. Recommended Naming Conventions for Converted PDFs
Many organizations want meaningful file names. Examples:
{JobID}_{User}_{Timestamp}.pdf{PrinterName}_{Date}_{Sequence}.pdf{OriginalDocumentName}.pdf(requires SHD parsing)
You can modify the script to incorporate:
- Username from SHD
- Job ID from SHD
- Print time
- Printer name
If you need a more advanced SHD parser, I can generate a script for that as well.
11. Optional Enhancements
You may expand the workflow by adding:
● PDF Encryption
Password-protect PDFs for sensitive print jobs.
● PDF/A Archival
Ensure long-term archival suitability.
● Uploading PDFs Automatically
Upload to:
- SharePoint
- Amazon S3
- OneDrive
- FTP/SFTP servers
- Internal document management systems
● Email Notifications
Send alerts if:
- Conversion fails
- Output folder is empty
- Unexpected SPL types appear
● File Retention Policies
Automatically delete PDFs older than X days.
12. Summary
By enabling "Keep spooler files" on Printer Driver, Windows preserves all printed SPL and SHD files. Using VeryPDF SPL to PDF Converter Command Line, you can convert these raw print data files into high-quality PDF documents.
With the PowerShell automation script and Task Scheduler method described above, you can:
- Convert all SPL files nightly
- Archive PDFs in a structured location
- Automatically remove original spooler files
- Reduce manual work to zero
- Maintain full audit trails of printing activity
This solution is reliable, fully automatic, and suitable for small businesses, enterprises, and IT departments that need precise control over print output.