从GitHub将源代码转换为PDF

时间:2015-10-31 18:07:07

标签: bash shell pdf syntax-highlighting

我正在尝试从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位

1 个答案:

答案 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