لديك مجلدات من تقارير PDF أو كشوف حسابات بنكية أو إيداعات تنظيمية تحتوي على جداول محبوسة بداخلها — وتحتاج هذه الأرقام في Excel لتتمكّن من فرزها وتصفيتها وتشغيل صيغ عليها. النسخ واللصق من PDF نادرًا ما يُبقي الأعمدة محاذاة، وإعادة تنسيق مئات الملفات يدويًا ليس عملًا، إنه عقاب. Total PDF Converter X يستخرج الجداول من ملفات PDF إلى مصنّفات XLS من سطر الأوامر، دفعةً، بدون واجهة رسومية وبدون الحاجة إلى تثبيت Microsoft Excel. ثبّته على خادم 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. يستغرق التثبيت أقل من دقيقة. لا حاجة لتثبيت متصفح أو Microsoft Excel — يحلّل المحوّل طبقة نص PDF بمحرّكه الخاص ويكتب ملف XLS مباشرةً.
افتح cmd.exe أو PowerShell. الملف التنفيذي للمحوّل هو PDFConverter.exe، ويقع في مجلد التثبيت (عادةً C:\Program Files\CoolUtils\TotalPDFConverterX\). أضفه إلى متغيّر PATH في النظام أو استخدم المسار الكامل في أوامرك.
أبسط أمر يُحوّل جميع ملفات PDF في مجلد إلى XLS:
PDFConverter.exe C:\Reports\*.pdf C:\Output\ -c XLS
يُعالج هذا كل ملف .pdf في C:\Reports\ ويحفظ مصنّفات 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 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
يُشغّل هذا الاستخراج كل ليلة (أو بأي فاصل زمني تحدّده) ويكتب ملف سجل لكي تتمكّن من التحقق من النتائج.
يتضمّن Total PDF Converter X واجهة ActiveX كاملة. يمكنك استدعاء المحوّل من أي بيئة متوافقة مع COM — .NET أو VBScript أو PHP أو Python أو Ruby أو ASP. يتيح لك ذلك دمج استخراج PDF إلى 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 |
|---|---|---|
| المعالجة الدفعية | ملف واحد في كل مرة | عدد غير محدود من الملفات لكل دفعة |
| خصوصية الملفات | تُرفع الكشوف إلى خادم طرف ثالث | الملفات لا تغادر جهازك |
| محاذاة الأعمدة | غالبًا ما تنهار الأعمدة في خلية واحدة | يكتشف حدود الأعمدة من طبقة النص |
| المصنّفات متعددة الصفحات | ورقة واحدة، لا تحكّم | -EachPageSeparate لورقة واحدة لكل صفحة |
| الأتمتة | يدوي فقط | سطر الأوامر، .bat، Task Scheduler، ActiveX |
| النشر على الخادم | غير ممكن | مصمّم للخوادم، لا حاجة لواجهة رسومية |
| يتطلب تثبيت Excel | غير قابل للتطبيق | لا |
| يتطلب إنترنت | نعم | لا |
يكتب المحوّل ملفات XLS صالحة مباشرةً. لست بحاجة إلى تثبيت Microsoft Office أو LibreOffice أو أي برنامج جداول بيانات على الخادم. يتجنّب ذلك تكاليف الترخيص وعدم الاستقرار المعروف لأتمتة Excel في سيناريوهات غير مُشرف عليها.
صُمِّم Total PDF Converter X للاستخدام دون إشراف. لا نوافذ واجهة رسومية، لا مربعات حوار، لا مطالبات تأكيد. يعمل بصمت من سطر الأوامر أو كجزء من خدمة — تمامًا ما يحتاجه خادم الإنتاج.
يحتوي إخراج 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 إلى XLS أثناء الليل بمهمة .bat واحدة. تصطف الأعمدة بشكل صحيح، وتتطابق الإجماليات مع المصدر، ويقرأ ماكرو التسوية لدينا المصنّفات بنفس الطريقة التي يقرأ بها الملفات المصدَّرة من ERP. كانت علامة -EachPageSeparate هي الميزة الحاسمة — الكشوف متعددة الصفحات تنزل الآن في ورقة واحدة لكل حساب."
Caroline Whitfield Senior Accountant, Regional Manufacturing Group
"تعود حزم نهاية الربع من المدقّقين كتقارير PDF. كان سحبها إلى Excel يدويًا مهمة من يومين. ربطنا المحوّل بأداة التقارير الداخلية لدينا عبر واجهة ActiveX؛ يرفع الفريق الآن ملف PDF ويحصل على XLS صالح في ثوانٍ. تعمل الجداول المحورية وصيغ التحليل الموجودة لدينا مباشرةً على الإخراج. لا تثبيت Office على الخادم، وهو ما أرادته المالية وتقنية المعلومات معًا."
Tobias Lindgren Financial Controller, Logistics SaaS
"تصل قوائم أسعار المورّدين بصيغة PDF كل أسبوع من حوالي ثلاثين مورّدًا. كان نسخ الجداول يدويًا غير موثوق — استمرّت الأعمدة في الانهيار. يسحب محوّل سطر الأوامر كل قائمة إلى XLS كجزء من تحميلنا الأسبوعي، ويتم اكتشاف حدود الأعمدة بشكل صحيح على جميع المورّدين باستثناء واحد (يستخدم PDF لديهم تخطيطًا غريبًا). للباقي، تغذّي المصنّفات نموذج التسعير لدينا مباشرةً. يمكن أن تكون الوثائق حول علامات اكتشاف الأعمدة أكثر شمولًا قليلًا، لكن الدعم ردّ في نفس اليوم."
Priya Ramanathan Pricing Analyst, B2B Distributor
PDFConverter.exe C:\Reports\*.pdf C:\Output\ -c XLS. يُحوّل هذا كل ملف PDF في المجلد المصدر إلى XLS. أضف -EachPageSeparate لوضع كل صفحة PDF على ورقة خاصة بها، أو -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;
قم بتنزيل النسخة التجريبية المجانية وحول ملفاتك في دقائق.
لا تحتاج إلى بطاقة ائتمان أو بريد إلكتروني.
