我正在尝试从GitHub上的特定存储库中获取所有文件并将其转换为PDF格式。我已经阅读并看到了一个示例here
然而,我仍然对如何做到这一点感到困惑。我必须将我的所有文件转换为单个PDF文件,然后将其上传到大学网站。
我对UNIX命令并不是非常熟悉,我试图执行以下操作:
for i in *.lua; do echo "$i"; echo "---"; cat "$i"; echo ; done > result.pdf
然后我将把所有的PDF文件合并在一起,但我希望有更好的方法来做这件事。我专门处理.lua
和.md
文件扩展名。
我个人认为这可以通过使用一些UNIX命令来完成,但如上所述,我对它们并不熟悉。
总而言之,我的主要目标是将一系列文件放在Github上的存储库中,并将它们合并为一个PDF文件。即使获得多个PDF文件 ok 也是最好的。即使.word
文件格式也足够好。
操作系统 :OSX或Windows 7 64位
答案 0 :(得分:3)
我建议研究语法荧光笔。 Pygments能够生成HTML,RTF等。如果您选择输出HTML文件,则可以使用wkhtmltopdf之类的工具将语法高亮的HTML文件转换为PDF文件。
或者,Pygments可以做LaTeX。如果您熟悉LaTeX,那么您可以让Pygments生成LaTeX输出,并使用pdflatex
生成PDF文件。
您说您使用的是OS X.要安装Pygments,请打开终端并输入:
sudo easy_install Pygments
这将安装一个可用于转换代码的程序pygmentize
。
接下来,安装wkhtmltopdf。
现在,您可以获取文件,语法突出显示它,并将其转换为PDF:
pygmentize -l ruby -f html -O full,style=vim test.rb > test.html
wkhtmltopdf test.html test.pdf
在这里,我展示了Ruby脚本的转换。当然,如果您要转换Lua脚本,则需要使用-l 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')
将其放在名为convert.sh
的文件中。然后,要运行它,请键入:
chmod +x convert.sh
./convert.sh