تحويل PDF إلى Excel و Markdown
تحويل PDF إلى Excel و Markdown
يُظهر هذا الدليل كيفية تحويل PDF إلى مصنف Excel (.xlsx) أو إلى Markdown، وكيفية تحميل PDF مرة أخرى من أي من الصيغ. Document يقوم بالتحويل في كلا الاتجاهين؛ ExcelSaveOptions وMarkdownSaveOptions يضبطان عملية التصدير، وExcelLoadOptions وMarkdownLoadOptions يضبطان عملية الاستيراد. منذ الإصدار 26.9.0.
PDF إلى XLSX
الجداول المكتشفة في PDF تتحول إلى شبكات أوراق عمل بخلايا ذات نوع — الأرقام، التواريخ، القيم المنطقية، العملات والنسب المئوية تُكتب كقيم Excel حقيقية بدلاً من نص — ويتم نقل تنسيق المصدر (نوع الخط/الحجم، لون النص، تعبئة الخلية، الحدود، ارتفاعات الصفوف، عرض الأعمدة، المحاذاة، الخلايا المدمجة). تُدمج الصور داخل خلايا الجدول كرسومات.
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelSaveOptions;
try (Document doc = new Document("report.pdf")) {
ExcelSaveOptions options = new ExcelSaveOptions();
options.setFormat(ExcelSaveOptions.ExcelFormat.XLSX); // default
options.setMinimizeTheNumberOfWorksheets(true); // merge pages onto fewer sheets
options.setInsertBlankColumnAtFirst(false); // no leading spacer column
options.setUniformWorksheets(false); // allow per-sheet column widths
options.setStructuralHeuristics(true); // recover tables on untagged PDFs
options.setSuppressRunningHeadersFooters(true); // drop repeated page furniture
doc.save("report.xlsx", options);
}SaveFormat.Xlsx (اسم مستعار، SaveFormat.Excel، مقبول أيضاً) يعطي نفس النتيجة باستخدام الخيارات الافتراضية: doc.save("report.xlsx", SaveFormat.Xlsx). تعداد ExcelFormat الخاص بـ ExcelSaveOptions يقبل أيضاً XmlSpreadSheet2003 وCSV وODS لتوافق Aspose.PDF API، لكن هذه المكتبة تكتب دائماً حزمة .xlsx بغض النظر عن القيمة المحددة. يمكنك أيضًا الكتابة إلى تدفق باستخدام doc.save(OutputStream, ExcelSaveOptions).
XLSX إلى PDF، بما في ذلك النماذج الحية
حمّل مصنف .xlsx عبر مُنشئ Document يأخذ ExcelLoadOptions. كل ورقة تتحول إلى جدول PDF مع نفس دعم نوع الخلايا وتنسيقها كما في اتجاه التصدير.
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelLoadOptions;
try (Document doc = new Document("book.xlsx", new ExcelLoadOptions())) {
doc.save("book.pdf");
}ضبط ExcelLoadOptions.setInteractiveForms(true) يحول الخلايا الرقمية وخلايا التسمية إلى نموذج PDF “حيوي” بدلاً من نص ثابت: تصبح الخلايا الرقمية حقول نص قابلة للتحرير، وتتحول خلايا الصيغ إلى حقول للقراءة فقط تُعيد الحساب من مدخلاتها، وتبقى خلايا التسمية أو الثوابت نصًا ثابتًا ما لم تُشير إليها صيغة أخرى. ExcelFormulaTranslator يترجم كل صيغة إلى Acrobat JavaScript؛ الصيغة التي لا يدعم وظيفتها يتم الرجوع إلى قيمتها الثابتة المحسوبة الأخيرة، لذا لا يزال الحقل يعرض الرقم الصحيح. عملية إعادة الحساب نفسها تُنفّذ فقط في عارض يملك محرك forms/JavaScript — Adobe Acrobat أو Foxit؛ وعارض بدون ذلك المحرك يُظهر القيم المدمجة فقط، دون أي إعادة حساب حية.
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelLoadOptions;
ExcelLoadOptions options = new ExcelLoadOptions();
options.setInteractiveForms(true); // cells → fields, formulas → calculate actions
try (Document doc = new Document("invoice.xlsx", options)) {
doc.save("invoice-live.pdf");
}PDF إلى Markdown
Document يحول PDF إلى Markdown بنكهة CommonMark/GitHub: العناوين، الفقرات، القوائم، الجداول، التنسيق (عريض/مائل/خط مشطوب)، التعليمات البرمجية داخل السطر ومُحاطة، الروابط، الصور، وهوامش الملاحظات.
import org.aspose.pdf.Document;
import org.aspose.pdf.MarkdownSaveOptions;
try (Document doc = new Document("article.pdf")) {
MarkdownSaveOptions options = new MarkdownSaveOptions();
options.setStructuralHeuristics(true); // recover headings/lists/tables
options.setSuppressRunningHeadersFooters(true); // drop repeated page furniture
options.setRasterizeVectorGraphics(true); // charts/shapes -> referenced images
doc.save("article.md", options);
}SaveFormat.Markdown يعطي النتيجة نفسها مع الخيارات الافتراضية: doc.save("article.md", SaveFormat.Markdown). Document.markdownText(MarkdownSaveOptions) يُعيد الـ Markdown كـ String بدلاً من كتابة ملف (لا يوجد مسترجع منفصل لنص “Markdown text” — هذه الطريقة هي التي يجب استدعاؤها للحصول على نتيجة في الذاكرة).
Markdown إلى PDF
حمّل ملف Markdown عبر مُنشئ Document الذي يأخذ MarkdownLoadOptions. يقوم محلل فرعي مكتوب يدويًا CommonMark/GFM بقراءة المصدر: العناوين، الفقرات، القوائم، الجداول، التنسيق، الشيفرة، الروابط، الصور، الاقتباسات الكتلية وهوامش الملاحظات. الـ HTML الغريب المضمن في Markdown لا يتم إعادة إنتاجه بالكامل.
import org.aspose.pdf.Document;
import org.aspose.pdf.MarkdownLoadOptions;
try (Document doc = new Document("README.md", new MarkdownLoadOptions())) {
doc.save("README.pdf");
}نصائح وأفضل الممارسات
- الدقة هي بنيوية، وليست مطابقة للبكسل لأيٍ من الصيغتين: التحويلات تحافظ على المحتوى، الهيكل، الصور وجيومتري الصفحة، وليس المظهر المُظهر بدقة.
ExcelSaveOptions.ExcelFormatو الـMarkdownSaveOptionsعلامات البنية تغير فقط الـ output تنسيق الحزمة أو الخوارزميات — القيم الفعلية التي وُضعّت عليها علامات في ملف PDF الخاص بك لا تزال هي التي تحدد ما يتم اكتشافه كجدول أو عنوان أو قائمة.- بالنسبة لنماذج XLSX الحية، اعتبر القيم المدمجة في الخلايا كحل احتياطي صحيح: فقط عارض يدعم النماذج يعيد حساب الصيغ عند الفتح.
المشكلات الشائعة
| المشكلة | السبب | الإصلاح |
|---|---|---|
الإخراج بصيغة XLSX دائمًا يحتوي على امتداد .xlsx حتى بعد ضبط ExcelFormat.CSV أو ODS | دائمًا ما يقوم كاتب FOSS بتسلسل حزمة OOXML .xlsx؛ القيم الأخرى ExcelFormat موجودة فقط لتوافق Aspose.PDF API | اعتبر الإخراج كـ .xlsx بغض النظر عن قيمة ExcelFormat التي قمت بتعيينها |
| نموذج XLSX الذي يُعيد الحساب يعرض أرقامًا ثابتة بدلاً من الصيغ الحية | عارض PDF لا يحتوي على محرك النماذج/JavaScript | افتح الملف في Adobe Acrobat أو Foxit لرؤية إعادة الحساب الفورية |
| خلية الصيغة تُظهر قيمة تبدو قديمة | ExcelFormulaTranslator لا يدعم دالة تلك الصيغة | هذا هو الحل الاحتياطي الموثق: الحقل يحتفظ بآخر قيمة ثابتة تم حسابها |
FAQ
هل يمكنني الحصول على Markdown كـ String بدلاً من ملف؟
نعم — استدعِ Document.markdownText(MarkdownSaveOptions)؛ فهو يُرجع نص Markdown مباشرةً بدلاً من كتابته إلى ملف.
هل يدعم مستورد XLSX الصيغ الحقيقية لبرنامج Excel؟
فقط عندما يتم تعيين ExcelLoadOptions.setInteractiveForms(true)، وفقط مجموعة الدوال التي يمكن لـ ExcelFormulaTranslator ترجمتها إلى Acrobat JavaScript. كل شيء آخر يعود إلى القيمة الثابتة الأخيرة التي حسبتها الصيغة في مصنف المصدر.
API Reference ملخص
| فئة/طريقة | وصف |
|---|---|
ExcelSaveOptions | يضبط تصدير PDF إلى XLSX |
ExcelLoadOptions | يضبط استيراد XLSX إلى PDF، بما في ذلك النماذج الحية |
ExcelFormat | نمط جدول البيانات المستهدف المقبول من قبل ExcelSaveOptions |
ExcelFormulaTranslator | يحوّل صيغ Excel إلى Acrobat JavaScript للنماذج الحية |
MarkdownSaveOptions | يضبط تصدير PDF إلى Markdown |
MarkdownLoadOptions | يضبط استيراد Markdown إلى PDF |
Document.save(String, SaveFormat) / `Document.save(String, ExcelSaveOptions | MarkdownSaveOptions)` |
Document.markdownText(MarkdownSaveOptions) | يعيد الـ Markdown كـ String |