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
- Servicio Amigable: se ejecuta en cualquier sistema operativo, incluyendo servidores Linux sin cabezas y contenedores CI/CD
- El flujo-capable:• Salva directamente a una
io.BytesIO-Bufero, no se necesita archivo temporal - 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-noteSi 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-noteConfirmar 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ón | Tipo | Definición | Descripción |
|---|---|---|---|
PageIndex | int | 0 | Indice de la primera página a exportación (0 = primera pagina) |
PageCount | `int | None` | 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-note2. 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: