Any to PDF, DOC, TIFF, XPS. Server version.
Windows
2000/2003/Vista
7/8/10/11
and
2012/2016 / 2019/2022 Server
and
Docker / Citrix / Wine
Coolutils ConverterX is the server-side solution to convert any file to PDF, TIFF, DOC or XPS. Should you work with different file types, you'd love the app that can turn them all into one. Coolutils ConverterX has no GUI, no interrupting messages. It run quitely on your server and produces accurate PDF/DPC/TIFF/XPS files.
CoolUtils ConverterX is a great solution for turning any file types to one standard. Install one copy on your sever and your employees will be able to use it. Make Coolutils ConverterX a part of your app with a few lines of code.
Coolutils ConverterX saves your time. You don't have to run several apps to process different files; you can rely on one. Try the free evaluation copy today, bulk convert your files to PDF/DOC/TIFF/XPS.
(includes 30 day FREE trial)
(only $2400.00)
string src="C:\\test\\Source.p7m";
string dest="C:\\test\\Dest.PDF";
CoolConverterX Cnv = new CoolConverterX();
Cnv.Convert(src, dest, "-c PDF -log c:\\test\\Cool.log");
MessageBox.Show("Convert complete!");
public static class Function1
{
[FunctionName("Function1")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
StringBuilder sbLogs = new StringBuilder();
sbLogs.AppendLine("started...");
try
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
var assemblyDirectoryPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
assemblyDirectoryPath = assemblyDirectoryPath.Substring(0, assemblyDirectoryPath.Length - 4);
var executablePath = $@"{assemblyDirectoryPath}\Converter\CoolConverterX.exe";
sbLogs.AppendLine(executablePath + "...");
var msgPath = $@"{assemblyDirectoryPath}\MSG\MSG-1.msg";
var outPath = Path.GetTempFileName() + ".pdf";
startInfo.FileName = executablePath;
if (File.Exists(outPath))
{
File.Delete(outPath);
}
if (File.Exists(executablePath) && File.Exists(msgPath))
{
sbLogs.AppendLine("files exists...");
}
else
sbLogs.AppendLine("EXE & MSG files NOT exists...");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = $"{msgPath} {outPath}";
using (Process exeProcess = Process.Start(startInfo))
{
sbLogs.AppendLine($"wait...{DateTime.Now.ToString()}");
exeProcess.WaitForExit();
sbLogs.AppendLine($"complete...{DateTime.Now.ToString()}");
}
int sleepCounter = 10;
while(!File.Exists(outPath) && sleepCounter > 0)
{
System.Threading.Thread.Sleep(1000);
sbLogs.AppendLine("sleep...");
sleepCounter--;
}
if (File.Exists(outPath))
sbLogs.AppendLine("Conversion complete successfully.");
}
catch (Exception ex)
{
sbLogs.AppendLine(ex.ToString());
}
return new OkObjectResult(sbLogs);
}
}
dim C
Set C=CreateObject("CoolConverter.CoolConverterX")
C.Convert "c:\test\source.eml", "c:\test\dest.pdf", "-cPDF -log c:\Cool.log"
Response.Write C.ErrorMessage
set C = nothing
dim C
Set C=CreateObject("CoolConverter.CoolConverterX")
Response.Clear
Response.AddHeader "Content-Type", "binary/octet-stream"
Rresponse.AddHeader "Content-Disposition", "attachment; filename=test.pdf"
Response.BinaryWrite c.ConvertToStream("C:\www\ASP\Source.eml", "C:\www\ASP", "-cpdf -log c:\html.log")
set C = nothing
Example PHP:
$src="C:\\test\\test.msg";
$dest="C:\\test\\test.pdf";
if (file_exists($dest)) unlink($dest);
$c= new COM("CoolConverter.CoolConverterX");
$c->convert($src,$dest, "-c pdf -log c:\\Cool.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('CoolConverter.CoolConverterX')
src="C:\\test\\test.pdf";
dest="C:\\test\\test.tiff";
c.convert(src,dest, "-c TIFF -log c:\\test\\Cool.log");
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("CoolConverter.CoolConverterX")
src="C:\\test\\test.eml";
dest="C:\\test\\test.tiff";
c.convert(src, dest, "-c TIFF -log c:\\test\\Cool.log");
if not os.path.exists(file_path):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c:=CreateOleObject('CoolConverter.CoolConverterX');
C.Convert('c:\test\source.eml', 'c:\test\dest.tiff', '-c TIFF -log c:\test\Cool.log');
IF c.ErrorMessage<>'' Then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("CoolConverter.CoolConverterX");
c.Convert("C:\\test\\source.msg", "C:\\test\\dest.pdf", "-c PDF");
if (c.ErrorMessage!="")
alert(c.ErrorMessage)
use Win32::OLE; my $src="C:\\test\\test.eml"; my $dest="C:\\test\\test.tiff"; my $c = CreateObject Win32::OLE 'CoolConverter.CoolConverterX'; $c->convert($src,$dest, "-c TIFF -log c:\\test\\Cool.log"); print $c->ErrorMessage if -e $dest;
"Thank you for Coolutils ConvetrerX. It handles karge bulk jobs on our server and we are happy with the perfirmance."
Ji Prasertcharoensuk
"I use Coolutils ConverterX to convert PDF, DOC file and JPG scans into PDF/A for our electronic document system. From the customer's standpoint it's pretty intuitive."
Tom Cioni
GammaView LLC
Coolutils Converter X ships with CoolUtilsConverterX.exe, a console binary you can drive from scripts, scheduled tasks, CI runners, or any backend service. Output formats are PDF, TIFF, DOC, and XPS; input is auto-detected across the formats supported by the GUI. The recipes below cover the cases we hear about most often from SDK customers.
The smallest possible call — one source, one destination, one target format.
CoolUtilsConverterX.exe "C:\inbox\report.docx" "C:\out\report.pdf" -cPDF
Process every matching file in a folder. The mask can mix formats — CoolutilsConverterX accepts the full input list, so a single run can swallow Word, HTML, RTF, image, and email files together.
CoolUtilsConverterX.exe "C:\inbox\*.*" "C:\out\" -cPDF
Upload pipelines often hand you files with wrong or missing extensions. -filesig tells the converter to look at the file header instead of the name.
CoolUtilsConverterX.exe "C:\uploads\*.*" "C:\out\" -cPDF -filesig
On a multi-core box, parallelise the queue. -threads 0 picks the optimal thread count automatically; specify a number to cap it.
CoolUtilsConverterX.exe "C:\inbox\*.*" "C:\out\" -cPDF -threads 0
Combine with -IgnoreInvalidSource if you'd rather skip a bad file than abort the whole run.
The standard backend pattern: a watcher drops files into inbox, the converter clears it, processed files land in done, files it couldn't handle land in quarantine for review.
CoolUtilsConverterX.exe "C:\inbox\*.*" "C:\out\" -cPDF -msuccess "C:\done" -merror "C:\quarantine" -threads 0
-combine merges every input into a single PDF; -dco TOC generates a clickable table of contents from the source filenames.
CoolUtilsConverterX.exe "C:\reports\*.*" "C:\out\compendium.pdf" -cPDF -combine -dco TOC
Add -dco EveryFileNewPage to ensure each source starts on a fresh page.
For email attachment caps or storage tiers, set a size ceiling and the converter will produce as many sequential PDFs as needed.
CoolUtilsConverterX.exe "C:\reports\*.*" "C:\out\bundle.pdf" -cPDF -combine -pdflimit 10485760
The number is bytes — 10485760 is 10 MB. Output filenames get auto-incremented.
For records-management workflows requiring ISO 19005-compliant PDF/A. -pdfaver 2u targets PDF/A-2u; supported variants are 1b, 2b, 2u, 3b, 3u.
CoolUtilsConverterX.exe "C:\inbox\*.*" "C:\archive\" -cPDF -pdfa -pdfaver 2u -PDFAuthor "Acme Corp" -PDFTitle "Q3 Records" -PDFSubject "Records retention 2026" -FontEmbedding Full
Standard for sending sensitive documents to third parties: an owner password locks editing/printing rights, a user password gates opening the file, and AES-256 encryption replaces the legacy RC4 default.
CoolUtilsConverterX.exe "C:\inbox\*.*" "C:\out\" -cPDF -mp "owner-pwd" -up "user-pwd" -perm Print -perm Copy -EncryptStrength es256AES
Pass -perm multiple times to grant a combination of Print, Copy, Modify, Annotation, FormFill, HighResPrint.
The destination accepts <DATE> and <TIME> macros, so each run writes to its own bucket without scripting on top.
CoolUtilsConverterX.exe "C:\inbox\*.*" "C:\out\<DATE>_<TIME:hhmm>\" -cPDF -log "C:\logs\cucx.log" -verbosity detail -logmode append
For repeatable parameter sets across cron jobs, lift the flags into a config file and pass -optionfile "C:\configs\nightly.opt" instead.
Updated Fri, 01 May 2026
(only $2400.00)
Download free trial and convert your files in minutes.
No credit card or email required.