표가 잠겨 있는 PDF 보고서, 은행 명세서 또는 규제 신고서가 폴더에 가득 들어 있고, 이러한 숫자를 Excel에 옮겨 정렬, 필터링, 수식 실행을 해야 합니다. PDF에서 복사-붙여넣기를 해도 열 정렬이 거의 유지되지 않으며, 수백 개의 파일을 손으로 다시 서식화하는 것은 일이 아니라 형벌입니다. Total PDF Converter X는 GUI 없이, Microsoft Excel 설치 없이 명령줄에서 PDF 파일의 표를 일괄로 XLS 워크북으로 추출합니다. Windows 서버에 설치하고 스크립트나 ActiveX를 통해 호출하면 무인으로 실행됩니다.
*.pdf)를 전달하면 변환기가 한 번의 실행으로 일치하는 모든 파일을 처리합니다-EachPageSeparate를 사용하여 각 PDF 페이지를 별도 시트에 작성하거나 모든 페이지를 하나로 병합
(30일, 이메일 불필요)
(서버 라이선스, 영구)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
PDF는 최종 형식 문서 형식입니다. 페이지가 고정되고 레이아웃이 동결되며, 그 위의 데이터는 읽기, 인쇄 또는 보관을 위한 것입니다 — 다시 계산하기 위한 것이 아닙니다. PDF의 은행 명세서는 잔액을 보여줍니다. 이자 가정을 변경하고 열이 업데이트되는 것을 보지는 못합니다. PDF 내부의 표는 표처럼 보이지만 그 아래에서는 페이지의 좌표에 위치한 텍스트일 뿐입니다.
XLS는 작업 형식입니다. 모든 숫자는 행, 열, 데이터 유형이 있는 셀에 위치합니다. 정렬, 필터링, 피벗, 수식 추가, 차트 그리기, 그리고 결과를 다운스트림 모델에 공급할 수 있습니다. 표 형식 데이터가 PDF로 도착하고 다음 단계가 분석일 때, 데이터는 먼저 XLS가 되어야 합니다.
| XLS | ||
|---|---|---|
| 목적 | 읽기 및 인쇄용 최종 형식 출력 | 분석 및 재계산용 작업 형식 |
| 셀 및 수식 | 없음 — 페이지에 위치한 텍스트 | 네이티브 셀, 수식, 참조, 차트 |
| 정렬 및 필터 | 지원되지 않음 | 기본 제공 |
| 피벗 테이블 | 불가능 | 네이티브 Excel 기능 |
| 복사-붙여넣기 충실도 | 열이 자주 하나로 축소됨 | 열이 분리된 상태 유지 |
| 대상 | 독자, 아카이브, 규제 기관 | 분석가, 회계사, 컨트롤러 |
위의 링크에서 설치 프로그램을 다운로드하고 Windows 서버 또는 워크스테이션에서 실행합니다. 설치는 1분 이내에 완료됩니다. 브라우저나 Microsoft Excel 설치는 필요하지 않습니다 — 변환기는 자체 엔진으로 PDF 텍스트 레이어를 파싱하고 XLS 파일을 직접 작성합니다.
cmd.exe 또는 PowerShell을 엽니다. 변환기 실행 파일은 설치 폴더(일반적으로 C:\Program Files\CoolUtils\TotalPDFConverterX\)에 있는 PDFConverter.exe입니다. 시스템 PATH에 추가하거나 명령에서 전체 경로를 사용하십시오.
가장 간단한 명령은 폴더의 모든 PDF 파일을 XLS로 변환합니다:
PDFConverter.exe C:\Reports\*.pdf C:\Output\ -c XLS
이 명령은 C:\Reports\의 모든 .pdf 파일을 처리하고 결과 XLS 워크북을 C:\Output\에 저장합니다. 각 PDF는 같은 기본 이름으로 하나의 XLS 파일을 생성합니다.
추가 플래그로 워크북 출력을 제어합니다:
PDFConverter.exe C:\Reports\*.pdf C:\Output\ -c XLS -EachPageSeparate -log C:\Logs\pdf2xls.log
-EachPageSeparate — 워크북 안에서 각 PDF 페이지를 별도 시트에 배치-log C:\Logs\pdf2xls.log — 확인용 변환 로그 작성명령을 .bat 파일에 저장하고 Windows 작업 스케줄러로 예약합니다:
@echo off "C:\Program Files\CoolUtils\TotalPDFConverterX\PDFConverter.exe" C:\Incoming\*.pdf C:\Archive\XLS\ -c XLS -EachPageSeparate -log C:\Logs\pdf2xls.log
이렇게 하면 매일 밤(또는 설정한 간격으로) 추출이 실행되고 결과를 확인할 수 있는 로그 파일이 기록됩니다.
Total PDF Converter X에는 완전한 ActiveX 인터페이스가 포함되어 있습니다. .NET, VBScript, PHP, Python, Ruby, ASP 등 모든 COM 호환 환경에서 변환기를 호출할 수 있습니다. 이를 통해 명령줄 프로세스를 별도로 실행하지 않고도 자체 웹 애플리케이션, 인트라넷 포털 또는 회계 워크플로에 PDF-to-XLS 추출을 내장할 수 있습니다.
예제 (C#/.NET):
PDFConverterX Cnv = new PDFConverterX();
Cnv.Convert("C:\\Reports\\statement.pdf", "C:\\Output\\statement.xls", "-c XLS -EachPageSeparate -log c:\\Logs\\pdf.log");
예제 (PHP):
$c = new COM("PDFConverter.PDFConverterX");
$c->convert("C:\\Reports\\statement.pdf", "C:\\Output\\statement.xls", "-c XLS -EachPageSeparate -log c:\\Logs\\pdf.log");
동일한 호출이 ASP.NET, VBScript, Python, Ruby, Perl, JavaScript(Windows Script Host)에서도 작동합니다. 웹 애플리케이션에서 업로드된 PDF를 수신하고 실시간으로 Excel 워크북을 사용자에게 반환할 수 있습니다.
| 기능 | 온라인 변환기 | Total PDF Converter X |
|---|---|---|
| 일괄 처리 | 한 번에 한 파일 | 배치당 무제한 파일 |
| 파일 프라이버시 | 명세서가 제3자 서버에 업로드됨 | 파일이 사용자 컴퓨터를 떠나지 않음 |
| 열 정렬 | 종종 열이 한 셀로 축소됨 | 텍스트 레이어에서 열 경계 감지 |
| 다중 페이지 워크북 | 단일 시트, 제어 불가 | 페이지당 한 시트를 위한 -EachPageSeparate |
| 자동화 | 수동 전용 | 명령줄, .bat, 작업 스케줄러, ActiveX |
| 서버 배포 | 불가능 | 서버용 설계, GUI 불필요 |
| Excel 설치 필요 | 해당 없음 | 아니오 |
| 인터넷 필요 | 예 | 아니오 |
변환기는 유효한 XLS 파일을 직접 작성합니다. 서버에 Microsoft Office, LibreOffice 또는 스프레드시트 프로그램을 설치할 필요가 없습니다. 이를 통해 라이선스 비용과 무인 시나리오에서 Excel 자동화의 잘 알려진 불안정성을 피할 수 있습니다.
Total PDF Converter X는 무인 사용을 위해 설계되었습니다. GUI 창, 대화 상자, 확인 프롬프트가 없습니다. 명령줄 또는 서비스의 일부로 조용히 실행됩니다 — 프로덕션 서버에 필요한 바로 그 방식입니다.
XLS 출력에는 실제 데이터 유형이 있는 실제 셀이 포함됩니다. 숫자는 숫자형이며 열은 열에 머물고 정렬, 필터링, 수식, 피벗 테이블, 차트 등 모든 Excel 기능이 즉시 작동합니다. 이것은 구분 기호와 함께 단일 셀에 덤프된 텍스트가 아닙니다 — 진정한 워크북입니다.
같은 명령줄 도구로 PDF를 DOC, XLSX, CSV, HTML, TIFF, JPEG, TXT 등으로 변환할 수 있습니다. 하나의 설치로 모든 PDF 추출 요구 사항을 충족합니다. -c XLS를 -c CSV로 변경하면 동일한 일괄 처리 및 자동화 기능으로 CSV 출력을 얻을 수 있습니다. 변환기는 텍스트 기반 PDF에서 작동합니다 — 스캔된 이미지 전용 PDF는 먼저 OCR이 필요하며, 이는 이 제품에 포함되어 있지 않습니다.
(30일, 이메일이나 신용카드 불필요)
(서버 라이선스, 영구)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
"우리는 매달 약 180개의 공급업체 청구서와 은행 명세서를 처리하며 모두 PDF로 도착합니다. Total PDF Converter X는 단일 .bat 작업으로 야간에 이를 XLS로 변환합니다. 열이 올바르게 정렬되고 합계가 소스와 일치하며 우리 조정 매크로는 ERP에서 내보낸 파일을 읽는 것과 같은 방식으로 워크북을 읽습니다. -EachPageSeparate 플래그가 결정적인 기능이었습니다 — 다중 페이지 명세서가 이제 계정당 하나의 시트로 떨어집니다."
Caroline Whitfield Senior Accountant, Regional Manufacturing Group
"감사인의 분기 말 패키지가 PDF 보고서로 돌아옵니다. 손으로 Excel에 가져오는 것은 이틀짜리 작업이었습니다. 우리는 ActiveX 인터페이스를 통해 변환기를 내부 보고 도구에 연결했습니다. 팀은 이제 PDF를 업로드하고 몇 초 만에 작동하는 XLS를 받습니다. 피벗 테이블과 기존 분석 수식이 출력에서 바로 작동합니다. 서버에 Office 설치가 필요 없습니다 — 재무와 IT가 모두 원했던 것입니다."
Tobias Lindgren Financial Controller, Logistics SaaS
"공급업체 가격표가 약 30개 공급업체에서 매주 PDF로 도착합니다. 손으로 표를 복사하는 것은 신뢰할 수 없었습니다 — 열이 계속 무너졌습니다. 명령줄 변환기는 매주 로딩의 일부로 모든 가격표를 XLS로 가져오며 열 경계는 한 공급업체(이상한 레이아웃의 PDF를 사용)를 제외한 모두에서 올바르게 감지됩니다. 나머지의 경우 워크북이 가격 모델에 직접 공급됩니다. 열 감지 플래그에 대한 설명서가 좀 더 자세할 수 있겠지만 지원팀은 같은 날 답변했습니다."
Priya Ramanathan Pricing Analyst, B2B Distributor
PDFConverter.exe C:\Reports\*.pdf C:\Output\ -c XLS입니다. 이 명령은 소스 폴더의 모든 PDF 파일을 XLS로 변환합니다. 각 PDF 페이지를 별도 시트에 배치하려면 -EachPageSeparate를 추가하거나, 확인 로그를 작성하려면 -log를 추가하세요.-EachPageSeparate 플래그를 추가하면 변환기가 PDF 페이지당 한 시트가 있는 다중 시트 워크북을 만듭니다. 이 플래그가 없으면 모든 페이지가 단일 시트로 병합됩니다. 모든 페이지가 다른 계정이나 기간을 다루는 월별 명세서에 유용합니다.
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;
무료 평가판을 다운로드하고 몇 분 만에 파일을 변환하세요.
신용카드나 이메일이 필요하지 않습니다.