Dig*_*eer 3 pdf bash shell syntax-highlighting
我试图从我在 GitHub 上拥有的特定存储库中获取所有文件并将它们转换为 PDF。我在这里阅读并看到了一个例子
但是,我仍然对如何执行此操作感到有些困惑。我必须把我所有的文件都变成一个单独的 PDF 文件,然后将其上传到大学网站。
我对 UNIX 命令不是很熟悉,我试图执行以下操作:
for i in *.lua; do echo "$i"; echo "---"; cat "$i"; echo ; done > result.pdf
Run Code Online (Sandbox Code Playgroud)
然后我打算把所有的 pdf 文件合并在一起,但我希望有更好的方法来做到这一点。我专门处理 only.lua和.mdfile-extensions。
我个人相信这可以通过使用一些 UNIX 命令来完成,但如前所述,我对它们并不熟悉。
总而言之,我的主要目标是将位于 Github 存储库中的一系列文件合并为一个 PDF 文件。即使获得多个PDF文件被确定是可以做的最好的。即使是.word文件格式也足够好。
操作系统:OSX 或 Windows 7 64 位
我建议查看语法荧光笔。 Pygments具有生成 HTML、RTF 等的能力。如果您选择输出 HTML 文件,那么您可以使用像wkhtmltopdf这样的工具将语法突出显示的 HTML 文件转换为 PDF 文件。
或者,Pygments 可以做 LaTeX。如果您熟悉 LaTeX,那么您可以让 Pygments 生成 LaTeX 输出,并用于pdflatex生成您的 PDF 文件。
你说你在 OS X 上。要安装 Pygments,打开一个终端并输入:
sudo easy_install Pygments
Run Code Online (Sandbox Code Playgroud)
这将安装一个pygmentize可用于转换代码的程序。
接下来,安装wkhtmltopdf。
现在,您可以获取一个文件,在语法上突出显示它,然后将其转换为 PDF:
pygmentize -l ruby -f html -O full,style=vim test.rb > test.html
wkhtmltopdf test.html test.pdf
Run Code Online (Sandbox Code Playgroud)
在这里,我展示了 Ruby 脚本的转换。当然,-l lua如果您要转换 Lua 脚本,您会想要使用它。
然后,您可以将这些命令合并到一个递归遍历目录的 shell 脚本中,例如
#!/bin/bash
# Change this to the repository directory
REPOSITORY=/path/to/the/repo
# Iterate over the repository
while read source_file
do
  filename=$(basename $source_file)
  dir=$(dirname $source_file)
  # For each .lua file found, generate an HTML file in /tmp
  pygmentize -l lua -f html -O full,style=vim $source_file > /tmp/${filename}.html
  # Convert the HTML file to a PDF file in the same directory 
  # as the .lua file
  wkhtmltopdf /tmp/${filename}.html ${dir}/${filename}.pdf
done < <(find $REPOSITORY -type f -iname '*.lua')
Run Code Online (Sandbox Code Playgroud)
把它放在一个名为convert.sh. 然后,要运行它,请键入:
chmod +x convert.sh
./convert.sh
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           4573 次  |  
        
|   最近记录:  |