Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python打印图形_Python_Printing_Postscript - Fatal编程技术网

用Python打印图形

用Python打印图形,python,printing,postscript,Python,Printing,Postscript,我需要从python打印“轮子标签”。控制盘标记将包含图像、线条和文本 Python教程有两段关于使用图像库创建postscript文件的内容。看完之后,我仍然不知道如何布置数据。我希望有人能提供如何布局图片、文本和线条的示例 谢谢你的帮助 见 请注意: PSDraw模块自2005年以来似乎没有得到积极维护;我想大部分的工作都已经转向支持PDF格式了。您可能更喜欢使用pypdf 它在源代码中有类似“#FIXME:complete”和“尚未实现”的注释 它似乎没有任何设置页面大小的方法-我记得这意

我需要从python打印“轮子标签”。控制盘标记将包含图像、线条和文本

Python教程有两段关于使用图像库创建postscript文件的内容。看完之后,我仍然不知道如何布置数据。我希望有人能提供如何布局图片、文本和线条的示例

谢谢你的帮助

请注意:

  • PSDraw模块自2005年以来似乎没有得到积极维护;我想大部分的工作都已经转向支持PDF格式了。您可能更喜欢使用pypdf

  • 它在源代码中有类似“#FIXME:complete”和“尚未实现”的注释

  • 它似乎没有任何设置页面大小的方法-我记得这意味着它默认为A4(8.26 x 11.69英寸)

  • 所有测量均以点为单位,每英寸72点

  • 您需要执行以下操作:

    import Image
    import PSDraw
    
    # fns for measurement conversion    
    PTS = lambda x:  1.00 * x    # points
    INS = lambda x: 72.00 * x    # inches-to-points
    CMS = lambda x: 28.35 * x    # centimeters-to-points
    
    outputFile = 'myfilename.ps'
    outputFileTitle = 'Wheel Tag 36147'
    
    myf = open(outputFile,'w')
    ps = PSDraw.PSDraw(myf)
    ps.begin_document(outputFileTitle)
    
    ps现在是一个PSDraw对象,它将PostScript写入指定的文件,并且文档头已经被写入,您可以开始绘制了

    要添加图像,请执行以下操作:

    im = Image.open("myimage.jpg")
    box = (        # bounding-box for positioning on page
        INS(1),    # left
        INS(1),    # top
        INS(3),    # right
        INS(3)     # bottom
    )
    dpi = 300      # desired on-page resolution
    ps.image(box, im, dpi)
    
    要添加文本,请执行以下操作:

    ps.setfont("Helvetica", PTS(12))  # PostScript fonts only -
                                      # must be one which your printer has available
    loc = (        # where to put the text?
        INS(1),    # horizontal value - I do not know whether it is left- or middle-aligned
        INS(3.25)  # vertical value   - I do not know whether it is top- or bottom-aligned
    )
    ps.text(loc, "Here is some text")
    
    要添加行,请执行以下操作:

    lineFrom = ( INS(4), INS(1) )
    lineTo   = ( INS(4), INS(9) )
    ps.line( lineFrom, lineTo )
    
    。。。我看不到任何改变划水重量的选项

    完成后,必须关闭文件,如:

    ps.end_document()
    myf.close()
    

    编辑:我读了一些关于设置笔划权重的书,然后我跑了一个不同的模块,psfile:模块本身看起来非常简单——他正在编写大量原始postscript——但它应该能让你更好地了解幕后发生的事情。

    我建议使用开源库来完成这类任务

    它使用非常简单,并直接输出为PDF格式

    官方文件中的一个非常简单的示例:

    from reportlab.pdfgen import canvas
    def hello(c):
        c.drawString(100,100,"Hello World")
    c = canvas.Canvas("hello.pdf")
    hello(c)
    c.showPage()
    c.save()
    
    只要安装了PIL,将图像添加到页面也非常容易:

    canvas.drawImage(self, image, x,y, width=None,height=None,mask=None)
    
    其中“image”是PIL图像对象,或者是您希望使用的图像的文件名

    文章中也有大量的例子