تحويل PDF إلى Excel و Markdown

تحويل 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, ExcelSaveOptionsMarkdownSaveOptions)`
Document.markdownText(MarkdownSaveOptions)يعيد الـ Markdown كـ String

انظر أيضاً

 العربية