Recortar páginas PDF en Python

Obtener propiedades de página

Cada página en un archivo PDF tiene varias propiedades, como el ancho, la altura, bleed-, crop- y trimbox. Aspose.PDF for Python le permite acceder a estas propiedades.

Utilice esta página cuando necesite reducir el área visible de la página, preparar archivos para flujos de trabajo de impresión o inspeccionar la geometría de los recuadros de página en documentos PDF.

  • media_box: La media box es el recuadro de página más grande. Corresponde al tamaño de página (por ejemplo A4, A5, US Letter, etc.) seleccionado cuando el documento se imprimió a PostScript o PDF. En otras palabras, la media box determina el tamaño físico del medio en el que se muestra o imprime el documento PDF.
  • bleed_box: Si el documento tiene sangrado, el PDF también tendrá un bleed box. El sangrado es la cantidad de color (o arte) que se extiende más allá del borde de una página. Se utiliza para asegurarse de que cuando el documento se imprime y se corta al tamaño (\u0022trimmed\u0022), la tinta llegue hasta el borde de la página. Incluso si la página se corta incorrectamente - recortada ligeramente fuera de las marcas de recorte - no aparecerán bordes blancos en la página.
  • trim_box: El trim box indica el tamaño final de un documento después de la impresión y el recorte.
  • art_box: El art box es el cuadro dibujado alrededor del contenido real de las páginas en sus documentos. Este cuadro de página se utiliza al importar documentos PDF en otras aplicaciones.
  • crop_box: El crop box es el tamaño “página” con el que se muestra su documento PDF en Adobe Acrobat. En la vista normal, solo se muestra el contenido del crop box en Adobe Acrobat. Para descripciones detalladas de estas propiedades, lea la especificación Adobe.Pdf, particularmente 10.10.1 Límites de página.

Recortar el primero Page de un PDF a un área rectangular específica usando Aspose.PDF for Python. La función ajusta múltiples cajas de página—crop_box, trim_box, art_box, y bleed_box—para garantizar resultados visuales consistentes. El recorte puede ser útil para eliminar márgenes no deseados o enfocar una región particular de una página.

  1. Cargar el PDF como un Document (usar ap.Document()).
  2. Defina el rectángulo de recorte usando Rectangle con las coordenadas deseadas (en puntos).
  3. Establecer el Pagees crop_box, trim_box, art_box, y bleed_box al rectángulo definido.
  4. Guarde lo modificado Document a un nuevo archivo de salida.
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)

En este ejemplo utilizamos un archivo de muestra aquí. Inicialmente, nuestra página se ve como se muestra en la Figura 1. Figura 1. Página recortada

Después del cambio, la página se verá como la Figura 2. Figura 2. Página recortada

Recortar página PDF según el contenido de la primera imagen

Recortar el primero Page dinámicamente basado en los límites de la primera imagen encontrada en la página. Al usar ImagePlacementAbsorber, el script identifica la primera imagen y ajusta la página crop_box para coincidir con las dimensiones de la imagen. Este enfoque es útil cuando deseas enfocarte en contenido visual específico en lugar de coordenadas predefinidas.

  1. Cargar el PDF como un Document.
  2. Ubica imágenes en la primera página usando ImagePlacementAbsorber.
  3. Verifica si existen imágenes:
    • Si se encuentran, establece el Page crop_box para que coincida con la de la primera imagen Rectangle.
    • Si no, mantenga la página sin cambios y notifique al usuario.
  4. Guarde lo modificado Document al archivo de salida 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)

Temas de página relacionados