U hebt mappen vol PDF-rapporten, bankafschriften of regelgevende inzendingen, en de tabellaire gegevens erin moeten in een database, een spreadsheet of een analytische pipeline terechtkomen. Tabellen kopiëren-plakken vanuit een PDF-viewer in Excel vernietigt de rij- en kolomstructuur binnen de eerste drie pagina's. Total PDF Converter X extraheert tabellen uit PDF-bestanden naar CSV vanaf de opdrachtregel, in batch, zonder GUI. Installeer het op een Windows-server, roep het aan vanuit een script of via ActiveX, en laat het onbeheerd draaien.
*.pdf) en de converter verwerkt elk overeenkomend bestand in één keer-CSVDelimiter om aan te sluiten op het doelsysteem-Encoding om niet-Latijnse tekens schoon af te handelen-CSVQuotation om komma's binnen celwaarden te beschermen
(30 dagen, geen e-mail)
(serverlicentie, eeuwigdurend)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
PDF is een vaste-lay-out-formaat ontworpen voor visuele distributie en afdrukken. Een tabel binnen een PDF is geen gestructureerd gegevensobject — het is een reeks tekstfragmenten geplaatst op specifieke x/y-coördinaten op de pagina. De viewer rendert ze op een manier die op een tabel lijkt, maar er zijn geen rijen, kolommen of cellen in het bestand zelf. Dat is waarom een handmatige kopieer-plak vanuit een PDF zelden schone tabellaire uitvoer produceert.
CSV is een platte-tekst-gegevensformaat met één record per regel en velden gescheiden door een scheidingsteken. Het importeert rechtstreeks in Excel, Google Sheets, SQL-databases, pandas DataFrames, R, Power BI, Tableau en elke ETL-tool die bestaat. Wanneer aan PDF gebonden gegevens een analyse- of boekhoudwerkstroom moeten binnenkomen, moeten ze eerst CSV worden.
| CSV | ||
|---|---|---|
| Doel | Visuele distributie, afdrukken, archivering | Gegevensingestie en analyse |
| Structuur | Pagina-coördinaten, geen echte tabellen | Rijen en kolommen, native |
| Bewerken | Moeilijk, vereist PDF-editor | Open in elke teksteditor of spreadsheet |
| Handmatige kopieer-plak | Verliest tabelstructuur | Behoudt structuur exact |
| Werkstroom | Eindstation-document | Begin van gegevenspipeline |
Voorbehoud: geautomatiseerde PDF-naar-CSV-extractie werkt op tekstgebaseerde PDF's — gegenereerd uit boekhoudsystemen, rapport-engines of opslaan-als-PDF vanuit een spreadsheet of database. Gescande PDF's (afbeeldingen van papier) bevatten geen tekstlaag en vereisen OCR als afzonderlijke voorbewerkingsstap voordat enige CSV-extractie mogelijk is.
Download het installatieprogramma via de bovenstaande link en voer het uit op uw Windows-server of werkstation. De installatie duurt minder dan een minuut. De converter parseert de tekstlaag van de PDF rechtstreeks — geen externe PDF-reader, geen Acrobat en geen Office-installatie vereist.
Open cmd.exe of PowerShell. Het uitvoerbare bestand van de converter is PDFConverter.exe, te vinden in de installatiemap (meestal C:\Program Files\CoolUtils\TotalPDFConverterX\). Voeg het toe aan uw systeem-PATH of gebruik het volledige pad in uw commando's.
Het eenvoudigste commando extraheert tabellen uit alle PDF-bestanden in een map naar CSV:
PDFConverter.exe C:\Reports\*.pdf C:\Output\ -c CSV
Dit verwerkt elk .pdf-bestand in C:\Reports\ en slaat de resulterende CSV-bestanden op in C:\Output\. Elke PDF levert één CSV op met dezelfde basisnaam. PDF's met meerdere pagina's worden standaard samengevoegd tot één CSV per bronbestand.
Beheer het CSV-formaat met extra vlaggen:
PDFConverter.exe C:\Reports\*.pdf C:\Output\ -c CSV -CSVDelimiter ; -CSVQuotation " -Encoding UTF-8 -log C:\Logs\pdf2csv.log
-CSVDelimiter ; — veldscheidingsteken (komma, puntkomma, tab, pipe)-CSVQuotation " — omhul tekstvelden in dubbele aanhalingstekens om komma's binnen cellen te beschermen-Encoding UTF-8 — uitvoercodering (UTF-8, UTF-16, ANSI) voor correcte afhandeling van niet-Latijnse tekens-log C:\Logs\pdf2csv.log — schrijf een conversielog ter verificatieSla uw commando op in een .bat-bestand en plan het in met Windows Taakplanner:
@echo off "C:\Program Files\CoolUtils\TotalPDFConverterX\PDFConverter.exe" C:\Incoming\*.pdf C:\Archive\CSV\ -c CSV -CSVDelimiter ; -Encoding UTF-8 -log C:\Logs\pdf2csv.log
Dit voert de extractie elke nacht uit (of op elk interval dat u instelt) en schrijft een logbestand zodat u de resultaten kunt verifiëren. Koppel het aan een opvolgstap die de CSV-bestanden in uw database of analyse-warehouse importeert.
Total PDF Converter X bevat een volledige ActiveX-interface. U kunt de converter aanroepen vanuit elke COM-compatibele omgeving — .NET, VBScript, PHP, Python, Ruby of ASP. Hiermee kunt u PDF-naar-CSV-extractie inbouwen in uw eigen webapplicatie, intranetportaal of documentwerkstroom zonder een opdrachtregelproces te hoeven starten.
Voorbeeld (C#/.NET):
PDFConverterX Cnv = new PDFConverterX();
Cnv.Convert("C:\\Reports\\statement.pdf", "C:\\Output\\statement.csv", "-c CSV -CSVDelimiter ; -Encoding UTF-8 -log c:\\Logs\\pdf.log");
Voorbeeld (PHP):
$c = new COM("PDFConverter.PDFConverterX");
$c->convert("C:\\Reports\\statement.pdf", "C:\\Output\\statement.csv", "-c CSV -CSVDelimiter ; -Encoding UTF-8 -log c:\\Logs\\pdf.log");
Dezelfde aanroep werkt vanuit ASP.NET, VBScript, Python, Ruby, Perl en JavaScript (Windows Script Host). Uw webapplicatie kan geüploade PDF-bestanden accepteren en in realtime importklare CSV-gegevens aan de gebruiker retourneren.
| Functie | Online converters | Total PDF Converter X |
|---|---|---|
| Batchverwerking | Eén bestand tegelijk | Onbeperkt aantal bestanden per batch |
| Bestandsprivacy | Bestanden geüpload naar server van derden | Bestanden verlaten nooit uw machine |
| Vertrouwelijke gegevens | Riskant — bankafschriften, salarisstroken, inzendingen | Veilig — on-premise verwerking |
| Bestandsgrootte-limieten | 5–25 MB typische limiet | Geen opgelegde limiet |
| Scheidingsteken-beheer | Vaste komma, geen keuze | Komma, puntkomma, tab, pipe |
| Coderingsbeheer | Vaak alleen ANSI, breekt Unicode | UTF-8, UTF-16, ANSI selecteerbaar |
| Automatisering | Alleen handmatig | Opdrachtregel, .bat, Taakplanner, ActiveX |
| Serverimplementatie | Niet mogelijk | Ontworpen voor servers, geen GUI nodig |
| Vereist internet | Ja | Nee |
De converter parseert de tekstlaag van de PDF en reconstrueert rij-en-kolom-structuur op basis van coördinaten en uitlijning. Multi-kolom-rapport-lay-outs, samengevoegde kopregels en tabellen die meerdere pagina's beslaan worden in één doorgang afgehandeld — niet als een reeks losse woorden.
Total PDF Converter X is ontworpen voor onbeheerd gebruik. Geen GUI-vensters, geen dialoogvensters, geen bevestigingsprompts, geen Acrobat-afhankelijkheid. Het draait stil vanaf de opdrachtregel of als onderdeel van een dienst — precies wat een productie-extractie-pipeline nodig heeft.
Bankafschriften met Duitse umlauts, Poolse diakritische tekens, Cyrillische handelsnamen of Chinese tegenpartijen blijven leesbaar in de CSV-uitvoer. -Encoding UTF-8 op de opdrachtregel, en het resulterende bestand importeert schoon in elke moderne database of BI-tool.
Dezelfde opdrachtregeltool converteert PDF naar DOC, XLS, HTML, TXT, TIFF, JPEG en meer. Eén installatie dekt elk PDF-conversiedoel dat u nodig zou kunnen hebben. Verander -c CSV in -c XLS en u krijgt een Excel-werkmap met dezelfde batch- en automatiseringsfuncties.
(30 dagen, geen e-mail of creditcard)
(serverlicentie, eeuwigdurend)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
"Kwartaal-resultatenpublicaties arriveren als PDF's en we modelleren ze in Excel. Total PDF Converter X draait vanaf de opdrachtregel over een hele map met 10-Q-inzendingen en produceert in minder dan een minuut schone CSV. Multi-kolom-tabellen en samengevoegde kopregels komen er correct gestructureerd uit, wat de doorslag gaf bij twee eerdere tools die we probeerden. De puntkomma-scheidingsteken- en UTF-8-vlaggen betekenen dat Europese emittenten onze import niet langer verminken."
Caroline Whitfield Senior Financial Analyst, Mid-Market Equity Research
"We nemen dagelijks honderden bankafschriften op voor reconciliatie. De .bat-script-wrapper rond PDFConverter.exe plaatst CSV-bestanden in een hot folder, en onze ETL-pipeline pakt ze op. Nul GUI-voetafdruk op de server, geen Acrobat-licentie en het logbestand geeft ons een papieren spoor voor audit. Setup duurde ongeveer een uur, inclusief ActiveX-tests vanuit onze interne C#-tool."
Rohan Mehta Data Engineer, Banking Operations
"Veldopdrachten overhandigen ons vaak PDF-grootboeken uit klantsystemen. Die naar CSV converteren betekende vroeger vervelend kopiëren-plakken of betalen voor IDEA-imports. Nu draaien we de converter op een USB-geïnstalleerde kopie en laden de CSV rechtstreeks in onze analytische werkpapieren. Gescande PDF's hebben nog steeds OCR upstream nodig, maar voor native PDF's is de tabel-detectie betrouwbaar. Documentatie kon grondiger zijn maar support antwoordde binnen een dag."
Anika Larsen Audit Specialist, Big Four Practice
PDFConverter.exe C:\Reports\*.pdf C:\Output\ -c CSV. Dit extraheert tabellen uit elke PDF in de bronmap en schrijft ze als CSV-bestanden. Voeg vlaggen toe zoals -CSVDelimiter ;, -Encoding UTF-8 of -log om de uitvoer te regelen.-CSVDelimiter gevolgd door het teken. -CSVDelimiter ; voor puntkomma (gebruikelijk in Europese landinstellingen waar komma het decimaalteken is), -CSVDelimiter \t voor tab of -CSVDelimiter | voor pipe. Standaard is komma.-Encoding UTF-8 toe aan de opdrachtregel. Dit produceert UTF-8-gecodeerde CSV-bestanden die Duitse umlauts, Poolse diakritische tekens, Cyrillisch, Chinees, Japans en alle andere Unicode-tekens in de PDF behouden. UTF-16 en ANSI worden ook ondersteund.-CSVQuotation " om tekstvelden in dubbele aanhalingstekens te omhullen. De converter escaped ingesloten aanhalingstekens volgens RFC 4180, dus waarden zoals "Smith, John" overleven een rondreis naar Excel, pandas of elke standaard CSV-parser zonder de kolomtelling te breken.PDFConverter.PDFConverterX). U kunt het aanroepen vanuit .NET, PHP, Python, VBScript, ASP, Ruby, Perl en elke andere COM-compatibele omgeving om PDF-naar-CSV-extractie rechtstreeks in uw applicatie in te bouwen.
string src="C:\\test\\Source.PDF";
string dest="C:\\test\\Dest.TIFF";
PDFConverterX Cnv = new PDFConverterX();
Cnv.Convert(src, dest, "-c TIFF -log c:\\test\\PDF.log");
MessageBox.Show("Convert complete!");
//Werken met formulieren
Cnv.LoadFromFile(src);
Cnv.SetFormFieldValue(0, "Test Name");
Cnv.SaveToFile(src);
Download .NET PDF Converter voorbeeld
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 msgPath = $@"{assemblyDirectoryPath}\MSG\MSG.pdf";
var outPath = Path.GetTempFileName() + ".tiff";
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 bestanden bestaan NIET...");
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("Conversie succesvol voltooid.");
}
catch (Exception ex)
{
sbLogs.AppendLine(ex.ToString());
}
return new OkObjectResult(sbLogs);
}
}
#include <windows.h>
static const CLSID CLSID_PDFConverterX =
{0x6B411E7E, 0x9503,0x4793,{0xA2, 0x87, 0x1F, 0x3B, 0xA8, 0x78, 0xB9, 0x1C}};
static const IID IID_IPDFConverterX =
{0xEF633BED, 0xC414,0x49B0,{0x91, 0xFB, 0xC3, 0x9C, 0x3F, 0xE0, 0x08, 0x0D}};
#undef INTERFACE
#define INTERFACE IPDFConverterX
DECLARE_INTERFACE_(IPDFConverterX, IDispatch)
{
STDMETHOD(QueryInterface)(THIS_ REFIID, PVOID*) PURE;
STDMETHOD(Convert)(THIS_ LPCTSTR, LPCTSTR, LPCTSTR) PURE;
STDMETHOD(About)(THIS) PURE;
//const SourceFile: WideString; const DestFile: WideString; const Params: WideString; safecall;
};
typedef HRESULT (__stdcall *hDllGetClassObjectFunc) (REFCLSID, REFIID, void **);
int main () {
HRESULT hr;
if (CoInitialize(NULL)) {
printf ("Error in CoInitialize.");
return -1;
}
LPCTSTR lpFileName = "PDFConverter.dll";
HMODULE hModule;
hModule = LoadLibrary (lpFileName);
printf ("hModule: %d\n", hModule);
if (hModule == 0) {
printf ("Error in LoadLibrary.");
return -1;
}
hDllGetClassObjectFunc hDllGetClassObject = NULL;
hDllGetClassObject = (hDllGetClassObjectFunc) GetProcAddress (hModule, "DllGetClassObject");
if (hDllGetClassObject == 0) {
printf ("Error in GetProcAddress.");
return -1;
}
IClassFactory *pCF = NULL;
hr = hDllGetClassObject (&CLSID_PDFConverterX, &IID_IClassFactory, (void **)&pCF);
/* Can't load with different ID */
printf ("hr hDllGetClassObject: %d\n", hr);
if (!SUCCEEDED (hr)) {
printf ("Error in hDllGetClassObject.");
return -1;
}
IPDFConverterX *pIN;
hr = pCF->lpVtbl->CreateInstance (pCF, 0, &IID_IPDFConverterX, (void **)&pIN);
printf ("hr CreateInstance: %d\n", hr);
if (!SUCCEEDED (hr)) {
printf ("Error in hDllGetClassObject.");
return -1;
}
hr = pCF->lpVtbl->Release (pCF);
printf ("hr Release: %d\n", hr);
if (!SUCCEEDED (hr)) {
printf ("Error in Release.");
return -1;
}
hr = pIN->lpVtbl->About (pIN);
printf ("hr About: %d\n", hr);
if (!SUCCEEDED (hr)) {
printf ("Error in About.");
return -1;
}
hr = pIN->lpVtbl->Convert (pIN, "test.pdf", "test.html","-cHTML");
printf ("hr Convert: %d\n", hr);
if (!SUCCEEDED (hr)) {
printf ("Error in Convert.");
return -1;
}
return 0;
}
dim C
Set C=CreateObject("PDFConverter.PDFConverterX")
C.Convert "c:\source.PDF", "c:\dest.HTML", "-cHTML -log c:\pdf.log"
set C = nothing
dim C
Set C=CreateObject("PDFConverter.PDFConverterX")
Response.Clear
Response.AddHeader "Content-Type", "binary/octet-stream"
Rresponse.AddHeader "Content-Disposition", "attachment; filename=test.TIFF"
Response.BinaryWrite c.ConvertToStream("C:\www\ASP\Source.PDF", "C:\www\ASP", "-cTIFF -log c:\PDF.log")
set C = nothing
$src="C:\\test.pdf";
$dest="C:\\test.tiff";
if (file_exists($dest)) unlink($dest);
$c= new COM("PDFConverter.PDFConverterX");
$c->convert($src,$dest, "-c TIFF -log c:\doc.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.tiff";
c.convert(src,dest, "-c TIFF -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.tiff";
c.convert(src, dest, "-c TIFF -log c:\\test\\PDF.log");
if not os.path.exists(file_path):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c:=CreateOleObject('PDFConverter.PDFConverterX');
C.Convert('c:\test\source.pdf', 'c:\test\dest.tiff', '-c TIFF -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.tiff", "-c TIFF");
if (c.ErrorMessage!="")
alert(c.ErrorMessage)
use Win32::OLE; my $src="C:\\test\\test.pdf"; my $dest="C:\\test\\test.tiff"; my $c = CreateObject Win32::OLE 'PDFConverter.PDFConverterX'; $c->convert($src,$dest, "-c TIFF -log c:\\test\\PDF.log"); print $c->ErrorMessage if -e $dest;
Download de gratis proefversie en converteer uw bestanden in enkele minuten.
Geen creditcard of e-mail vereist.