המרת 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 ללא קשר לערך שנקבע. ניתן גם לכתוב ל-stream באמצעות 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 ל-CommonMark / GitHub-Flavored Markdown: כותרות, פסקאות, רשימות, טבלאות, הדגשה (מודגש/נטוי/קו חוצה), קוד מוטבע וקוד מוקף, קישורים, תמונות והערות שוליים.
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, יש להתייחס לערכי התא המוטמעים כפתרון גיבוי נכון: רק מציג תומך בטפסים מחשב מחדש נוסחאות בפתיחה.
בעיות נפוצות
| בעיה | סיבה | פתרון |
|---|---|---|
פלט XLSX תמיד כולל סיומת .xlsx גם אחרי הגדרת ExcelFormat.CSV או ODS | הכותב הפתוח תמיד מסדרת חבילה OOXML .xlsx; הערכים האחרים ExcelFormat קיימים רק לצורך תאימות Aspose.PDF API | התייחס לתוצאה כ-.xlsx ללא קשר לערך ExcelFormat שהגדרת |
| טופס XLSX שמחשב מחדש מציג מספרים סטטיים במקום נוסחאות חיות | למציג ה-PDF אין מנוע forms/JavaScript | פתח את הקובץ ב-Adobe Acrobat או Foxit כדי לראות חישוב מחדש בזמן אמת |
| תא עם נוסחה מציג ערך שנראה מיושן | ExcelFormulaTranslator אינו תומך בפונקציית הנוסחה ההיא | זהו fallback המתועד: השדה שומר את הערך הסטטי האחרון שלו שחושב |
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 |