将Python代码打印到PDF

6
我需要将一定量的Python脚本转换为PDF格式。代码应该以文本形式包含,而不是图像形式,因为它必须通过反抄袭机制进行检查(我不需要关心这个问题,只需确保PDF不是由图像生成的即可)。同时需要进行语法高亮。
您有没有关于特定工具的建议?

我猜你这里有几个无关的问题。你能否详细说明一下你的问题?你可以进入代码编辑器并按打印按钮来打印任何代码。 - Mikko Ohtamaa
可能有很多解决方案,但Sphinx可以做到这一点:http://sphinx-doc.org/markup/code.html - tom10
Notepad++可以导出富文本,因此您的语法高亮保持不变。请在“插件”>“NppExport”下查找。 - desired login
你正在使用哪个操作系统? - Robᵩ
3个回答

15

对于反抄袭部分,我无能为力。如果要打印带有语法突出显示的py脚本,传统工具是enscript

enscript -E -q -Z -p - -f Courier10 readmaya.py | ps2pdf - out.pdf

在这里,enscript执行语法高亮并生成postscript。你可以使用多个可能的工具进行第二步将postscript转换为pdf。我展示了来自ghostscript软件包的ps2pdf

安装

在类似于Debian或Ubuntu的系统中,可以使用以下命令安装enscript

apt-get install enscript

在类似Debian或Ubuntu的系统中,ps2pdfghostscript包的一部分,该包很可能已经安装。如果没有安装,请运行:

apt-get install ghostscript

8
如果您正在使用vim,则可以这样做:
vim abc.py -c ":hardcopy > abc.ps" -c ":q"

您将会获得带有语法高亮的 abc.ps 文件,然后

ps2pdf abc.ps abc.pdf

有没有任何想法可以将此应用于 LaTeX 而不是 PostScript? - David 天宇 Wong
我使用了:TOhtml变体... - Dror

0

为了进行反抄袭检查,您可以使用urllib2来进行谷歌搜索,包括您想要检查的引用文本:

import urllib2
response = urllib2.urlopen('https://www.google.co.in/search?q="python+curl"')
html = response.read()

查看 this SO 链接以获取更多细节。

至于 PDF 打印部分,我通常会创建一个文本/文档的 HTML 模板,然后使用 xhtml2pdf Python 库生成 PDF:

f=open('template.htm','r')
sourceHtml = unicode(f.read(), errors='ignore')
f.close()
sourceHtml = template.render(tvals)
sourceHtml = sourceHtml.replace('__name__',sname)
sourceHtml = sourceHtml.replace('__address__',saddress)
sourceHtml = sourceHtml.replace('__occupation__',soccupation)
packet = StringIO.StringIO() #write to memory
pisa.CreatePDF(sourceHtml,dest=packet)

在 HTML 模板中,您可以使用 <code><pre> 标签来格式化您的脚本。阅读我的完整 文章 以了解更多关于使用 Python 生成 PDF 的方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接