结合 enscript、find、inov 和 ps2pdf

结合 enscript、find、inov 和 ps2pdf

我正在尝试编写一个小型 bash 脚本,它将目录中的源文件转换为 .pdf。步骤是这些

  • 使用 find 定位文件
  • 通过 find -exec 将字符编码从 utf-8 转换为 iso-8859-1 对文件执行 iconv
  • 通过 enscript 传递此输出并最终传递给 ps2pdf

我添加 iconv 的唯一原因是 enscript 不支持 utf-8。到目前为止,我已经造成了以下混乱:

#!/bin/bash
enscript --portrait --columns=1 --header ' $n|'"$2"'|%F  Page $% of $=' --highlight='java' --line-numbers --output='-' --color --font='Courier8' `find $1 -name '*.java' -type f -exec iconv -f utf-8 -t iso-8859-1 {} +` | ps2pdf - "$2"'.pdf'

运行它会给出以下输出: enscript: invalid option -- ',' 尝试“enscript --help”以获取更多信息。

编辑:在我添加 -exec iconv 之前它没有给出该错误。
2.编辑:我现在看到的最初的表述很模糊。这是我尝试修改的原始脚本:

#!/bin/bash
`which enscript` --portrait --columns=1 --header ' $n|'"$2"'|%F  Page $% of $=' --highlight='java' --line-numbers --output='-' --color --font='Courier8' `find $1'/src/' -name '*.java'` | ps2pdf - "$2"'.pdf'

./script.sh 目标目录 输出文件名

原始脚本将文件夹中的所有源文件递归地组合成一个 pdf 文件,每个文件从新页面开始。也许我只能忍受必须分两步完成这件事。首先转换字符集,然后转换为pdf。

答案1

创建 java2ps 脚本以简化参数处理

#!/bin/bash

export ENSCRIPT="
--portrait
--columns=1
--font=Courier8
--highlight=java
--color
--line-numbers
--output=-
"

iconv -f utf-8 -t iso-8859-1 "$1" \
| enscript --header=' $n|'"$1"'|%F  Page $% of $='

现在,执行很简单

find -name '*.java' -type f -exec ~/java2ps {} \; | ps2pdf - > all.pdf

相关内容