Introdução

Aspose.PDF FOSS for Python é uma nova biblioteca de código aberto para trabalhar com documentos PDF a partir de código Python. É lançada sob a licença MIT e implementada inteiramente em Python — o analisador PDF, gravador, rasterizador de página e rotinas de criptografia fazem parte do próprio pacote, com dependências necessárias limitadas a cryptography e asn1crypto. Extras opcionais adicionam suporte a imagens baseado em Pillow, decodificação de fontes WOFF2 baseada em Brotli e modelagem de texto complexo baseada em HarfBuzz.

A biblioteca é organizada em torno da classe Document, que carrega um PDF a partir de um caminho, bytes ou um fluxo binário e expõe suas páginas através de document.pages, um PageCollection que suporta iteração, indexação e fatiamento. A partir daí, o API abrange a adição de texto e imagens às páginas, leitura e modificação de anotações, criação e preenchimento de campos AcroForm, criptografia e descriptografia de documentos, e extração de texto e anexos — as operações necessárias para criar novos PDFs ou trabalhar com os existentes.

Esta versão destina-se a desenvolvedores que precisam de processamento de PDF dentro de uma base de código Python sem uma licença comercial: geração de relatórios e faturas, pipelines de ingestão de documentos, automação de preenchimento de formulários e serviços que precisam renderizar páginas PDF em imagens ou extrair texto para indexação posterior. O projeto está atualmente em alfa, portanto as APIs e a cobertura de recursos podem evoluir antes do primeiro lançamento estável. É necessário Python 3.11 ou superior.

O que está incluído

Criação e carregamento de documentos

PdfDocument() cria um PDF vazio; PdfDocument(source, password=..., limits=...) carrega um existente a partir de um caminho, bytes brutos ou um fluxo binário, e equivale a chamar PdfDocument().load_from(source, ...). Ambos lançam exceção ao faltar um arquivo, dados que não‑PDF ou uma senha ausente, ao invés de retornar um documento vazio. PdfDocument é um gerenciador de contexto, portanto os recursos são liberados automaticamente quando o bloco with é finalizado.

from aspose_pdf import Document

with Document() as document:
    page = document.pages.add()
    page.add_text("Generated by Aspose.PDF FOSS", x=72, y=720, font_size=14)
    document.save("report.pdf")

with Document("report.pdf") as document:
    print(f"Pages: {document.page_count}")
    print(f"PDF version: {document.version}")

Adicionando Texto e Imagens

Page.add_text coloca texto Standard‑14 ou Unicode incorporado em uma posição x/y com um font_size fornecido; o argumento font pode ser um FontDescriptor, bytes de fonte bruta, ou um caminho para uma fonte TrueType/OpenType para Unicode fora das codificações Standard‑14. Page.add_image coloca um XObject de imagem bruto, JPEG ou PNG na página em uma posição e tamanho especificados.

from aspose_pdf import Document

with Document() as document:
    page = document.pages.add()
    page.add_text(
        "Quarterly Summary",
        x=72,
        y=740,
        font_size=16,
    )
    page.add_image(
        "chart.png",
        x=72,
        y=420,
        width=300,
        height=200,
    )
    document.save("summary.pdf")

Anotações

Cada Page expõe suas anotações através de page.annotations, um AnnotationCollection. add(subtype, rect, contents, title, appearance_normal, properties) cria e insere uma anotação de um subtipo padrão como Square, Circle, Line, Highlight ou FreeText, retornando um Annotation. Chamar generate_appearance() na anotação retornada sintetiza um fluxo de aparência a partir de sua geometria e propriedades.

from aspose_pdf import Document

with Document() as document:
    page = document.pages.add()
    annotation = page.annotations.add(
        "Square",
        (100, 600, 300, 680),
        "Needs review",
        properties={"C": [1, 0, 0]},
    )
    annotation.generate_appearance()
    document.save("annotated.pdf")

Campos de Formulário

document.form devolve o Form do documento, que cria campos AcroForm diretamente: add_text_field(), add_checkbox(), add_radio_group(), add_list_box(), add_combo_box() e add_push_button() cada um aceita um nome de campo, um Page ou índice de página, e um retângulo de posicionamento, retornando um Field. Definir field.value atualiza o valor do campo, e form.flatten() incorpora a aparência de cada campo ao conteúdo estático da página.

from aspose_pdf import Document

with Document() as document:
    page = document.pages.add()
    form = document.form
    field = form.add_text_field(
        "customer_name",
        page,
        (72, 700, 300, 720),
    )
    field.value = "Jane Doe"
    form.flatten()
    document.save("form.pdf")

Criptografia

Document.encrypt(user_password, owner_password, permissions) protege um documento com uma senha de usuário, uma senha de proprietário e uma máscara de bits de permissão, retornando o mesmo Document para encadeamento. Document.decrypt(password) reverte a operação, e a propriedade is_encrypted relata o estado atual. Carregar um documento criptografado novamente requer passar password= ao construtor ou ao load_from().

from aspose_pdf import Document

with Document("report.pdf") as document:
    document.encrypt(user_password="user-pass", owner_password="owner-pass", permissions=0)
    document.save("encrypted.pdf")

with Document("encrypted.pdf", password="user-pass") as document:
    print(f"Encrypted: {document.is_encrypted}")

Extração de Texto

PdfExtractor vincula a uma fonte com bind_pdf(), então extract_text() percorre as páginas do documento. get_text() devolve todo o texto extraído de uma vez, enquanto has_next_page_text() e get_next_page_text() iteram o resultado página por página. PdfExtractor também é um gerenciador de contexto.

from aspose_pdf import PdfExtractor

with PdfExtractor() as extractor:
    extractor.bind_pdf("report.pdf")
    extractor.extract_text()
    while extractor.has_next_page_text():
        print(extractor.get_next_page_text())

Início Rápido

git clone https://github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python.git
cd Aspose-PDF-FOSS-for-Python
pip install -e .
from aspose_pdf import Document

with Document() as document:
    page = document.pages.add()
    page.add_text(
        "Hello from Aspose.PDF FOSS!",
        x=72,
        y=720,
        font_size=18,
    )
    document.save("hello.pdf")

with Document("hello.pdf") as document:
    print(f"Pages: {document.page_count}")
    print(f"PDF version: {document.version}")

Formatos Suportados

FormatoExtensãoLerEscrever
PDF.pdf✓✓
PNG.png—✓
TIFF.tiff—✓

PDF é o formato principal de entrada e saída da biblioteca, lido através de Document/load_from() e escrito através de Document.save. PNG e TIFF são saídas de renderização de página produzidas por Page.render, Page.save_as_image e Document.save_page_as_image.


Código Aberto & Licenciamento

Aspose.PDF FOSS para Python é distribuído sob a licença MIT, com o código-fonte completo disponível em github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python. A licença permite uso comercial, modificação e redistribuição sem um acordo separado.


Introdução

Recursos Relacionados