通过管道传输到 GraphicsMagick

通过管道传输到 GraphicsMagick

我仍在学习命令行,并且在将文件列表传送到 graphicsmagick 以转换为 pdf 时遇到了麻烦:

find . -type f | sort | gm convert file.pdf

这会出现错误:gm convert: Request did not return an image.

我可以不借助更复杂的方法来做到这一点吗?

答案1

这是一个老问题,但我发现它正在寻找同一问题的解决方案,但从未真正找到完整的答案。我想出了一个简单(-ish)的方法来做这件事:

gm convert $(find . -type f -printf '%p\0' | sort -z | sed 's/\x00/ /g') file.pdf

但是,如果原始文件路径中有空格或换行符,则该方法将不起作用。

此方法必须对每个输入文件执行一次转换。这会花费很长时间,尤其是当原始图像数量很多时,但它不会被文件名绊倒:

find . -type f -printf '%p\0' | sort -z | xargs -0 -I {} gm convert -adjoin file.pdf {} file.pdf

答案2

来自手动的

convert [ options ... ] input_file output_file

所以您需要指定您的文件...

for i in `find . -type f | sort`
do
  gm convert "$i" "$i".pdf
done

相关内容