从 GitHub 将源代码转换为 PDF

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 位

ctc*_*ctc 5

我建议查看语法荧光笔。 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)