Converter uma coleção de imagens espalhadas em um único PDF pesquisável é uma necessidade frequente para ferramentas de relatório, geradores de faturas e sistemas de arquivamento. Aspose.PDF for Python via .NET é um SDK poderoso que torna essa conversão rápida e confiável em aplicações Python. Este guia orienta você na instalação do SDK, no carregamento de imagens com a Python Imaging Library, na construção do PDF página por página, no ajuste das configurações de compressão e, finalmente, na gravação do resultado, tudo com exemplos de código claros.
Antes de Começar: Pré-requisitos e Instalação
Para seguir este tutorial, você precisa:
- Python 3.8 ou mais recente instalado na sua máquina de desenvolvimento.
- Uma IDE ou editor de sua escolha (VS Code, PyCharm, etc.).
- Acesso à internet para baixar o pacote SDK.
Instale o Aspose.PDF SDK e a biblioteca Pillow (a biblioteca de imagens Python de‑facto) com pip:
pip install aspose-pdf pillow
Você também pode baixar o SDK manualmente a partir da página oficial de lançamentos: Aspose.PDF for Python via .NET Download. Após a instalação, importe os namespaces necessários em seu script.
Agora que o ambiente está pronto, vamos mergulhar na implementação.
Gerar PDF a partir de Imagens em Python: Guia Passo a Passo
Etapa 1: Carregar as Imagens de Origem
Primeiro, use o Pillow para abrir cada arquivo de imagem e mantê‑los em uma lista. Isso prepara os dados da imagem para o construtor de PDF.
from PIL import Image
import os
image_folder = "input_images"
image_paths = [os.path.join(image_folder, f) for f in os.listdir(image_folder)
if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif'))]
images = [Image.open(p) for p in image_paths]
Etapa 2: Criar um Novo Documento PDF
Instancie o objeto Document do Aspose.PDF que conterá as páginas.
import aspose.pdf as ap
pdf_doc = ap.Document()
Para mais detalhes sobre a classe Document, veja a referência da API.
Etapa 3: Adicionar Cada Imagem como uma Página Separada
Percorra as imagens carregadas, crie uma página e incorpore a imagem. O SDK dimensiona automaticamente a imagem para caber no tamanho da página.
for img in images:
page = pdf_doc.pages.add()
# Convert Pillow image to a byte stream compatible with Aspose.PDF
with io.BytesIO() as img_stream:
img.save(img_stream, format='PNG')
img_stream.seek(0)
page.resources.images.add(ap.Image(img_stream))
# Fit the image to the page dimensions
page.page_info.width = img.width
page.page_info.height = img.height
Etapa 4: Configurar opções de compactação
Ajuste o nível de compressão da imagem para reduzir o tamanho final do PDF sem sacrificar a qualidade.
# Set JPEG compression for all images (if using JPEG format)
for img_res in pdf_doc.resources.images:
img_res.compression = ap.ImageCompression.JPEG
img_res.jpeg_quality = 80 # Quality range: 0‑100
Etapa 5: Salvar o arquivo PDF
Finalmente, grave o documento montado no disco.
output_path = "output/result.pdf"
pdf_doc.save(output_path)
print(f"PDF generated successfully at {output_path}")
Com estas etapas, você tem um fluxo de trabalho totalmente funcional para gerar PDF a partir de imagens em Python.
Criar PDF a partir de Coleção de Imagens em Python - Exemplo de Código Completo
O script a seguir reúne todas as partes em um único programa executável.
import os
import io
from PIL import Image
import aspose.pdf as ap
# -------------------- Configuration --------------------
image_folder = "input_images" # Folder containing source images
output_pdf = "output/result.pdf" # Destination PDF file
jpeg_quality = 80 # Compression quality (0‑100)
# -------------------- Load Images --------------------
image_paths = [os.path.join(image_folder, f) for f in os.listdir(image_folder)
if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif'))]
images = [Image.open(p) for p in image_paths]
# -------------------- Create PDF Document --------------------
pdf_doc = ap.Document()
for img in images:
page = pdf_doc.pages.add()
with io.BytesIO() as img_stream:
img.save(img_stream, format='PNG')
img_stream.seek(0)
pdf_image = page.resources.images.add(ap.Image(img_stream))
page.page_info.width = img.width
page.page_info.height = img.height
# Apply compression if the original is JPEG
if img.format == 'JPEG':
pdf_image.compression = ap.ImageCompression.JPEG
pdf_image.jpeg_quality = jpeg_quality
# -------------------- Save PDF --------------------
pdf_doc.save(output_pdf)
print(f"PDF generated successfully at {output_pdf}")
Nota: Este exemplo de código demonstra a funcionalidade principal. Antes de usá‑lo em seu projeto, certifique‑se de atualizar os caminhos dos arquivos (
input_images,output/result.pdf), verifique se todas as dependências necessárias estão instaladas corretamente e teste minuciosamente em seu ambiente de desenvolvimento. Se encontrar algum problema, consulte a documentação oficial ou entre em contato com a equipe de suporte para obter assistência.
Configurações avançadas de geração de PDF: opções e configuração
Além do fluxo de trabalho básico, o Aspose.PDF oferece várias propriedades para ajustar finamente a saída.
Nível de Compressão de Imagem
Controle o compromisso entre qualidade e tamanho do arquivo.
pdf_image.compression = ap.ImageCompression.JPEG
pdf_image.jpeg_quality = 70 # Lower value = smaller file, lower quality
Tamanho da Página e Margens
Defina um tamanho de página personalizado se precisar de um layout uniforme.
page.page_info.width = 595 # A4 width in points
page.page_info.height = 842 # A4 height in points
page.page_info.margin = ap.MarginInfo(10, 10, 10, 10)
Resolução (DPI)
Um DPI mais alto produz imagens mais nítidas ao custo de PDFs maiores.
pdf_doc.page_info.dpi = 300
Para obter uma lista completa de propriedades configuráveis, consulte a referência da API.
Conclusão
Agora você tem uma solução completa e programática para gerar PDF a partir de imagens em Python usando Aspose.PDF for Python via .NET. O SDK lida com o carregamento de imagens, criação de páginas, compressão e salvamento com apenas algumas linhas de código, permitindo que você se concentre na lógica de negócios em vez do manuseio de PDF de baixo nível. Quando você for para produção, lembre‑se de adquirir uma licença adequada; os detalhes estão disponíveis na página de preços e você pode começar com uma licença temporária para avaliação. Feliz codificação e aproveite a simplicidade de transformar coleções de imagens em PDFs polidos!
Perguntas frequentes
Como posso gerar PDF a partir de imagens em Python usando Aspose.PDF?
Use o SDK Aspose.PDF para criar umDocument, adicionar uma página para cada imagem carregada com Pillow, opcionalmente definir compressão e chamarsave()para gravar o PDF. O exemplo completo está incluído acima.Quais formatos de imagem são suportados para geração de PDF?
O SDK aceita PNG, JPG, JPEG, BMP, GIF, e TIFF diretamente. Pillow também pode converter formatos não suportados em um desses antes de adicioná‑los ao PDF.Preciso de uma licença para uso comercial?
Sim. Obtenha uma licença de avaliação temporária na página de licença temporária e compre uma licença completa através da página de preços para implantações de produção.Posso ajustar o tamanho da página PDF e a resolução?
Absolutamente. Usepage.page_info.width,page.page_info.heightepdf_doc.page_info.dpipara controlar as dimensões e DPI, como mostrado na seção Configuração / Opções.
