تبدیل 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, ExcelSaveOptions | MarkdownSaveOptions)` |
Document.markdownText(MarkdownSaveOptions) | Markdown را به عنوان یک String برمیگرداند |