【发布时间】:2011-03-21 02:59:08
【问题描述】:
我有这行代码:
convert 1234_Page_1_....png 1234_Page_2_....png output.pdf
这会将列出的 png 合并为单个 pdf(使用 ImageMagick)。我有一堆这种格式的PNG文件。我想在 PHP 中创建一个循环,以对我拥有的所有文件执行转换/合并操作。对于在“Page”之前具有相同编号的所有文件,我希望将它们合并到一个具有相同编号作为名称的 PDF。有时要转换的页面超过两页。
对于本例,我希望“1234_Page_1_....png”和“1234_Page_2_....png”的结果为 1234.pdf。我希望文件“1235_Page_1_....png”和“1235_Page_2_....png”生成 1235.pdf,等等。
有人告诉我这是处理问题的 BASH 方法:
for i in `seq 1234 1350` ; do convert ${i}_Page_*.png ${i}_output.pdf ; done
我想在一个可以在 Windows 上运行的 PHP 脚本中完成这项工作。
提前致谢, 杰克
【问题讨论】:
-
为什么不运行Bash on Windows?
-
另外,您在回复your other question 时得到的 Perl 和 Python 脚本有什么问题?
-
Johnsyweb:我无法让您的 Python 脚本正常工作。 python -c "import os; [os.system('convert {0}_Page_*.png output_{0}.pdf'.format(str(i))) for i in xrange(int(raw_input('多少集有多少页?')))]" 是您的建议。我是否将其保存为 .py 文件,然后需要安装额外的软件?此外,由于我安装了 cygwin 并尝试了上述操作并得到了错误:line:1 syntax error near unexpected token '$'\r'' line:1 'for i in 'seq 312800 312860' ;
-
@Jake:这不是我的剧本。对这些答案的评论应该在这些答案下面——而不是在这个页面上。
-
您收到该错误消息的原因是您使用 Windows 编辑器编辑了脚本,然后尝试在 Unix 类型的环境中运行它。运行
dos2unix scriptname,Windows 行尾将转换为 Unix 行尾。不再有$'\r'错误。此外,在 Bash 中使用for i in {1234..1350}- 无需使用seq。