【发布时间】:2014-01-28 05:36:31
【问题描述】:
我正在尝试使用scons 将PDF 转换为png 文件的工作自动化。我用于转换的工具是convert from ImageMagick。
这是原始命令行:
convert input.pdf temp/temp.pngconvert temp/*.png -append output.png
第一个命令会为PDF文件的每一页生成一个PNG文件,所以第一个命令的目标是一个动态文件列表。
这是我正在处理的SConstruct 文件:
convert = Builder(action=[
Delete("${TARGET.dir}"),
Mkdir("${TARGET.dir}"),
"convert $SOURCE $TARGET"])
combine = Builder(action="convert $SOURCE -append $TARGET")
env = Environment(BUILDERS={"Convert": convert, "Combine": combine})
pdf = env.PDF("input.tex")
pngs = env.Convert("temp/temp.png", pdf) # I don't know how to specify target in this line
png = env.Combine('output.png', pngs)
Default(png)
代码pngs = env.Convert("temp/temp.png", pdf)实际上是错误的,因为目标是多个文件,在env.Convert执行之前我不知道有多少,所以最后的output.png只包含PDF文件的第一页。
感谢任何提示。
更新:
我刚刚发现可以使用命令convert input.pdf -append output.png来避免两步转换。
我仍然很好奇如何处理中间临时文件列表事先未知并且需要动态目标列表的情况。
【问题讨论】: