Recortar páginas PDF em Python

Obter propriedades da página

Cada página em um arquivo PDF possui várias propriedades, como largura, altura, bleed-, crop- e trimbox. Aspose.PDF for Python permite que você acesse essas propriedades.

Use esta página quando precisar reduzir a área visível da página, preparar arquivos para fluxos de trabalho de impressão ou inspecionar a geometria das caixas da página em documentos PDF.

  • media_box: A media box é a maior caixa da página. Ela corresponde ao tamanho da página (por exemplo A4, A5, US Letter, etc.) selecionado quando o documento foi impresso para PostScript ou PDF. Em outras palavras, a media box determina o tamanho físico da mídia na qual o documento PDF é exibido ou impresso.
  • bleed_box: Se o documento tem bleed, o PDF também terá uma bleed box. Bleed é a quantidade de cor (ou arte) que se estende além da borda de uma página. É usado para garantir que, quando o documento é impresso e cortado ao tamanho ("trimmed"), a tinta chegue até a borda da página. Mesmo que a página seja cortada incorretamente - ligeiramente fora das marcas de corte - não aparecerão bordas brancas na página.
  • trim_box: A trim box indica o tamanho final de um documento após a impressão e o corte.
  • art_box: A caixa de arte é a caixa desenhada ao redor do conteúdo real das páginas em seus documentos. Esta caixa de página é usada ao importar documentos PDF em outras aplicações.
  • crop_box: A crop box é o tamanho “página” no qual seu documento PDF é exibido no Adobe Acrobat. Na visualização normal, apenas o conteúdo da crop box é exibido no Adobe Acrobat. Para descrições detalhadas dessas propriedades, lea a especificação Adobe.Pdf, particularmente 10.10.1 Limites de Página.

Cortar o primeiro Page de um PDF para uma área retangular específica usando Aspose.PDF for Python. A função ajusta várias caixas de página—crop_box, trim_box, art_box, e bleed_box—para garantir resultados visuais consistentes. O recorte pode ser útil para remover margens indesejadas ou focar em uma região específica de uma página.

  1. Carregue o PDF como um Document (usar ap.Document()).
  2. Defina o retângulo de corte usando Rectangle com as coordenadas desejadas (em pontos).
  3. Defina o Page’s crop_box, trim_box, art_box, e bleed_box para o retângulo definido.
  4. Salvar o modificado Document para um novo arquivo de saída.
import sys
import aspose.pdf as ap
from os import path

def crop_page(input_file_name, output_file_name):
    document = ap.Document(input_file_name)

    new_box = ap.Rectangle(200, 220, 2170, 1520, True)
    document.pages[1].crop_box = new_box
    document.pages[1].trim_box = new_box
    document.pages[1].art_box = new_box
    document.pages[1].bleed_box = new_box

    document.save(output_file_name)

Neste exemplo, usamos um arquivo de amostra aqui. Inicialmente, nossa página parece como mostrada na Figura 1. Figura 1. Página recortada

Depois da alteração, a página ficará como a Figura 2. Figura 2. Página recortada

Recortar página PDF com base no conteúdo da primeira imagem

Cortar o primeiro Page dinamicamente com base nos limites da primeira imagem encontrada na página. Usando ImagePlacementAbsorber, o script identifica a primeira imagem e ajusta a página crop_box para corresponder às dimensões da imagem. Essa abordagem é útil quando você deseja focar em conteúdo visual específico em vez de coordenadas predefinidas.

  1. Carregue o PDF como um Document.
  2. Localizar imagens na primeira página usando ImagePlacementAbsorber.
  3. Verificar se as imagens existem:
    • Se encontrado, definir o Page crop_box para corresponder ao da primeira imagem Rectangle.
    • Se não, mantenha a página inalterada e notifique o usuário.
  4. Salvar o modificado Document para o arquivo de saída especificado.
import sys
import aspose.pdf as ap
from os import path

def crop_page_by_content(input_file_name, output_file_name):
    document = ap.Document(input_file_name)
    # Find first image on first page using ImagePlacementAbsorber
    absorber = ap.ImagePlacementAbsorber()
    document.pages[1].accept(absorber)

    if len(absorber.image_placements) > 0:
        first_image = absorber.image_placements[1]
        document.pages[1].crop_box = first_image.rectangle
    else:
        print("No images found on the first page")
    document.save(output_file_name)

Tópicos Relacionados da Página