Recortar una región de un pdf con emacs
2025-10-23
Recortar una región de un pdf con emacs
Con emacs yo uso (pdf-tools) para visualizar ficheros de tipo pdf. Normalmente deseo recortar y guardar una región de la página que visualizo. Lo ideal consistiría en mantener el formato pdf mediante LaTeX, pero por ahora me tengo que conformar con guardarlo con una buena resolución en png. Usa la función image-crop.
(defun etm-pdf-crop-region-png () "Recorta una región del PDF como PNG." (interactive) ;; 1. Verificar que estamos en el modo correcto (if (not (eq major-mode 'pdf-view-mode)) (user-error "Esta función solo funciona en pdf-view-mode")) (let ((source-buffer (current-buffer)) (page-num (pdf-view-current-page)) (temp-buffer (generate-new-buffer "*temp-pdf-copy*")) (temp-buffer-png (generate-new-buffer "*temp-png*"))) ;; Copy content to temporary buffer (with-current-buffer temp-buffer (set-buffer-multibyte nil) ; Modo binario para PNGs (insert-buffer-substring source-buffer)) ;; Process the PDF page (switch-to-buffer temp-buffer) (pdf-view-mode) (pdf-view-midnight-minor-mode -1) (pdf-view-goto-page page-num) (pdf-view-scale-reset) (pdf-view-enlarge 4.0) ;; Extract image data (let* ((image (pdf-view-current-image)) (data (and image (plist-get (cdr image) :data)))) (with-current-buffer temp-buffer-png (set-buffer-multibyte nil) ; Modo binario para PNGs (erase-buffer) ; Limpiar buffer si ya existía (insert data) ; Insertar datos de la imagen (image-mode))) ; Activar modo para ver la imagen ;; Clean up and prepare for cropping (kill-buffer temp-buffer) (switch-to-buffer temp-buffer-png) (goto-char (point-min)) (image-crop nil) (goto-char (point-min))))