将 python 代码打印到 PDF [关闭]

问题描述 投票:0回答:3

我必须将大量的 python 脚本打印为 PDF。代码应该以文本形式包含,而不是图像,因为它必须通过反剽窃机制进行检查(我不必处理这个,只是要求pdf不是由图像制作的,仅此而已)。语法高亮也是必要的。

您对此有什么具体工具的建议吗?

python pdf printing
3个回答
17
投票

关于反抄袭部分,我帮不了你。要打印带有语法突出显示的 py 脚本,传统工具是

enscript
:

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

这里,

enscript
进行语法高亮并生成后记。如果您想要颜色,请将
--color
选项添加到
enscript
命令。您可以使用几种可能的工具中的任何一种来进行将 postscript 转换为 pdf 的第二步。我在这里展示了
ps2pdf
,它来自 Ghostscript 包。

-E
选项告诉
enscript
猜测源代码语言。如果它没有正确猜测您的文件,您可以明确指定一种语言,例如
-Epython

安装

在类似 Debian 或 Unbuntu 的系统上,

enscript
可以安装:

apt-get install enscript

在类似 Debian 或 Unbuntu 的系统上,

ps2pdf
是可能已经安装的
ghostscript
软件包的一部分。如果不是的话。运行:

apt-get install ghostscript

9
投票

如果你使用 vim,那么你可以这样做:

vim abc.py -c ":hardcopy > abc.ps" -c ":q"

您将得到带语法高亮的 abc.ps,然后

ps2pdf abc.ps abc.pdf

0
投票

对于反剽窃检查,您可以使用 urllib2 进行谷歌搜索,包括您要检查的内容的引用文本:

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

阅读thisSO链接了解更多详情。

对于 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 的方法的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.