Aspose.PDF FOSS for Python Recursos
Aspose.PDF FOSS para Python Recursos
Aspose.PDF FOSS para Python é uma biblioteca pure-Python para criar, abrir, modificar e salvar documentos PDF. Esta página apresenta as principais áreas de capacidade e as classes que funcionam como seus pontos de entrada. Cada área é abordada em profundidade em sua própria página do guia do desenvolvedor.
Gerenciamento de Documentos e Páginas
Document é o objeto raiz para cada operação. Construa-o sem argumentos para iniciar um novo documento vazio, ou chame load_from() para ler um existente a partir de um caminho, bytes ou stream. document.pages expõe o PageCollection mutável, e Page.add_text posiciona texto em uma página.
from aspose_pdf import Document
document = Document()
page = document.pages.add()
page.add_text("Hello from Aspose.PDF FOSS!", x=72, y=720, font_size=18)
document.save("hello.pdf")Extração de Texto e Busca
PdfExtractor vincula-se a um documento e extrai texto página por página. bind_pdf() abre a fonte, extract_text() realiza a extração e get_text() devolve o resultado acumulado.
from aspose_pdf import PdfExtractor
extractor = PdfExtractor()
extractor.bind_pdf("hello.pdf")
extractor.extract_text()
print(extractor.get_text())
extractor.close()Para busca e substituição posicionadas, por fragmento, TextFragmentAbsorber expõe objetos TextFragment correspondentes com text_search_options controlando a sensibilidade a maiúsculas/minúsculas e a correspondência por expressões regulares.
Renderização de Página para Imagens
Document.save_page_as_image renderiza uma única página diretamente para um arquivo PNG ou TIFF em um DPI configurável. Para acesso de nível inferior, Page.render retorna um RasterizedPage com dados de pixel brutos através de get_pixel() e pixels.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.save_page_as_image(0, "page-1.png", dpi=150)Formulários e Campos Interativos
Campos AcroForm são gerenciados através de Document.form, uma fachada Form. Form.add_text_field() (e os equivalentes de caixa de seleção, botão de opção, lista e caixa de combinação) cria um novo campo vinculado a uma página e a um retângulo de widget, retornando um Field. Form.fields lista todos os campos atualmente no documento.
from aspose_pdf import Document
document = Document()
page = document.pages.add()
document.form.add_text_field("customer_name", page, (72, 700, 300, 720))
for field in document.form.fields:
print(field.name, field.field_type)
document.save("form.pdf")Segurança, Criptografia e Assinaturas
Document.encrypt protege um documento com uma senha de usuário (necessária para abri-lo) e uma senha de proprietário (necessária para alterar permissões); decrypt() e change_passwords() gerenciam a proteção em um documento já aberto. is_encrypted relata o estado atual.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.encrypt(user_password="secret", owner_password="owner-secret")
document.save("encrypted.pdf")A verificação de assinatura digital é tratada por PdfSignature.validate, que retorna um ValidationResult descrevendo o status de confiança e revogação, e SigningUtils fornece auxiliares de certificado e assinatura PKCS#7/CAdES.
PDF/A e PDF/UA Conformidade
Document.validate_pdfa executa uma verificação heurística de conformidade PDF/A e retorna um PdfAValidationResult; convert_to_pdfa() tenta remediar o documento para esse nível. validate_pdfua() e auto_tag() fornecem a verificação de acessibilidade equivalente e a marcação automática de árvore de estrutura para PDF/UA.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
result = document.validate_pdfa("1b")
if not result.is_valid:
document.convert_to_pdfa("1b")
document.auto_tag()
document.save("compliant.pdf")Dicas e Melhores Práticas
- Modifique o objeto retornado diretamente por
document.pages,page.annotationsoudocument.form— as edições feitas em uma cópia separada de uma página ou campo não são refletidas quando você chamasave(). PageCollectioné indexado a partir de zero nesta vinculação Python (document.pages[0]é a primeira página).- Capture
InvalidPasswordExceptionePdfParseExceptionantes do mais amploAsposePdfExceptionao chamarload_from()em entrada não confiável, para que você possa reagir de forma diferente a uma senha incorreta do que a um arquivo corrompido. - Chame
document.optimize()oucompress_streams()antes desave()em documentos muito editados para remover recursos não utilizados e reduzir o tamanho do arquivo. - Passe um
PdfLoadLimitslimitado paraload_from()ao processar PDFs de uma fonte não confiável, a fim de limitar a memória e a contagem de objetos durante a análise.
Problemas Comuns
| Problema | Causa | Correção |
|---|---|---|
save() produz um arquivo com edições não alteradas | As edições foram feitas em uma cópia de página, anotação ou campo, em vez do objeto obtido de document.pages, annotations ou form | Modifique o objeto retornado diretamente por essas coleções |
InvalidPasswordException em load_from() | O documento está protegido por senha e nenhuma senha, ou a senha errada, foi fornecida | Insira a senha correta: document.load_from(path, password="...") |
validate_pdfa() ainda relata um erro de fonte após convert_to_pdfa() | Nenhum arquivo de fonte correspondente foi encontrado no font_lookup_directory fornecido | Adicione a fonte ausente ao diretório de pesquisa ou registre-a com FontRepository antes de converter |
| A imagem renderizada parece vazia | Índice de página incorreto passado para save_page_as_image() ou render() | pages usa indexação a partir de zero — confirme o índice e verifique se PdfExtractor retorna texto para essa página |
Campo adicionado com Form.add_text_field() não aparece na página | O retângulo do widget está fora do media_box da página | Confirme se as coordenadas do retângulo estão dentro de Page.media_box |
FAQ
O Aspose.PDF FOSS para Python depende de um motor PDF comercial?
Não. É um motor PDF puro-Python desenvolvido do zero, lançado sob a licença MIT. Suas únicas dependências em tempo de execução são cryptography e asn1crypto, usadas para criptografia e verificação de assinaturas.
Posso criar um PDF do zero em vez de abrir um existente?
Sim. Document() sem argumentos cria um documento vazio em memória; chame document.pages.add() para acrescentar páginas antes de salvar.
Quais formatos raster posso renderizar uma página?
Page.render e Document.save_page_as_image produzem saída raster PNG ou TIFF; o RasterizedPage retornado também expõe os dados brutos de pixel através de get_pixel() e da propriedade pixels.
Qual exceção devo capturar para erros específicos do pacote?
Capture AsposePdfException. Cada erro específico do pacote — incluindo análise (PdfParseException), senha e criptografia (PdfSecurityException, InvalidPasswordException), e falhas de validação (PdfValidationException) — deriva dele.
Para onde devo ir a seguir?
Getting Started cobre instalação, licenciamento e um primeiro exemplo funcional. Este guia do desenvolvedor continua com tópicos de gerenciamento de documentos, como formulários, anexos de arquivos incorporados, descoberta de fontes e autoria de outline/bookmark.
API Reference Resumo
| Classe/Método | Descrição |
|---|---|
Document | Objeto raiz — criar, carregar, salvar e gerenciar um PDF |
Document.pages | O PageCollection mutável do documento |
Document.load_from / Document.save | Ler de ou gravar em um caminho, bytes ou fluxo |
Document.encrypt / Document.decrypt | Proteger com senha ou remover a proteção |
Document.validate_pdfa / Document.convert_to_pdfa | Verificação heurística de conformidade PDF/A e conversão |
Document.validate_pdfua() / Document.auto_tag | Verificação de acessibilidade PDF/UA e marcação automática de estrutura |
Page.add_text | Adicionar texto posicionado a uma página |
Page.render | Renderizar uma página para um RasterizedPage |
PdfExtractor | Extrair texto da página e anexos incorporados |
PdfFileEditor | Concatenar, dividir, inserir e excluir páginas entre arquivos |
Form / Field | contêiner AcroForm e campos individuais de formulário |
PdfSignature / SigningUtils | Validação e criação de assinatura digital |
AsposePdfException | Classe base para cada exceção específica de pacote |