Jak eksportować plik OneNote do PDF w Pythonie

Jak eksportować plik OneNote do PDF w Pythonie

Aspose.Note FOSS for Python enables programmatic PDF export of Microsoft OneNote .one pliki sekcji bez konieczności konwertowania Microsoft Office lub jakiegokolwiek dokumentu na poziomie systemu operacyjnego. Document.Save() Metoda wspierana przez opcjonalne ReportLab Renderowanie PDF.

Korzyści

  1. Przyjazny dla serwera:- działa na dowolnym systemie operacyjnym, w tym bezgłówne serwery Linux i kontenery CI/CD
  2. Stream zdolny:• Zostaw bezpośrednio do io.BytesIO - nie potrzebne pliki tymczasowe, nie wymagane pliky
  3. Bezpłatne i open source:• licencja MIT

Warunki

Eksport PDF wymaga opcjonalnej zależności ReportLab. zainstaluj ją poprzez [pdf] Dodatkowe :

pip install aspose-note

Jeśli już masz aspose-note Instalacja bez dodatkowych:

pip install --upgrade "aspose-note[pdf]"

Sprawdź, czy raport jest dostępny:

python -c "import reportlab; print(reportlab.Version)"

Przewodnik krok po kroku

Krok 1: Instaluj notatkę aspose z obsługą PDF

pip install aspose-note

Potwierdź instalację (PDF jest formatem eksportowanym – biblioteka produkuje wydanie PDF z plików źródłowych programu OneNote; nie obsługuje się odwrotnego kierunku):

from aspose.note import Document, SaveFormat
print("aspose-note is ready.")

Krok 2: Pobierz plik OneNote

from aspose.note import Document

doc = Document("MyNotes.one")

Krok 3: Eksportowanie całego dokumentu do PDF

Najprostsza eksportowa, obejmująca wszystkie strony z ustawieniami domyślnymi:

from aspose.note import Document, SaveFormat

doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)
print("PDF saved to output.pdf")

Krok 4: Użyj opcji PDFSave

PdfSaveOptions Pozwól na konfigurację ustawień eksportu PDF:

from aspose.note import Document
from aspose.note.saving import PdfSaveOptions

doc = Document("MyNotes.one")

opts = PdfSaveOptions()
doc.Save("output.pdf", opts)

Dostępne opcje PDFSave

OpcjaTypPodstawoweOpis
PageIndexint0indeks złota na pierwszej stronie do eksportu (0 = pierwsza strona)
PageCount`intNone`None

Krok 5: Eksportowanie do prądu in-memory

Document.Save() akceptuje strumień binarny bezpośrednio: nie jest potrzebny plik tymczasowy:

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")

Krok 6: Wywożenie wielokrotnych plików

Procesy wielokrotne .one Archiwum w katalogu:

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}")

Wspólne problemy i rozwiązania

1. ImportError: No module named ‘reportlab’

Przyczyny:• The [pdf] Dodatkowe nie zostały zainstalowane.

Fixy:

pip install aspose-note

2. UnsupportedSaveFormatException

Przyczyny:- format inny niż SaveFormat.Pdf Używany - tylko SaveFormat.Pdf Jest wdrożona.

Fixy:Zawsze używać SaveFormat.Pdf Inne formaty są deklarowane dla zgodności API, ale podnoszą UnsupportedSaveFormatException.

3. IncorrectPasswordException

Przyczyny:• The .one Dokumenty są szyfrowane. dokumenty nie są obsługiwane.

Fixy:• Użyj nieekryptowanego .one Komercyjny produkt Aspose.Note obsługuje szyfrowanie.

4. FileNotFoundError

Przyczyny:• Wkład .one Poczta pliku jest nieprawidłowa.

Fixy:• Używanie pathlib.Path.exists() do weryfikacji przed ładowaniem:

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. Output PDF is blank or empty

Przyczyny:• The .one plik zawiera strony, ale nie ma treści tekstowych (tylko obrazy lub tabele bez tekstu).Renderer PDF produkuje strony na podstawie tego, co ReportLab może renderować z DOM.

Fixy:Sprawdź treść strony przed wywozem:

from aspose.note import Document, RichText

doc = Document("MyNotes.one")
text_count = len(doc.GetChildNodes(RichText))
print(f"RichText nodes found: {text_count}")

Często zadawane pytania

Które formaty zapasowe są obsługiwane?

Tylko SaveFormat.Pdf Obecnie jest to realizowane. - SaveFormat W sumie jest dokładnie jeden członek: SaveFormat.Pdf.

Czy mogę eksportować do strumienia zamiast pliku?

Tak i tak. Document.Save() akceptuje jakiekolwiek pisane strumienie binarne jako swój pierwszy argument:

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()

Czy eksport zachowuje porządek strony?

Strony są eksportowane w tym samym porządku, który pojawia się w DOM (porządek zwracany iteracją Document).

Czy PDF jest dostępny na linuxie?

ReportLab i Aspose.Note FOSS dla Pythona są zarówno niezależne od systemu operacyjnego.

Czy mogę eksportować podset stron?

Tak, użyj PdfSaveOptions z PageIndex (na podstawie strony początkowej) oraz PageCount (liczba stron do eksportu; None = wszystkie pozostałe) do eksportu podsetek stron. Obie pola są przekazywane do PDF exporter w v26.3.2.


powiązane zasoby :

 Polski