将源代码从 GitHub 转换为 PDF

Conversion of Source Code to PDF from GitHub

我正在尝试从我在 GitHub 上的特定存储库中获取所有文件,并将它们转换为 PDF。我已经阅读并看到了一个示例 here

但是,我仍然对如何着手这样做感到困惑。我必须把我所有的文件都变成一个 PDF 文件,然后将其上传到大学网站。

我对 UNIX 命令不是很熟悉,我正在尝试执行以下操作:

for i in *.lua; do echo "$i"; echo "---"; cat "$i"; echo ; done > result.pdf

然后我打算把所有的 pdf 合并在一起,但我希望有更好的方法来做这件事。我专门处理 .lua.md 文件扩展名。

我个人认为这可以通过使用一些 UNIX 命令来完成,但是如上所述,我不熟悉它们。

总而言之,我的主要 objective 是获取位于 Github 存储库中的一系列文件,并将它们合并到一个 PDF 文件中。即使获取多个 PDF 文件也是 ok 是最好的了。即使 .word 文件格式也足够好。

操作系统:OSX 或 Windows 7 64 位

我建议研究语法荧光笔。 Pygments has the ability to generate HTML, RTF, etc. If you chose to output HTML files, you could then use a tool like 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