我正在使用 ImageMagick 的转换程序将 pdf 文件拆分为单个图像。它允许您通过将“-”指定为输出文件来将输出写入 STDOUT。
我想处理所有这些图像,然后重新合并它们。不幸的是,当我将输出传输到新进程时,它不会将流识别为单个图像文件。将所有图像写入磁盘然后用不同的程序读取它们显然是浪费时间,那么有没有办法将多个文件写入 STDOUT 管道,使得每个文件都是另一个图像编辑实例的 STDIN? 这些图像编辑实例的输出是否可以合并到最终合并过程的输入中?
您不能以工具通常识别的任何标准化方式将多个文件发送到标准输出。stdout 和 stdin 是流,因此无法判断任何给定片段是否来自一个文件或另一个文件。
一些工具具有在标准输出和标准输入上分隔记录的标准方法,例如换行符或空字符,但这不适用于任意数据,例如大多数可能包含两者的图像格式。
你有几个选择:
使用支持多个帧或层的格式。只要将要编辑的工具理解这种格式,你应该没问题。本质上,这种格式成为不同文件之间的分隔符。一种相对标准且支持多页/层的格式是 TIFF:
convert my.pdf tiff:- | convert - -flip - | convert - my.flipped.pdf
如果您使用 ImageMagick 编辑文件,请不要将其拆分、编辑每一页并重新组合,只需一次完成所有操作。例如:
convert my.pdf -flip my.flipped.pdf
将翻转 PDF 中的页面,一次性为您提供一个新的 PDF。
写一个tar
文件STDOUT
是一个合适的解决方案吗?