Cómo exportar un archivo de OneNote a PDF en Python

Cómo exportar un archivo de OneNote a PDF en Python

Aspose.Note FOSS for Python enables programmatic PDF export of Microsoft OneNote .one Los archivos de sección sin que se requiera Microsoft Office o cualquier convertidor de documento a nivel del sistema operativo. Document.Save() El método que se apoya por la opción ReportLab PDF de renderización.

Beneficios

  1. Servicio Amigable: se ejecuta en cualquier sistema operativo, incluyendo servidores Linux sin cabezas y contenedores CI/CD
  2. El flujo-capable:• Salva directamente a una io.BytesIO -Bufero, no se necesita archivo temporal
  3. Libre y de código abierto:Licencia MIT

Prediciones

Exportación de PDF requiere la dependencia opcional ReportLab. Instalarlo a través del [pdf] Extra de:

pip install aspose-note

Si ya tienes aspose-note Instalar sin el extra:

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

Verifique si el informe está disponible:

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

Guía paso a paso

Paso 1: Instalar la nota de aspose con soporte PDF

pip install aspose-note

Confirmar la instalación (PDF es un formato de exportación solo — la biblioteca produce una salida PDF a partir de los archivos fuentes de OneNote; no se apoya la dirección inversa):

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

Paso 2: Cargar el archivo de OneNote

from aspose.note import Document

doc = Document("MyNotes.one")

Paso 3: Exporta el documento completo a PDF

La exportación más sencilla, que cubre todas las páginas con configuraciones predefinidas:

from aspose.note import Document, SaveFormat

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

Paso 4: Utilice las opciones de PDFSave

PdfSaveOptions Permite configurar las configuraciones de exportación PDF:

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

doc = Document("MyNotes.one")

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

Disponible PdfSaveOptions

OpciónTipoDefiniciónDescripción
PageIndexint0Indice de la primera página a exportación (0 = primera pagina)
PageCount`intNone`None

Paso 5: Exportación a un flujo de memoria

Document.Save() acepta un flujo binario directamente: no se requiere ningún archivo temporal:

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

Paso 6: Exportación de archivos múltiples

Procesos múltiples .one Archivos en un directorio:

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

Problemas y soluciones comunes

1. ImportError: No module named ‘reportlab’

Causas:• El [pdf] No se instaló ningún extra.

Fixado:

pip install aspose-note

2. UnsupportedSaveFormatException

Causas:• Un formato diferente a SaveFormat.Pdf Se utilizó, sólo SaveFormat.Pdf Se está implementando.

Fixado:• Siempre usar SaveFormat.Pdf para exportación. otros formatos se declaran para la compatibilidad API pero alza UnsupportedSaveFormatException.

3. IncorrectPasswordException

Causas:• El .one El archivo está encriptado.Los documentos encriptidos no se soportan.

Fixado:• Utilice un no cifrado .one El producto comercial Aspose.Note soporta la cifrado.

4. FileNotFoundError

Causas:• La entrada .one El camino de archivo es incorrecto.

Fixado:• Uso pathlib.Path.exists() Para comprobar antes de cargar:

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

Causas:• El .one El archivo contiene páginas pero no contenido de texto (sólo imágenes o tablas sin texto).El renderador PDF produce páginas basadas en lo que ReportLab puede render desde el DOM.

Fixado:Verificar el contenido de la página antes de exportar:

from aspose.note import Document, RichText

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

Preguntas frecuentes

¿Qué formatos de almacenamiento se apoyan?

Sólo SaveFormat.Pdf Actualmente se está implementando el SaveFormat Enum tiene exactamente un miembro: SaveFormat.Pdf.

¿Puedo exportar a un flujo en lugar de un archivo?

Sí sí. Document.Save() acepta cualquier corriente binaria escrita como su primer argumento:

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

¿La exportación conserva la orden de página?

Las páginas se exportan en el mismo orden que aparecen en la DOM (la orden devuelta por iterar la Document).

¿Es PDF disponible en Linux?

ReportLab y Aspose.Note FOSS para Python son ambos independientes de la operación operativa.

¿Puedo exportar un subset de páginas?

Sí, usamos PdfSaveOptions con PageIndex (Página de inicio basada en cero) y PageCount (Nombre de páginas para exportar; None = todo lo que queda) para exportar un subset de páginas. ambos campos se envían al exportero PDF en v26.3.2.


Recursos relacionados:

 Español