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). ExcelSaveOptions का अपना ExcelFormat enum भी 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");
}Setting ExcelLoadOptions.setInteractiveForms(true) को सेट करने से संख्यात्मक और लेबल कोशिकाएँ स्थैतिक टेक्स्ट के बजाय “live” PDF फ़ॉर्म बन जाती हैं: संख्यात्मक कोशिकाएँ संपादन योग्य टेक्स्ट फ़ील्ड बन जाती हैं, फ़ॉर्मूला कोशिकाएँ केवल-पढ़ने योग्य फ़ील्ड बनती हैं जो उनके इनपुट से पुनर्गणना करती हैं, और लेबल या स्थिर कोशिकाएँ स्थैतिक टेक्स्ट ही रहती हैं जब तक कोई अन्य फ़ॉर्मूला उनका संदर्भ न ले। ExcelFormulaTranslator प्रत्येक फ़ॉर्मूला को Acrobat JavaScript में अनुवादित करता है; वह फ़ॉर्मूला जिसका फ़ंक्शन यह समर्थन नहीं करता, अपने अंतिम गणना किए गए स्थैतिक मान पर वापस आ जाता है, इसलिए फ़ील्ड अभी भी सही संख्या दिखाता है। पुनर्गणना केवल उस व्यूअर में चलती है जिसमें forms/JavaScript इंजन हो — Adobe Acrobat या Foxit; उस इंजन के बिना व्यूअर केवल बेक्ड-इन मान दिखाता है, बिना live पुनर्गणना के।
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-स्वाद वाले 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 text” एक्सेसर नहीं है — इस मेथड को इन-मेमारी परिणाम के लिए कॉल किया जाता है)।
Markdown से PDF
एक Document कंस्ट्रक्टर के माध्यम से जो MarkdownLoadOptions लेता है, एक Markdown फ़ाइल लोड करें। एक हाथ से लिखा गया CommonMark/GFM उपसमुच्चय पार्सर स्रोत को पढ़ता है: शीर्षक, पैराग्राफ, सूचियाँ, तालिकाएँ, ज़ोर, कोड, लिंक, छवियाँ, ब्लॉककोट और फुटनोट्स। Markdown में एम्बेड किया गया विदेशी HTML पूरी तरह से पुनरुत्पादित नहीं होता।
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 व्यूअर में कोई forms/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 | एक्सेल फ़ॉर्मूले को Acrobat JavaScript में लाइव फॉर्म्स के लिए अनुवादित करता है |
MarkdownSaveOptions | PDF से Markdown निर्यात को ट्यून करता है |
MarkdownLoadOptions | Markdown से PDF आयात को ट्यून करता है |
Document.save(String, SaveFormat) / `Document.save(String, ExcelSaveOptions | MarkdownSaveOptions)` |
Document.markdownText(MarkdownSaveOptions) | Markdown को String के रूप में लौटाता है |