Como exportar um arquivo do OneNote para PDF em Python

Como exportar um arquivo do OneNote para PDF em Python

Este guia mostra como converter o Microsoft OneNote .one arquivos para PDF em Python usando Document.Save() com: SaveFormat.Pdf. Aspose.Note FOSS para Python permite a exportação programática de PDF sem exigir o Microsoft Office ou qualquer conversor de documentos no nível do sistema operacional. A exportações são geridas pelo programa de código-fonte PHP, que é executado por um servidor em formato PDF. Document.Save() método apoiado pelo opcional ReportLab Render de PDF.

Benefícios

  1. Amigável ao servidor: executa em qualquer sistema operacional, incluindo servidores Linux sem cabeça e contêineres CI/CD
  2. Capazes de fluxo: salvo directamente para um io.BytesIO buffer, não é necessário arquivo temporário
  3. Liberto e de código aberto:Licença MIT:

Precondições

Exportação PDF requer a dependência opcional ReportLab. Instala-o através do [pdf] extra:

pip install aspose-note

Se já o tiver feito, aspose-note instalados sem o extra:

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

Verificar que o ReportLab está disponível:

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

Guia passo a passo

Passo 1: Instalar aspose-note com suporte PDF

Instalar o pacote com o extra PDF opcional do ReportLab usando o comando abaixo:

pip install aspose-note

Confirmar a instalação importando Document e a) SaveFormat do pacote:

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

Passo 2: Carregar o arquivo do OneNote

Instanciar Document com o caminho para a .one Arquivo para carregar na memória:

from aspose.note import Document

doc = Document("MyNotes.one")

Passo 3: Exportar o documento inteiro para PDF

A exportação mais simples cobre todas as páginas com configurações padrão chamando Document.Save() com: SaveFormat.Pdf:

from aspose.note import Document, SaveFormat

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

Passo 4: Use PdfSaveOptions

Utilização: PdfSaveOptions para configurar as configurações de exportação PDF, tais como índice e contagem de páginas:

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

doc = Document("MyNotes.one")

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

Opções de salva-pdf disponíveis

Opção:Tipo de veículo:PadrãoDescrição:
PageIndexint0Índice baseado em zero da primeira página a exportar (0 = primeira pagina)
PageCount`intNone`None

Passo 5: Exportar para um fluxo de memória

Document.Save() Aceita um fluxo binário diretamente: não é necessário nenhum arquivo temporário.:

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

Passo 6: Exportação em lotes de vários ficheiros

Múltiplo processo .one arquivos em um diretório por iteração com pathlib.Path.glob() e chamando-me. Document.Save() para cada:

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 comuns e soluções

1. ImportError: No module named ‘reportlab’

Causa da morte:O Conselho Europeu de Bruxelas: [pdf] O extra não foi instalado.

Correção: Execute o seguinte comando pip para instalar o extra de renderização PDF do ReportLab:

pip install aspose-note

2. UnsupportedSaveFormatException

Causa da morte: Um formato diferente do que o de: SaveFormat.Pdf Foi utilizado apenas para a produção de SaveFormat.Pdf é implementada.

Correção:Utilize sempre: SaveFormat.Pdf para exportação. Outros formatos são declarados compatíveis com as API, mas aumentam a compatibilidade de outros formatas. UnsupportedSaveFormatException.

3. IncorrectPasswordException

Causa da morte:O Conselho Europeu de Bruxelas: .one O ficheiro está encriptado. Documentos criptografados não são suportados.

Correção:Use um código não criptografado . .one O produto comercial Aspose.Note suporta criptografia.

4. FileNotFoundError

Causa da morte:A entrada: .one O caminho do ficheiro é incorreto.

Correção:Utilização: pathlib.Path.exists() para validar antes do carregamento:

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

Causa da morte:O Conselho Europeu de Bruxelas: .one O processador de renderização PDF produz páginas com base no que o ReportLab pode render a partir do DOM.

Correção:Verificar o conteúdo da 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}")

Perguntas Frequentes

Quais formatos de armazenamento são suportados?

Apenas: SaveFormat.Pdf O programa de acção “A Europa dos jovens” está actualmente em execução. SaveFormat enum tem exatamente um membro: SaveFormat.Pdf.

Posso exportar para um stream em vez de um arquivo?

  • Sim, é verdade. Document.Save() Aceita qualquer fluxo binário escrevível como seu primeiro 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()

A exportação preserva a ordem da página?

Sim. As páginas são exportadas na mesma ordem em que aparecem no DOM (a ordem retornada por iteração do código de identificação). Document).

A exportação de PDF está disponível no Linux?

Sim. ReportLab e Aspose.Note FOSS para Python são ambos OS-independentes.

Posso exportar um subconjunto de páginas?

Sim, usa. PdfSaveOptions com: PageIndex (página inicial com base em zero) e PageCount (número de páginas a exportar; None = todos os restantes) para exportar um subconjunto de páginas. Ambos os campos são encaminhados ao exportador PDF na versão 26.3.2.


Recursos relacionados:

Ver também:

 Português