使用 Imagemagick 将图像转换为 pdf,保持图像分辨率并将其放置在左上角
Convert image to pdf with Imagemagick keeping image resolution and placing it on top left corner
我正在使用 imagemagick 将图像转换为 A4 页面格式的 pdf,试图保持图像分辨率并将其放置在 PDF 的中心(图像的扩展和大小不同)。我试过这个:
convert image.jpg -resize 595x842^\> -gravity center -background white -units PixelsPerInch -page a4 image.pdf
此命令保持图像的质量和分辨率,但 pdf 中的图像会根据图像大小出现在不同的位置(尺寸为 10109x4542 的图像出现在底部,另一个尺寸为 800x464 的图像出现在页面顶部附近)。有没有办法保持分辨率并将图像放在 PDF 的中心?
我找到了这个问题的解决方案。
这里是 bash 代码:
#!/bin/bash
if [ -z "" ] || [ -z "" ]
then
echo "Usage: [=10=] <input> <output>"
exit 1;
fi
max () {
echo $(( > ? : ))
}
IMAGE_X=$(identify -format "%w" "");
IMAGE_Y=$(identify -format "%h" "");
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 "" \
-page ${PAGE_SIZE_X}x${PAGE_SIZE_Y}+${OFFSET_X}+${OFFSET_Y} \
-units PixelsPerInch \
-density $IMAGE_DENSITY \
-format pdf \
""
我正在使用 imagemagick 将图像转换为 A4 页面格式的 pdf,试图保持图像分辨率并将其放置在 PDF 的中心(图像的扩展和大小不同)。我试过这个:
convert image.jpg -resize 595x842^\> -gravity center -background white -units PixelsPerInch -page a4 image.pdf
此命令保持图像的质量和分辨率,但 pdf 中的图像会根据图像大小出现在不同的位置(尺寸为 10109x4542 的图像出现在底部,另一个尺寸为 800x464 的图像出现在页面顶部附近)。有没有办法保持分辨率并将图像放在 PDF 的中心?
我找到了这个问题的解决方案。 这里是 bash 代码:
#!/bin/bash
if [ -z "" ] || [ -z "" ]
then
echo "Usage: [=10=] <input> <output>"
exit 1;
fi
max () {
echo $(( > ? : ))
}
IMAGE_X=$(identify -format "%w" "");
IMAGE_Y=$(identify -format "%h" "");
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 "" \
-page ${PAGE_SIZE_X}x${PAGE_SIZE_Y}+${OFFSET_X}+${OFFSET_Y} \
-units PixelsPerInch \
-density $IMAGE_DENSITY \
-format pdf \
""