تبدیل PDF به Excel و Markdown

تبدیل PDF به Excel و Markdown

تبدیل PDF به Excel و Markdown

این راهنما نشان می‌دهد چگونه یک PDF را به یک کتاب کار Excel (.xlsx) یا به Markdown تبدیل کنید و چگونه یک PDF را از هر یک از این فرمت‌ها بارگذاری کنید. Document تبدیل را در هر دو جهت انجام می‌دهد؛ ExcelSaveOptions و MarkdownSaveOptions خروجی را تنظیم می‌کنند، و ExcelLoadOptions و MarkdownLoadOptions واردات را تنظیم می‌کنند. از نسخه ۲۶.۹.۰.


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). enum 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 «live» تبدیل می‌کند به جای متن ثابت: سلول‌های عددی تبدیل به فیلدهای متنی قابل ویرایش می‌شوند، سلول‌های فرمول تبدیل به فیلدهای فقط-خواندنی می‌شوند که از ورودی‌هایشان مجدداً محاسبه می‌گردند، و سلول‌های برچسب یا ثابت به صورت متن ثابت می‌مانند مگر اینکه فرمول دیگری به آن‌ها ارجاع دهد. 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» وجود ندارد — این روش برای دریافت نتیجه در حافظه استفاده می‌شود).


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، مقادیر از پیش‌ذخیره‌شدهٔ سلول‌ها را به‌عنوان بازگشت صحیح در نظر بگیرید: فقط یک نمایشگر capable از فرم‌ها فرمول‌ها را هنگام باز شدن دوباره محاسبه می‌کند.

مشکلات رایج

مسئلهدلیلرفع
خروجی XLSX همیشه پسوند .xlsx دارد حتی پس از تنظیم ExcelFormat.CSV یا ODSنویسندهٔ منبع‌باز همیشه یک بسته 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فرمول‌های اکسل را به JavaScript Acrobat برای فرم‌های زنده ترجمه می‌کند
MarkdownSaveOptionsصادرات PDF به Markdown را تنظیم می‌کند
MarkdownLoadOptionsتنظیم واردات Markdown به PDF
Document.save(String, SaveFormat) / `Document.save(String, ExcelSaveOptionsMarkdownSaveOptions)`
Document.markdownText(MarkdownSaveOptions)Markdown را به عنوان یک String برمی‌گرداند

همچنین ببینید:

 فارسی