Classe Stamp
Aspose.PDF for Python via .NET fornece o Stamp classe para colocar conteúdo visual reutilizável em páginas PDF. Uma marca pode ser baseada em texto, uma imagem ou até mesmo uma página de outro PDF, e pode ser posicionada, girada, estilizada e limitada a páginas específicas.
Este artigo demonstra vários fluxos de trabalho comuns de carimbo:
- Criar recursos de texto reutilizáveis para carimbos baseados em texto.
- Adicionar carimbos de imagem e de página PDF.
- Adicionar carimbos de texto estilizados.
- Limite um carimbo a páginas selecionadas.
- Configure um carimbo de imagem de fundo.
O exemplo usa duas funções auxiliares: uma cria texto formatado para carimbos baseados em texto, e a outra cria um TextState objeto usado para estilizar carimbos de texto.
import sys
from os import path
import aspose.pdf as ap
import aspose.pdf.facades as pdf_facades
import aspose.pydrawing as drawing
from config import initialize_data_dir, set_license
def _create_text_logo(text: str) -> pdf_facades.FormattedText:
"""Create formatted text for text stamp examples."""
return pdf_facades.FormattedText(
text,
drawing.Color.blue,
drawing.Color.light_gray,
pdf_facades.FontStyle.HELVETICA_BOLD,
pdf_facades.EncodingType.WINANSI,
True,
14,
)
def _create_text_state() -> ap.text.TextState:
"""Create a text state used to style text stamps."""
text_state = ap.text.TextState()
text_state.foreground_color = ap.Color.dark_blue
text_state.font_size = 16
text_state.font_style = ap.text.FontStyles.BOLD
return text_state
Adicionar um carimbo de imagem
Usar bind_image() quando o carimbo deve exibir uma imagem, como um logotipo, emblema ou ícone. Depois de vincular a imagem, você pode definir o ID do carimbo e a origem antes de adicioná-lo ao documento.
import sys
from os import path
import aspose.pdf as ap
import aspose.pdf.facades as pdf_facades
import aspose.pydrawing as drawing
from config import initialize_data_dir, set_license
def add_image_stamp(infile: str, image_file: str, outfile: str) -> None:
"""Add an image stamp to the PDF."""
pdf_stamper = pdf_facades.PdfFileStamp()
try:
pdf_stamper.bind_pdf(infile)
stamp = pdf_facades.Stamp()
stamp.bind_image(image_file)
stamp.stamp_id = 1
stamp.set_origin(36, 520)
pdf_stamper.add_stamp(stamp)
pdf_stamper.save(outfile)
finally:
pdf_stamper.close()
Adicionar uma página PDF como carimbo
Usar bind_pdf() quando você deseja usar uma página de outro arquivo PDF como o conteúdo do selo. Isso é útil para sobreposições, como aprovações, modelos ou elementos visuais pré-construídos armazenados em um documento separado.
import sys
from os import path
import aspose.pdf as ap
import aspose.pdf.facades as pdf_facades
import aspose.pydrawing as drawing
from config import initialize_data_dir, set_license
def add_pdf_page_as_stamp(infile: str, stamp_pdf: str, outfile: str) -> None:
"""Add the first page of another PDF as a stamp."""
pdf_stamper = pdf_facades.PdfFileStamp()
try:
pdf_stamper.bind_pdf(infile)
stamp = pdf_facades.Stamp()
stamp.bind_pdf(stamp_pdf, 1)
stamp.page_number = 1
stamp.set_origin(36, 250)
pdf_stamper.add_stamp(stamp)
pdf_stamper.save(outfile)
finally:
pdf_stamper.close()
Adicionar um carimbo de texto com estado de texto
Usar bind_logo() junto com bind_text_state() quando você deseja criar um selo baseado em texto com estilo de fonte personalizado. Esta abordagem é útil para marcas de aprovação, rótulos e anotações específicas de fluxo de trabalho.
import sys
from os import path
import aspose.pdf as ap
import aspose.pdf.facades as pdf_facades
import aspose.pydrawing as drawing
from config import initialize_data_dir, set_license
def add_text_stamp_with_text_state(infile: str, outfile: str) -> None:
"""Add a text stamp and style it with a TextState object."""
pdf_stamper = pdf_facades.PdfFileStamp()
try:
pdf_stamper.bind_pdf(infile)
stamp = pdf_facades.Stamp()
stamp.bind_logo(_create_text_logo("Approved by signing workflow"))
stamp.bind_text_state(_create_text_state())
stamp.set_origin(36, 700)
stamp.rotation = 15.0
pdf_stamper.add_stamp(stamp)
pdf_stamper.save(outfile)
finally:
pdf_stamper.close()
Adicionar um carimbo a páginas específicas
Se o carimbo não deve aparecer em todas as páginas, atribua os números das páginas de destino a pages propriedade. Este exemplo adiciona um carimbo de imagem apenas na primeira página.
import sys
from os import path
import aspose.pdf as ap
import aspose.pdf.facades as pdf_facades
import aspose.pydrawing as drawing
from config import initialize_data_dir, set_license
def add_stamp_to_specific_pages(infile: str, image_file: str, outfile: str) -> None:
"""Add an image stamp only to the selected pages."""
pdf_stamper = pdf_facades.PdfFileStamp()
try:
pdf_stamper.bind_pdf(infile)
stamp = pdf_facades.Stamp()
stamp.bind_image(image_file)
stamp.pages = [1]
stamp.set_origin(400, 40)
stamp.set_image_size(120, 60)
pdf_stamper.add_stamp(stamp)
pdf_stamper.save(outfile)
finally:
pdf_stamper.close()
Adicionar um carimbo de imagem de fundo
Use um carimbo de fundo quando a imagem deve aparecer atrás do conteúdo da página. Você também pode controlar a opacidade, rotação, qualidade, tamanho e posição do carimbo para criar efeitos no estilo de marca d’água.
import sys
from os import path
import aspose.pdf as ap
import aspose.pdf.facades as pdf_facades
import aspose.pydrawing as drawing
from config import initialize_data_dir, set_license
def add_background_image_stamp(infile: str, image_file: str, outfile: str) -> None:
"""Add a rotated background image stamp with opacity and quality settings."""
pdf_stamper = pdf_facades.PdfFileStamp()
try:
pdf_stamper.bind_pdf(infile)
stamp = pdf_facades.Stamp()
stamp.bind_image(image_file)
stamp.is_background = True
stamp.opacity = 0.35
stamp.quality = 90
stamp.rotation = 45.0
stamp.set_image_size(160, 80)
stamp.set_origin(200, 300)
pdf_stamper.add_stamp(stamp)
pdf_stamper.save(outfile)
finally:
pdf_stamper.close()