Python में OneNote फ़ाइल को PDF में निर्यात कैसे करें
Aspose.Note FOSS for Python Microsoft OneNote .one सेक्शन फ़ाइलों का प्रोग्रामेटिक PDF निर्यात सक्षम करता है, बिना Microsoft Office या किसी ऑपरेटिंग‑सिस्टम‑स्तर के दस्तावेज़ कनवर्टर की आवश्यकता के। निर्यात Document.Save() मेथड द्वारा संभाला जाता है, जो वैकल्पिक ReportLab PDF रेंडरर द्वारा समर्थित है।
लाभ
- Server-friendly: किसी भी OS पर चलता है, जिसमें हेडलेस लिनक्स सर्वर और CI/CD कंटेनर शामिल हैं
- Stream-capable: सीधे एक
io.BytesIOबफ़र में सहेजें, कोई अस्थायी फ़ाइल आवश्यक नहीं - Free and open-source: MIT लाइसेंस
पूर्वापेक्षाएँ
PDF निर्यात के लिए वैकल्पिक ReportLab निर्भरता आवश्यक है। इसे [pdf] अतिरिक्त के माध्यम से स्थापित करें:
pip install "aspose-note[pdf]"यदि आपके पास पहले से aspose-note अतिरिक्त के बिना स्थापित है:
pip install --upgrade "aspose-note[pdf]"सुनिश्चित करें कि ReportLab उपलब्ध है:
python -c "import reportlab; print(reportlab.Version)"चरण-दर-चरण गाइड
चरण 1: PDF समर्थन के साथ aspose-note स्थापित करें
pip install "aspose-note[pdf]"स्थापना की पुष्टि करें:
from aspose.note import Document, SaveFormat
print("Ready for PDF export.")चरण 2: OneNote फ़ाइल लोड करें
from aspose.note import Document
doc = Document("MyNotes.one")चरण 3: संपूर्ण दस्तावेज़ को PDF में निर्यात करें
सबसे सरल निर्यात, सभी पृष्ठों को डिफ़ॉल्ट सेटिंग्स के साथ कवर करता है:
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)
print("PDF saved to output.pdf")चरण 4: PdfSaveOptions का उपयोग करें
PdfSaveOptions आपको PDF निर्यात सेटिंग्स को कॉन्फ़िगर करने की अनुमति देता है:
from aspose.note import Document
from aspose.note.saving import PdfSaveOptions
doc = Document("MyNotes.one")
opts = PdfSaveOptions()
doc.Save("output.pdf", opts)उपलब्ध PdfSaveOptions
| Option | Type | Default | Description |
|---|---|---|---|
PageIndex | int | 0 | फ़ील्ड मौजूद है; v26.3.1 में PDF निर्यातकर्ता को नहीं भेजा गया: कोई प्रभाव नहीं है |
PageCount | int | None | None | फ़ील्ड मौजूद है; v26.3.1 में PDF निर्यातकर्ता को नहीं भेजा गया: कोई प्रभाव नहीं है |
चरण 5: इन‑मेमोरी स्ट्रीम में निर्यात करें
Document.Save() सीधे बाइनरी स्ट्रीम को स्वीकार करता है: कोई अस्थायी फ़ाइल आवश्यक नहीं है:
import io
from aspose.note import Document, SaveFormat
from aspose.note.saving import PdfSaveOptions
doc = Document("MyNotes.one")
buf = io.BytesIO()
doc.Save(buf, PdfSaveOptions())
pdf_bytes = buf.getvalue()
print(f"PDF size: {len(pdf_bytes)} bytes")चरण 6: कई फ़ाइलों का बैच निर्यात
डायरेक्टरी में सभी .one फ़ाइलों को प्रोसेस करें:
from pathlib import Path
from aspose.note import Document, SaveFormat
input_dir = Path("./onenote_files")
output_dir = Path("./pdf_output")
output_dir.mkdir(exist_ok=True)
for one_file in input_dir.glob("*.one"):
doc = Document(str(one_file))
out_path = output_dir / one_file.with_suffix(".pdf").name
doc.Save(str(out_path), SaveFormat.Pdf)
print(f"Exported: {one_file.name} -> {out_path.name}")सामान्य समस्याएँ और समाधान
1. ImportError: No module named ‘reportlab’
कारण: [pdf] एक्स्ट्रा स्थापित नहीं किया गया था।
सुधार:
pip install "aspose-note[pdf]"2. UnsupportedSaveFormatException
Cause: SaveFormat.Pdf के अलावा कोई अन्य फ़ॉर्मेट उपयोग किया गया था। केवल SaveFormat.Pdf लागू किया गया है।
सुधार: हमेशा निर्यात के लिए SaveFormat.Pdf का उपयोग करें। अन्य फ़ॉर्मेट API संगतता के लिए घोषित किए गए हैं लेकिन UnsupportedSaveFormatException उत्पन्न करते हैं।
3. IncorrectPasswordException
कारण: .one फ़ाइल एन्क्रिप्टेड है। एन्क्रिप्टेड दस्तावेज़ समर्थित नहीं हैं।
Fix: एक अनएन्क्रिप्टेड .one फ़ाइल का उपयोग करें। व्यावसायिक Aspose.Note उत्पाद एन्क्रिप्शन का समर्थन करता है।
4. FileNotFoundError
कारण: इनपुट .one फ़ाइल पथ गलत है।
सुधार: लोड करने से पहले pathlib.Path.exists() का उपयोग करके सत्यापित करें:
from pathlib import Path
from aspose.note import Document, SaveFormat
path = Path("MyNotes.one")
assert path.exists(), f"File not found: {path.resolve()}"
doc = Document(str(path))
doc.Save("output.pdf", SaveFormat.Pdf)5. आउटपुट PDF खाली या रिक्त है
कारण: .one फ़ाइल में पृष्ठ हैं लेकिन कोई पाठ सामग्री नहीं है (केवल छवियां या बिना पाठ वाली तालिकाएँ)। PDF रेंडरर पृष्ठ उत्पन्न करता है जो ReportLab DOM से रेंडर कर सकता है।
Fix: निर्यात करने से पहले पृष्ठ सामग्री की जाँच करें:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
text_count = len(doc.GetChildNodes(RichText))
print(f"RichText nodes found: {text_count}")अक्सर पूछे जाने वाले प्रश्न
कौन से सहेजने के फ़ॉर्मेट समर्थित हैं?
केवल SaveFormat.Pdf वर्तमान में लागू किया गया है। SaveFormat enum में ठीक एक सदस्य है: SaveFormat.Pdf।
क्या मैं फ़ाइल के बजाय स्ट्रीम में निर्यात कर सकता हूँ?
हाँ। Document.Save() अपने पहले तर्क के रूप में किसी भी लिखने योग्य बाइनरी स्ट्रीम को स्वीकार करता है:
import io
from aspose.note import Document, PdfSaveOptions, SaveFormat
doc = Document("MyNotes.one")
buf = io.BytesIO()
doc.Save(buf, PdfSaveOptions())
pdf_bytes = buf.getvalue()क्या निर्यात पृष्ठ क्रम को बनाए रखता है?
हाँ। पृष्ठ उसी क्रम में निर्यात किए जाते हैं जैसा कि वे DOM में दिखाई देते हैं (इटरेट करने पर प्राप्त क्रम Document)।
क्या Linux पर PDF निर्यात उपलब्ध है?
हाँ। ReportLab और Aspose.Note FOSS for Python दोनों OS-स्वतंत्र हैं।
क्या मैं पृष्ठों का एक उपसमुच्चय निर्यात कर सकता हूँ?
PdfSaveOptions.PageIndex और PageCount फ़ील्ड मौजूद हैं लेकिन v26.3.1 में PDF एक्सपोर्टर को फ़ॉरवर्ड नहीं किए जाते और उनका कोई प्रभाव नहीं पड़ता: पूरा दस्तावेज़ हमेशा निर्यात किया जाता है।
संबंधित संसाधन: