Python에서 OneNote 파일을 PDF로 내보내는 방법

Python에서 OneNote 파일을 PDF로 내보내는 방법

Aspose.Note FOSS for Python은 Microsoft Office나 운영 체제 수준의 문서 변환기 없이 Microsoft OneNote .one 섹션 파일을 프로그래밍 방식으로 PDF로 내보낼 수 있게 합니다. 내보내기는 선택적 ReportLab PDF 렌더러를 기반으로 하는 Document.Save() 메서드에 의해 처리됩니다.

혜택

  1. 서버 친화적: 모든 OS에서 실행 가능, 헤드리스 Linux 서버 및 CI/CD 컨테이너 포함
  2. 스트림 지원: io.BytesIO 버퍼에 직접 저장, 임시 파일 필요 없음
  3. 무료 및 오픈소스: MIT 라이선스

전제 조건

PDF 내보내기에는 선택적 ReportLab 종속성이 필요합니다. [pdf] 추가를 통해 설치하십시오:

pip install "aspose-note[pdf]"

이미 aspose-note을 추가 없이 설치한 경우:

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

ReportLab이 사용 가능한지 확인하십시오:

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

단계별 가이드

1단계: PDF 지원이 포함된 aspose-note 설치

pip install "aspose-note[pdf]"

설치를 확인하십시오:

from aspose.note import Document, SaveFormat
print("Ready for PDF export.")

2단계: OneNote 파일 로드

from aspose.note import Document

doc = Document("MyNotes.one")

3단계: 전체 문서를 PDF로 내보내기

가장 간단한 내보내기, 기본 설정으로 모든 페이지를 포함:

from aspose.note import Document, SaveFormat

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

4단계: PdfSaveOptions 사용

PdfSaveOptions PDF 내보내기 설정을 구성할 수 있습니다:

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

doc = Document("MyNotes.one")

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

사용 가능한 PdfSaveOptions

OptionTypeDefaultDescription
PageIndexint0필드가 존재합니다; v26.3.1 PDF 내보내기로 전달되지 않음: 효과 없음
PageCountint | NoneNone필드가 존재합니다; v26.3.1 PDF 내보내기로 전달되지 않음: 효과 없음

5단계: 메모리 내 스트림으로 내보내기

Document.Save() 은(는) 바이너리 스트림을 직접 받아들입니다: 임시 파일이 필요 없습니다:

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

6단계: 여러 파일 일괄 내보내기

디렉터리의 모든 .one 파일을 처리하십시오:

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

일반적인 문제 및 해결 방법

1. ImportError: ‘reportlab’ 모듈을 찾을 수 없습니다

원인: [pdf] 추가 기능이 설치되지 않았습니다.

수정:

pip install "aspose-note[pdf]"

2. UnsupportedSaveFormatException

Cause: SaveFormat.Pdf 이외의 형식이 사용되었습니다. SaveFormat.Pdf만 구현되었습니다.

Fix: 내보내기에는 항상 SaveFormat.Pdf을 사용하십시오. 다른 형식은 API 호환성을 위해 선언되었지만 UnsupportedSaveFormatException을 발생시킵니다.

3. IncorrectPasswordException

Cause: .one 파일이 암호화되었습니다. 암호화된 문서는 지원되지 않습니다.

Fix: 암호화되지 않은 .one 파일을 사용하십시오. 상용 Aspose.Note 제품은 암호화를 지원합니다.

4. FileNotFoundError

Cause: 입력 .one 파일 경로가 올바르지 않습니다.

수정: 로드하기 전에 pathlib.Path.exists()을 사용하여 검증하십시오:

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. 출력 PDF가 비어 있거나 빈 상태입니다

Cause: .one 파일에는 페이지가 있지만 텍스트 내용이 없습니다(이미지 또는 텍스트가 없는 표만 포함). PDF 렌더러는 ReportLab이 DOM에서 렌더링할 수 있는 내용에 따라 페이지를 생성합니다.

Fix: 내보내기 전에 페이지 내용을 확인하십시오:

from aspose.note import Document, RichText

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

자주 묻는 질문

지원되는 저장 형식은 무엇입니까?

현재는 SaveFormat.Pdf만 구현되어 있습니다. SaveFormat 열거형에는 정확히 하나의 멤버가 있습니다: SaveFormat.Pdf.

파일 대신 스트림으로 내보낼 수 있나요?

예. Document.Save()는 첫 번째 인수로 쓰기 가능한 바이너리 스트림을 허용합니다:

import io
from aspose.note import Document, PdfSaveOptions, SaveFormat

doc = Document("MyNotes.one")
buf = io.BytesIO()
doc.Save(buf, PdfSaveOptions())
pdf_bytes = buf.getvalue()

내보내기가 페이지 순서를 유지합니까?

예. 페이지는 DOM에 나타나는 순서와 동일한 순서로 내보내집니다(Document를 반복하여 반환된 순서).

Linux에서 PDF 내보내기가 가능한가요?

예. ReportLab과 Aspose.Note FOSS for Python은 모두 OS 독립적입니다.

페이지의 일부를 내보낼 수 있나요?

PdfSaveOptions.PageIndexPageCount 필드는 존재하지만 v26.3.1에서 PDF 내보내기로 전달되지 않으며 효과가 없습니다: 전체 문서가 항상 내보내집니다.


관련 리소스:

 한국어