【问题标题】:Convert image to pdf with Imagemagick keeping image resolution and placing it on top left corner使用 Imagemagick 将图像转换为 pdf 保持图像分辨率并将其放置在左上角
【发布时间】:2020-12-15 09:55:32
【问题描述】:

我正在使用 imagemagick 将图像转换为具有 A4 页面格式的 pdf,试图保持图像分辨率并将其放在 PDF 的中心(图像的扩展名和大小各不相同)。我试过这个: convert image.jpg -resize 595x842^\> -gravity center -background white -units PixelsPerInch -page a4 image.pdf 此命令保持图像的质量和分辨率,但 pdf 中的图像根据图像大小出现在不同的位置(尺寸为 10109x4542 的图像出现在底部,另一个尺寸为 800x464 的图像出现在页面顶部附近)。有没有办法保持分辨率并将图像放在 PDF 的中心?

【问题讨论】:

    标签: image pdf imagemagick


    【解决方案1】:

    我找到了这个问题的解决方案。 这里是 bash 代码:

    #!/bin/bash
    
    if [ -z "$1" ] || [ -z "$2" ]
      then
        echo "Usage: $0 <input> <output>"
            exit 1;
    fi
    
    
    max () {
     echo $(( $1 > $2 ? $1 : $2 ))
    }
    
    IMAGE_X=$(identify -format "%w" "$1");
    IMAGE_Y=$(identify -format "%h" "$1");
    
    IMAGE_DENSITY_X=$(( $IMAGE_X * 100 / 827 ))
    IMAGE_DENSITY_Y=$(( $IMAGE_Y * 100 / 1169 ))
    IMAGE_DENSITY=$(max $IMAGE_DENSITY_X $IMAGE_DENSITY_Y)
    
    echo "Image density: $IMAGE_DENSITY"
    
    PAGE_SIZE_X=$(( $IMAGE_DENSITY * 827 / 100 ))
    PAGE_SIZE_Y=$(( $IMAGE_DENSITY * 1169 / 100 )) 
    
    echo "Page size X: $PAGE_SIZE_X"
    echo "Page size Y: $PAGE_SIZE_Y"
    
    OFFSET_X=$(( ($PAGE_SIZE_X - $IMAGE_X) / 2 * 72 / $IMAGE_DENSITY ))
    OFFSET_Y=$(( ($PAGE_SIZE_Y - $IMAGE_Y) / 2 * 72 / $IMAGE_DENSITY )) 
    
    echo "$IMAGE_DENSITY $PAGE_SIZE_X $OFFSET_X $OFFSET_Y"
    
    convert "$1" \
    -page ${PAGE_SIZE_X}x${PAGE_SIZE_Y}+${OFFSET_X}+${OFFSET_Y} \
    -units PixelsPerInch \
    -density $IMAGE_DENSITY \
    -format pdf \
    "$2"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-18
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      相关资源
      最近更新 更多