Python'da OneNote Dosyasını PDF Olarak Dışa Aktarma
Aspose.Note FOSS for Python, Microsoft OneNote .one bölüm dosyalarının programatik PDF dışa aktarımını, Microsoft Office veya herhangi bir işletim sistemi düzeyinde belge dönüştürücü gerektirmeden sağlar. Dışa aktarım, isteğe bağlı ReportLab PDF rendercısı tarafından desteklenen Document.Save() yöntemiyle gerçekleştirilir.
Faydalar
- Sunucu dostu: herhangi bir işletim sisteminde çalışır, başsız Linux sunucuları ve CI/CD konteynerleri dahil
- Akış yeteneği: doğrudan bir
io.BytesIOtamponuna kaydeder, geçici dosya gerekmez - Ücretsiz ve açık kaynaklı: MIT lisansı
Önkoşullar
PDF dışa aktarma, isteğe bağlı ReportLab bağımlılığını gerektirir. Bunu [pdf] ekstra paketi aracılığıyla kurun:
pip install "aspose-note[pdf]"Zaten aspose-note‘yi ekstra olmadan kurduysanız:
pip install --upgrade "aspose-note[pdf]"ReportLab’in mevcut olduğunu doğrulayın:
python -c "import reportlab; print(reportlab.Version)"Adım Adım Kılavuz
Adım 1: PDF Desteğiyle aspose-note’ı kurun
pip install "aspose-note[pdf]"Kurulumu onaylayın:
from aspose.note import Document, SaveFormat
print("Ready for PDF export.")Adım 2: OneNote Dosyasını Yükle
from aspose.note import Document
doc = Document("MyNotes.one")Adım 3: Tüm Belgeyi PDF Olarak Dışa Aktar
Varsayılan ayarlarla tüm sayfaları kapsayan en basit dışa aktarım:
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)
print("PDF saved to output.pdf")Adım 4: PdfSaveOptions kullanın
PdfSaveOptions PDF dışa aktarma ayarlarını yapılandırmanıza olanak tanır:
from aspose.note import Document
from aspose.note.saving import PdfSaveOptions
doc = Document("MyNotes.one")
opts = PdfSaveOptions()
doc.Save("output.pdf", opts)Mevcut PdfSaveOptions
| Seçenek | Tür | Varsayılan | Açıklama |
|---|---|---|---|
PageIndex | int | 0 | Alan mevcut; v26.3.1’de PDF exporter’a iletilmez: etkisi yok |
PageCount | int | None | None | Alan mevcut; v26.3.1’de PDF exporter’a iletilmez: etkisi yok |
Adım 5: Bellek içi akışa dışa aktar
Document.Save() ikili akışı doğrudan kabul eder: geçici dosya gerekmez:
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")Adım 6: Çoklu Dosyaları Toplu Olarak Dışa Aktar
Bir dizindeki tüm .one dosyalarını işleyin:
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}")Yaygın Sorunlar ve Çözümler
1. ImportError: ‘reportlab’ adlı bir modül bulunamadı
Sebep: [pdf] ekstra kurulmamıştı.
Düzelt:
pip install "aspose-note[pdf]"2. UnsupportedSaveFormatException
Neden: SaveFormat.Pdf dışındaki bir format kullanıldı. Yalnızca SaveFormat.Pdf uygulanmıştır.
Düzeltme: Her zaman dışa aktarma için SaveFormat.Pdf kullanın. Diğer formatlar API uyumluluğu için bildirilmiştir ancak UnsupportedSaveFormatException hatasını verir.
3. IncorrectPasswordException
Sebep: .one dosyası şifrelenmiş. Şifrelenmiş belgeler desteklenmiyor.
Fix: Şifrelenmemiş .one dosyasını kullanın. Ticari Aspose.Note ürünü şifrelemeyi destekler.
4. FileNotFoundError
Neden: Giriş .one dosya yolu hatalı.
Düzeltme: Yüklemeden önce doğrulamak için pathlib.Path.exists() kullanın:
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. Çıktı PDF boş veya içi boş
Neden: .one dosyası sayfalar içeriyor ancak metin içeriği yok (sadece metinsiz görüntüler veya tablolar). PDF oluşturucu, DOM’dan ReportLab’ın render edebildiği şeylere göre sayfalar üretir.
Düzeltme: Dışa aktarmadan önce sayfa içeriğini doğrulayın:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
text_count = len(doc.GetChildNodes(RichText))
print(f"RichText nodes found: {text_count}")Sıkça Sorulan Sorular
Hangi kaydetme formatları destekleniyor?
Şu anda yalnızca SaveFormat.Pdf uygulanmıştır. SaveFormat enum’unda tam olarak bir üye vardır: SaveFormat.Pdf.
Bir dosya yerine bir akışa dışa aktarabilir miyim?
Evet. Document.Save() ilk argümanı olarak herhangi bir yazılabilir ikili akışı kabul eder:
import io
from aspose.note import Document, PdfSaveOptions, SaveFormat
doc = Document("MyNotes.one")
buf = io.BytesIO()
doc.Save(buf, PdfSaveOptions())
pdf_bytes = buf.getvalue()Dışa aktarma sayfa sırasını korur mu?
Evet. Sayfalar, DOM’da göründükleri aynı sırayla dışa aktarılır (Document‘yi yineleyerek döndürülen sıra).
Linux’ta PDF dışa aktarımı mevcut mu?
Evet. ReportLab ve Aspose.Note FOSS for Python her ikisi de OS bağımsızdır.
Sayfaların bir alt kümesini dışa aktarabilir miyim?
PdfSaveOptions.PageIndex ve PageCount alanları mevcut, ancak v26.3.1’de PDF dışa aktarıcısına iletilmiyor ve hiçbir etkisi yok: tüm belge her zaman dışa aktarılıyor.
İlgili Kaynaklar: