bash - 从 GitHub 将源代码转换为 PDF

标签 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 文件也可以,这是最好的做法。甚至一个 .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

这将安装一个程序 pygmentize您可以使用它来转换代码。

接下来,安装 wkhtmltopdf .

现在,您可以获取一个文件,在语法上突出显示它,然后将其转换为 PDF:
pygmentize -l ruby -f html -O full,style=vim test.rb > test.html
wkhtmltopdf test.html test.pdf

在这里,我展示了 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')

把它放在一个名为 convert.sh 的文件中.然后,要运行它,请键入:
chmod +x convert.sh
./convert.sh

关于bash - 从 GitHub 将源代码转换为 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33454865/

相关文章:

Linux shell : VLC programming

linux - 使 *.mp3 的开始和结束段没有声音的最佳方法?

xml - 是否可以在 SuiteScript 2.0 中将图像从图像字段加载到 PDF 中

linux - 如何使用 unix 脚本从文件夹中搜索文件并移动到文件夹

mysql - 如何使用shell脚本访问mysql数据库?

iphone - 打开 iBooks 应用程序或其他应用程序中存储的 PDF

PHP ImageMagick - readimage 不适用于某些 pdf

linux - 添加引号的字段分隔

macos - 在新的 Mac OS X 终端窗口中运行命令

linux - 在 Docker 容器中的 cron 中执行服务时出现问题?