Convert DWG, DXF, PLT, HPGL to PDF and TIFF on Windows servers — without AutoCAD.
Windows
2000/2003/Vista
7/8/10/11
and
2012/2016 / 2019/2022 Server
and
Docker / Citrix / Wine
Total CAD ConverterX is a server-side SDK that converts DWG, DXF, DWF, PLT, HPGL, SVG, and CGM drawings to PDF, TIFF, JPEG, PNG, BMP, WMF, and DXF — without AutoCAD installed on the server. It runs headless: no GUI, no dialogs, nothing to click. Total CAD ConverterX ships with both a command-line binary and an ActiveX/COM interface, so it drops into ASP, PHP, .NET, Python, Ruby, Java, and any other COM-aware backend.
Supported source formats: dxf, dwg, dwf, plt, hg, hgl, hpg, plo, hp, hpl, hpgl, hp1, hp2, hpgl2, gl2, spl, prn, svg, cgm.
Total CAD ConverterX has unique options to batch convert several CAD files at a time:
Looking for server-based solutions? Discover a range of server products tailored for robust performance at CoolUtils Server Products.
If you need examples on programming languages please contact us. We will create any example for you.
(includes 30 day FREE trial)
(only $950.00)
string src = @"C:\test\Source.dwg";
string dest = @"C:\test\Dest.pdf";
var cnv = new CADConverterX();
cnv.Convert(src, dest, "-c PDF -log c:\\test\\CAD.log");
if (!string.IsNullOrEmpty(cnv.ErrorMessage))
throw new Exception(cnv.ErrorMessage);
Download .NET CAD Converter example
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\CADConverterX.exe";
sbLogs.AppendLine(executablePath + "...");
var msgPath = $@"{assemblyDirectoryPath}\MSG\MSG-1.dwg";
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("CADConverter.CADConverterX")
C.Convert "c:\test\source.dwg", "c:\test\dest.pdf", "-cPDF -log c:\test\CAD.log"
Response.Write C.ErrorMessage
set C = nothing
dim C
Set C=CreateObject("CADConverter.CADConverterX")
Response.Clear
Response.AddHeader "Content-Type", "binary/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename=test.pdf"
Response.BinaryWrite c.ConvertToStream("C:\www\ASP\Source.dwg", "C:\www\ASP", "-cpdf -log c:\html.log")
set C = nothing
Example PHP:
$src="C:\\test\\test.dwg";
$dest="C:\\test\\test.pdf";
if (file_exists($dest)) unlink($dest);
$c= new COM("CADConverter.CADConverterX");
$c->convert($src,$dest, "-c pdf -log c:\\test\\Mail.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('CADConverter.CADConverterX')
src="C:\\test\\test.dwg";
dest="C:\\test\\test.pdf";
c.convert(src,dest, "-c PDF -log c:\\test\\CAD.log");
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("CADConverter.CADConverterX")
src="C:\\test\\test.dwg";
dest="C:\\test\\test.pdf";
c.convert(src, dest, "-c PDF -log c:\\test\\CAD.log");
if not os.path.exists(file_path):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c:=CreateOleObject('CADConverter.CADConverterX');
C.Convert('c:\test\source.dwg', 'c:\test\dest.pdf', '-cPDF -log c:\test\CAD.log');
IF c.ErrorMessage<>'' Then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("CADConverter.CADConverterX");
c.Convert("C:\\test\\source.dwg", "C:\\test\\dest.pdf", "-c PDF");
if (c.ErrorMessage!="")
alert(c.ErrorMessage)
use Win32::OLE; my $src="C:\\test\\test.dwg"; my $dest="C:\\test\\test.pdf"; my $c = CreateObject Win32::OLE 'CADConverter.CADConverterX'; $c->convert($src,$dest, "-c pdf -log c:\\test\\CAD.log"); print $c->ErrorMessage if -e $dest;
"Replaced our AutoCAD-based DWG-to-PDF microservice with Total CAD ConverterX last year. We were paying for AutoCAD seats on three converter VMs just so a single COM-automation script could run. Now those VMs run nothing but CADConverterX.exe behind a queue. Conversion latency dropped from around 25 seconds per drawing to 4 seconds, and our annual licensing bill went down by an order of magnitude. The ActiveX integration with our .NET worker took half a day."
Marko D.
Senior Backend Developer
"We run Total CAD ConverterX inside a Windows Server Core container as part of an Azure pipeline. Customers upload DWGs, the queue picks them up, the converter renders PDF/A archival output, files go to blob storage. No GUI, no AutoCAD, no licensing surprises. The -log flag gives us per-file lines that go straight into our log aggregator. Setup was straightforward: register the COM, mount a working directory, done."
Anita V.
DevOps Engineer
"We accept customer drawings in any format clients send us: DWG, PLT, HPGL2, SVG, the lot. Our intake portal calls Total CAD ConverterX via the PHP COM interface and produces a preview PDF before the operator starts plotting. The fact that PLT and HPGL2 just work out of the box is the reason we picked this over the alternatives. Most CAD libraries focus on DWG and treat plotter formats as second-class citizens."
Stefan K.
CTO at a printing & plotting bureau
"Bundled Total CAD ConverterX into our drawing-management product under the Royalty-Free License. The one-time per-project fee was a fraction of what we were paying our previous vendor in per-seat redistribution royalties. Our installer ships the ActiveX, registers it during setup, and our application calls it directly. Clients never see the converter. Support has been responsive whenever we hit an unusual format edge case."
Paolo F.
Independent Software Vendor
"Solid replacement for the AutoCAD COM automation we were using for batch DXF-to-PDF in an internal asset workflow. The previous setup needed a full AutoCAD install on the conversion box and broke after every AutoCAD upgrade. Total CAD ConverterX runs as a plain Windows binary and survives unattended overnight runs. Documentation could be more comprehensive in places (we had to ask support about a couple of CLI flags), but every question got a useful answer within a business day."
Lena B.
Lead .NET Developer
Total CAD ConverterX ships with CADConverterX.exe, a console binary you can drive from scripts, scheduled tasks, CI runners, or any backend service. The flag set matches the GUI CADConverter.exe; for the full reference see the command-line documentation. The recipes below cover the cases we hear about most often from SDK customers.
The smallest possible call — one source file, one output, one target format.
CADConverterX.exe "C:\drawings\plan.dwg" "C:\out\plan.pdf" -cPDF
Process every DWG in a folder and drop the PDFs into a sibling output directory.
CADConverterX.exe "C:\drawings\*.dwg" "C:\out\" -cPDF
Swap the mask for *.dxf, *.plt, *.hpgl, etc. to pick a different source format.
Architectural and engineering projects rarely live in one flat folder. -Recurse walks subdirectories; -kfs recreates the same tree on the output side instead of flattening everything into one bucket.
CADConverterX.exe "C:\projects\AcmeTower\*.dwg" "C:\out\AcmeTower\" -cPDF -Recurse -kfs
A typical CAD deliverable is an album: dozens of sheets that belong together. -combine merges them into a single PDF in source-file order.
CADConverterX.exe "C:\projects\AcmeTower\sheets\*.dwg" "C:\out\AcmeTower-album.pdf" -cPDF -combine
Use -sort name or -sort numbers to control sheet order, and -cimt onefile when targeting multipage TIFF instead of PDF.
For data exchange between CAD tools, or for embedding drawings on a web page, render to a vector format other than PDF.
CADConverterX.exe "C:\drawings\*.dwg" "C:\out\" -cDXF
CADConverterX.exe "C:\drawings\*.dwg" "C:\out\" -cSVG
Long-term blueprint archives are usually black-and-white TIFF with G4 fax compression — small on disk, lossless, accepted by every viewer.
CADConverterX.exe "C:\drawings\*.dwg" "C:\archive\" -cTIF -dpi 600 -cm bw -tc G4FAX
Drop -dpi to 300 for screen review copies, or push to 1200 if the file will go to a wide-format plotter.
Once CADConverterX.exe runs as a service or scheduled job, the only way to know what happened is the log. -verbosity detail writes one line per file; -logmode append keeps history across runs.
CADConverterX.exe "C:\drawings\*.dwg" "C:\out\" -cPDF -log "C:\logs\cadconv.log" -verbosity detail -logmode append
When a worker writes a queue file and the converter consumes it, you don't want to encode the file paths into the command line itself. -list reads file masks (one per line) from a text file.
CADConverterX.exe -list "C:\queues\batch.txt" "C:\out\" -cPDF
Standard for sending drawings to subcontractors: an owner password locks edit/print permissions, a user password gates opening the file, and a watermark labels every page.
CADConverterX.exe "C:\drawings\*.dwg" "C:\out\" -cPDF -mp "owner-pwd" -up "user-pwd" -perm Copy -wmt "CONFIDENTIAL"
Replace Copy with any combination of Modify, Annotation, FormFill, HighResPrint to grant exactly the rights you want.
For records-management workflows that require ISO 19005-compliant PDF/A files with proper authoring metadata.
CADConverterX.exe "C:\drawings\*.dwg" "C:\archive\" -cPDF -pdfa -PDFAuthor "Acme Engineering" -PDFTitle "Tower Project Phase 2" -PDFSubject "As-built drawings"
Updated Fri, 01 May 2026
(only $950.00)
new COM("CADConverter.CADConverterX") in PHP, new CADConverterX() in .NET, win32com.client.Dispatch in Python, WIN32OLE.new in Ruby, and CreateOleObject in Pascal/Delphi. The page above includes ready-to-paste code samples for each language. Alternatively, the CADConverterX.exe command-line binary can be invoked from any process, scheduler, or shell script.mcr.microsoft.com/windows/servercore and register the ActiveX during the image build.-combine command-line flag enables single-file merging; -sort name or -sort numbers controls sheet order. This is the standard workflow for assembling a multi-sheet drawing set into a single deliverable PDF.Updated Fri, 01 May 2026
(only $950.00)
Download free trial and convert your files in minutes.
No credit card or email required.