You have folders of PDF reports, bank statements, or regulatory filings with tables locked inside them — and you need those numbers in Excel so you can sort, filter, and run formulas. Copy-paste from a PDF rarely keeps columns aligned, and reformatting hundreds of files by hand is not work, it is punishment. Total PDF Converter X extracts tables from PDF files into XLS workbooks from the command line, in batch, with no GUI and no Microsoft Excel installation required. Install it on a Windows server, call it from a script or via ActiveX, and let it run unattended.
*.pdf) and the converter processes every matching file in one run-EachPageSeparate to write every PDF page to its own sheet, or merge all pages into one
(30 days, no email)
(server license, perpetual)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
PDF is a final-form document format. The page is fixed, the layout is frozen, and the data on it is meant to be read, printed, or filed — not recalculated. A bank statement in PDF shows you a balance; it does not let you tweak an interest assumption and watch the column update. Tables inside a PDF look like tables, but underneath they are just text positioned at coordinates on a page.
XLS is a working format. Every figure sits in a cell with a row, a column, and a data type. You can sort, filter, pivot, add formulas, draw charts, and feed the result into a downstream model. When tabular data arrives as PDF and the next step is analysis, the data has to become XLS first.
| XLS | ||
|---|---|---|
| Purpose | Final-form output for reading and printing | Working format for analysis and recalculation |
| Cells and formulas | None — text positioned on a page | Native cells, formulas, references, charts |
| Sort and filter | Not supported | Built-in |
| Pivot tables | Not possible | Native Excel feature |
| Copy-paste fidelity | Columns frequently collapse into one | Columns stay separate |
| Audience | Readers, archives, regulators | Analysts, accountants, controllers |
Download the installer from the link above and run it on your Windows server or workstation. The setup takes under a minute. No browser or Microsoft Excel installation is required — the converter parses the PDF text layer with its own engine and writes the XLS file directly.
Open cmd.exe or PowerShell. The converter executable is PDFConverter.exe, located in the installation folder (typically C:\Program Files\CoolUtils\TotalPDFConverterX\). Add it to your system PATH or use the full path in your commands.
The simplest command converts all PDF files in a folder to XLS:
PDFConverter.exe C:\Reports\*.pdf C:\Output\ -c XLS
This processes every .pdf file in C:\Reports\ and saves the resulting XLS workbooks in C:\Output\. Each PDF produces one XLS file with the same base name.
Control the workbook output with additional flags:
PDFConverter.exe C:\Reports\*.pdf C:\Output\ -c XLS -EachPageSeparate -log C:\Logs\pdf2xls.log
-EachPageSeparate — put every PDF page on its own sheet inside the workbook-log C:\Logs\pdf2xls.log — write a conversion log for verificationSave your command in a .bat file and schedule it with Windows Task Scheduler:
@echo off "C:\Program Files\CoolUtils\TotalPDFConverterX\PDFConverter.exe" C:\Incoming\*.pdf C:\Archive\XLS\ -c XLS -EachPageSeparate -log C:\Logs\pdf2xls.log
This runs the extraction every night (or at whatever interval you set) and writes a log file so you can verify the results.
Total PDF Converter X includes a full ActiveX interface. You can call the converter from any COM-compatible environment — .NET, VBScript, PHP, Python, Ruby, or ASP. This lets you embed PDF-to-XLS extraction into your own web application, intranet portal, or accounting workflow without shelling out to a command-line process.
Example (C#/.NET):
PDFConverterX Cnv = new PDFConverterX();
Cnv.Convert("C:\\Reports\\statement.pdf", "C:\\Output\\statement.xls", "-c XLS -EachPageSeparate -log c:\\Logs\\pdf.log");
Example (PHP):
$c = new COM("PDFConverter.PDFConverterX");
$c->convert("C:\\Reports\\statement.pdf", "C:\\Output\\statement.xls", "-c XLS -EachPageSeparate -log c:\\Logs\\pdf.log");
The same call works from ASP.NET, VBScript, Python, Ruby, Perl, and JavaScript (Windows Script Host). Your web application can accept uploaded PDFs and return Excel workbooks to the user in real time.
| Feature | Online Converters | Total PDF Converter X |
|---|---|---|
| Batch processing | One file at a time | Unlimited files per batch |
| File privacy | Statements uploaded to third-party server | Files never leave your machine |
| Column alignment | Often collapses columns into one cell | Detects column boundaries from the text layer |
| Multi-page workbooks | Single sheet, no control | -EachPageSeparate for one sheet per page |
| Automation | Manual only | Command line, .bat, Task Scheduler, ActiveX |
| Server deployment | Not possible | Designed for servers, no GUI needed |
| Requires Excel installed | N/A | No |
| Requires internet | Yes | No |
The converter writes valid XLS files directly. You do not need Microsoft Office, LibreOffice, or any spreadsheet program installed on the server. This avoids licensing costs and the well-known instability of automating Excel in unattended scenarios.
Total PDF Converter X is designed for unattended use. No GUI windows, no dialog boxes, no confirmation prompts. It runs silently from the command line or as part of a service — exactly what a production server needs.
The XLS output contains real cells with real data types. Numbers are numeric, columns stay in columns, and Excel features — sort, filter, formulas, pivot tables, charts — work immediately. This is not text dumped into a single cell with delimiters — it is a true workbook.
The same command-line tool converts PDF to DOC, XLSX, CSV, HTML, TIFF, JPEG, TXT, and more. One installation covers all your PDF extraction needs. Change -c XLS to -c CSV and you get CSV output with the same batch and automation features. Note that the converter works on text-based PDFs — scanned image-only PDFs require OCR first, which is not included in this product.
(30 days, no email or credit card)
(server license, perpetual)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
"We process about 180 vendor invoices and bank statements every month, all arriving as PDF. Total PDF Converter X turns them into XLS overnight with one .bat job. Columns line up correctly, totals match the source, and our reconciliation macro reads the workbooks the same way it reads files exported from the ERP. The -EachPageSeparate flag was the deciding feature — multi-page statements now drop into one sheet per account."
Caroline Whitfield Senior Accountant, Regional Manufacturing Group
"Quarter-end packs from our auditors come back as PDF reports. Pulling them into Excel by hand was a two-day job. We wired the converter into our internal reporting tool through the ActiveX interface; the team now uploads a PDF and gets a working XLS in seconds. Pivot tables and our existing analysis formulas work straight on the output. No Office install on the server, which finance and IT both wanted."
Tobias Lindgren Financial Controller, Logistics SaaS
"Supplier price lists arrive as PDF every week from about thirty vendors. Copying tables out by hand was unreliable — columns kept collapsing. The command-line converter pulls every list into XLS as part of our weekly load, and the column boundaries are correctly detected on all but one of the suppliers (their PDF uses an odd layout). For the rest, the workbooks feed our pricing model directly. Documentation on the column-detection flags could be a bit more verbose, but support replied the same day."
Priya Ramanathan Pricing Analyst, B2B Distributor
PDFConverter.exe C:\Reports\*.pdf C:\Output\ -c XLS. This converts every PDF file in the source folder to XLS. Add -EachPageSeparate to put each PDF page on its own sheet, or -log to write a verification log.-EachPageSeparate flag and the converter creates a multi-sheet workbook with one sheet per PDF page. Without the flag, all pages are merged into a single sheet. Useful for monthly statements where every page covers a different account or period.
Download free trial and convert your files in minutes.
No credit card or email required.
string src = @"C:\test\Source.pdf";
string dest = @"C:\test\Dest.docx";
var cnv = new PDFConverterX();
cnv.Convert(src, dest, "-cDOC -log c:\\test\\PDF.log");
if (!string.IsNullOrEmpty(cnv.ErrorMessage))
throw new Exception(cnv.ErrorMessage);
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\PDFConverterX.exe";
sbLogs.AppendLine(executablePath + "...");
var srcPath = $@"{assemblyDirectoryPath}\src\sample.pdf";
var outPath = Path.GetTempFileName() + ".docx";
startInfo.FileName = executablePath;
if (File.Exists(outPath))
{
File.Delete(outPath);
}
if (File.Exists(executablePath) && File.Exists(srcPath))
{
sbLogs.AppendLine("files exists...");
}
else
sbLogs.AppendLine("EXE & source files NOT exists...");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = $"\"{srcPath}\" \"{outPath}\" -cDOC";
using (Process exeProcess = Process.Start(startInfo))
{
sbLogs.AppendLine($"wait...{DateTime.Now.ToString()}");
exeProcess.WaitForExit();
sbLogs.AppendLine($"complete...{DateTime.Now.ToString()}");
}
sbLogs.AppendLine("Conversion complete.");
}
catch (Exception ex)
{
sbLogs.AppendLine(ex.ToString());
}
return new OkObjectResult(sbLogs);
}
}
dim C
Set C=CreateObject("PDFConverter.PDFConverterX")
C.Convert "c:\test\source.pdf", "c:\test\dest.docx", "-cDOC -log c:\test\PDF.log"
Response.Write C.ErrorMessage
set C = nothing
dim C
Set C=CreateObject("PDFConverter.PDFConverterX")
Response.Clear
Response.AddHeader "Content-Type", "binary/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename=test.docx"
Response.BinaryWrite C.ConvertToStream("C:\www\ASP\Source.pdf", "C:\www\ASP", "-cDOC -log c:\html.log")
set C = nothing
$src="C:\\test\\test.pdf";
$dest="C:\\test\\test.docx";
if (file_exists($dest)) unlink($dest);
$c= new COM("PDFConverter.PDFConverterX");
$c->convert($src,$dest, "-cDOC -log c:\\test\\PDF.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('PDFConverter.PDFConverterX')
src = "C:\\test\\test.pdf"
dest = "C:\\test\\test.docx"
c.convert(src, dest, "-cDOC -log c:\\test\\PDF.log")
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("PDFConverter.PDFConverterX")
src = "C:\\test\\test.pdf"
dest = "C:\\test\\test.docx"
c.convert(src, dest, "-cDOC -log c:\\test\\PDF.log")
if not os.path.exists(dest):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c := CreateOleObject('PDFConverter.PDFConverterX');
c.Convert('c:\test\source.pdf', 'c:\test\dest.docx', '-cDOC -log c:\test\PDF.log');
if c.ErrorMessage <> '' then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("PDFConverter.PDFConverterX");
c.Convert("C:\\test\\source.pdf", "C:\\test\\dest.docx", "-cDOC");
if (c.ErrorMessage != "")
alert(c.ErrorMessage)
use Win32::OLE; my $src = "C:\\test\\test.pdf"; my $dest = "C:\\test\\test.docx"; my $c = CreateObject Win32::OLE 'PDFConverter.PDFConverterX'; $c->convert($src, $dest, "-cDOC -log c:\\test\\PDF.log"); print $c->ErrorMessage if -e $dest;