【问题标题】:Printing python code to PDF [closed]将python代码打印到PDF [关闭]
【发布时间】:2013-12-23 02:30:02
【问题描述】:

我必须将离散数量的 python 脚本打印到 PDF。代码应该作为文本而不是图像包含在内,因为它必须通过反抄袭机制进行检查(我不必照顾这个,只是要求 pdf 不是由图像制作的,仅此而已)。语法高亮也是必要的。

您对此有什么建议吗?

【问题讨论】:

  • 我猜你这里有几个不相关的问题。你能详细说明你的问题吗?您可以通过进入代码编辑器并按打印按钮来打印任何代码。
  • 可能有很多解决方案,但 Sphinx 可以做到这一点:sphinx-doc.org/markup/code.html
  • Notepad++ 可以导出富文本,因此您的语法突出显示保持不变。查看插件>NppExport。
  • 你使用的是什么操作系统?

标签: python pdf printing


【解决方案1】:

关于反抄袭,我帮不了你。对于打印带有语法高亮的 py 脚本,一个传统的工具是enscript

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

在这里,enscript 进行语法高亮并生成附言。在将 postscript 转换为 pdf 的第二步中,您可以使用多种可能的工具中的任何一种。我在这里展示了来自 ghostscript 包的 ps2pdf

安装

在类似 Debian 或 Unbuntu 的系统上,enscript 可以安装:

apt-get install enscript

在类似 Debian 或 Unbuntu 的系统上,ps2pdf 是可能已经安装的 ghostscript 软件包的一部分。如果不是。运行:

apt-get install ghostscript

【讨论】:

    【解决方案2】:

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

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

    你会得到带有语法高亮的abc.ps,然后

    ps2pdf abc.ps abc.pdf
    

    【讨论】:

    • 知道如何做到这一点,但使用乳胶而不是后记?
    • 我使用了:TOhtml 变体...
    【解决方案3】:

    对于反抄袭检查,您可以使用 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> 标签来格式化您的脚本。阅读我的完整版article,了解更多关于这种在 python 中生成 pdf 的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-08
      • 2012-12-19
      • 2010-09-30
      • 1970-01-01
      • 2015-10-19
      • 2015-02-04
      • 2010-11-21
      相关资源
      最近更新 更多