Python'da OneNote Dosyasını PDF Olarak Dışa Aktarma

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

  1. Sunucu dostu: herhangi bir işletim sisteminde çalışır, başsız Linux sunucuları ve CI/CD konteynerleri dahil
  2. Akış yeteneği: doğrudan bir io.BytesIO tamponuna kaydeder, geçici dosya gerekmez
  3. Ü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çenekTürVarsayılanAçıklama
PageIndexint0Alan mevcut; v26.3.1’de PDF exporter’a iletilmez: etkisi yok
PageCountint | NoneNoneAlan 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:

 Türkçe