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
- Amigável ao servidor: executa em qualquer sistema operacional, incluindo servidores Linux sem cabeça e contêineres CI/CD
- Capazes de fluxo: salvo directamente para um
io.BytesIObuffer, não é necessário arquivo temporário - 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-noteSe 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-noteConfirmar 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ão | Descrição: |
|---|---|---|---|
PageIndex | int | 0 | Índice baseado em zero da primeira página a exportar (0 = primeira pagina) |
PageCount | `int | None` | 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-note2. 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:
- Como extrair texto de arquivos do OneNote
- Características de um conjunto geral
- Guia de instalação
- Referência API