Agregar relleno a múltiples imágenes

Escaneé un par de páginas y las edité un poco para que se vean ordenadas. Pero como quería reimprimirlas, noté que recorté el borde de estas imágenes para que la impresora no imprimiera todo el contenido.

Estoy en Linux y tengo una impresora Brother que tiene controladores de Linux, pero de alguna manera la opción de escalado no funciona. Así que pensé en escalar el PDF (en el que he convertido estos escaneos), pero el controlador de la impresora los reduce para que se ajusten a la página. (Si desactivo la opción de escalar para ajustar, se convierte en basura)

Entonces pensé que podría hacer un script-fu para cambiar el tamaño de estas imágenes con un par de líneas y agregar algo de relleno para la impresora. Pero no tengo ni idea de cómo hacer esto.

Aquí está mi primer intento:

(define (resize-image filename-in filename-out )
  (let* ((image    (car (gimp-file-load RUN-NONINTERACTIVE filename-in "")))
         (drawable (car (gimp-image-active-drawable image)))
        )
     (gimp-image-resize image 2728 3819 124 173) 
     (gimp-file-save   RUN-NONINTERACTIVE image drawable filename-out "")
  )
)

Esto no funciona. La imagen simplemente permanece sin cambios.

Mi página es A4 con 2480x3472, así que pensé en agregar un 10 % al ancho para que se convierta en 2728x3819 y establecí el desplazamiento en un 5 % para que el contenido esté centrado (con valores de desplazamiento 124 y 173).

¿Cómo hago esto correctamente? ¿Es GIMP un buen método? ¿Hay herramientas de Linux que podrían hacer esto mejor?

¿Está seguro de que el problema es con el controlador de impresión o el problema es con el cuadro de diálogo de impresión en GIMP? ¿Realmente necesita usar GIMP para imprimir el documento? ¿Ha intentado insertar la imagen en un documento de procesador de texto, como en LibreOffice?
Convertí la imagen en un PDF e imprimí el PDF usando el visor de pdf...

Respuestas (1)

Originalmente pregunté esto en StackOverflow y alguien allí me ayudó .
Déjame compartir contigo:

Esto funcionó para mí:

(define (resize-image filename-in filename-out )
  (let* ((image    (car (gimp-file-load RUN-NONINTERACTIVE filename-in "")))
         (drawable (car (gimp-image-active-drawable image)))
        )
    (gimp-image-resize image 2728 3819 124 173) 

    (let* ((layer (car (gimp-layer-new image 2728 3819 0 "Base" 100 0)))
          )
      (gimp-image-insert-layer image layer 0 1)
      (gimp-drawable-fill layer 2)
      (let* ((newlayer (car (gimp-image-flatten image)))
            )
        (gimp-file-save   RUN-NONINTERACTIVE image newlayer filename-out "")
      )
    )
  )
)
Para explicar por qué funciona el código: gimp-file-saveguarda una capa (en el código original, esta capa permanece sin cambios cuando el canavs cambia de tamaño gimp-image-resize). Entonces, el código anterior cambia el tamaño del lienzo, agrega una capa en la parte inferior, la llena de blanco y fusiona la capa original en ella. Así que ahora tenemos una capa que tiene el nuevo tamaño y el contenido original.
Martin, ¿entonces podrías aceptar tu propia respuesta? Si todavía estás allí?
Sí, lo siento. Uno no puede aceptar la propia respuesta de inmediato, así que me olvidé de la pregunta...