我需要将一定量的Python脚本转换为PDF格式。代码应该以文本形式包含,而不是图像形式,因为它必须通过反抄袭机制进行检查(我不需要关心这个问题,只需确保PDF不是由图像生成的即可)。同时需要进行语法高亮。
您有没有关于特定工具的建议?
您有没有关于特定工具的建议?
对于反抄袭部分,我无能为力。如果要打印带有语法突出显示的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的系统中,ps2pdf
是ghostscript
包的一部分,该包很可能已经安装。如果没有安装,请运行:
apt-get install ghostscript
vim abc.py -c ":hardcopy > abc.ps" -c ":q"
您将会获得带有语法高亮的 abc.ps 文件,然后
ps2pdf abc.ps abc.pdf
:TOhtml
变体... - Dror为了进行反抄袭检查,您可以使用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)
<code>
或 <pre>
标签来格式化您的脚本。阅读我的完整 文章 以了解更多关于使用 Python 生成 PDF 的方法。