2011-01-14 9 views
5

में प्रिंटिंग ग्राफिक्स मुझे पायथन से "व्हील टैग" प्रिंट करने की आवश्यकता है। व्हील टैग में छवियां, रेखाएं और टेक्स्ट होंगे।पायथन

पायथन ट्यूटोरियल में छवि lib के साथ पोस्टस्क्रिप्ट फ़ाइलों को बनाने के बारे में दो पैराग्राफ हैं। इसे पढ़ने के बाद भी मुझे नहीं पता कि डेटा को कैसे रखा जाए। मैं उम्मीद कर रहा था कि किसी के पास छवियों, पाठ और रेखाओं को लेआउट करने के नमूने हो सकते हैं?

किसी भी मदद के लिए धन्यवाद।

उत्तर

3

देखें http://effbot.org/imagingbook/psdraw.htm

ध्यान दें कि:

  1. PSDraw मॉड्यूल सक्रिय रूप से 2005 के बाद से बनाए रखा गया है प्रतीत नहीं होता है; मुझे लगता है कि अधिकांश प्रयासों को इसके बजाय पीडीएफ प्रारूप का समर्थन करने के लिए पुनर्निर्देशित किया गया है। आप इसके बजाय pypdf का उपयोग कर खुश हो सकते हैं;

  2. ऐसा '# FIXME: अधूरा' टिप्पणी की है और स्रोत में 'अभी तक लागू नहीं'

  3. यह पेज आकार सेट का कोई भी तरीका है करने के लिए प्रकट नहीं होता है - जो के रूप में मुझे याद है मतलब है कि यह चूक ए 4 (8.26 x 11.6 9 इंच)

  4. सभी माप 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 वस्तु जो निर्दिष्ट फ़ाइल को पोस्टस्क्रिप्ट लिखेंगे है, और दस्तावेज़ शीर्ष लेख में लिखा गया है:

आप की तरह कुछ करने की आवश्यकता होगी सामान खींचना

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

जब आप समाप्त कर, आप की तरह फ़ाइल बंद बंद करने के लिए है : http://seehuhn.de/pages/psfile#sec:2.0.0 मॉड्यूल स्वयं बहुत कम दिखता है - वह बहुत सारी कच्ची पोस्टस्क्रिप्ट लिख रहा है - लेकिन यह आपको दृश्यों के पीछे क्या हो रहा है इसका एक बेहतर विचार देना चाहिए।

1

मैं इस प्रकार के कार्य के लिए ओपन सोर्स लाइब्रेरी Reportlab की अनुशंसा करता हूं।

पीडीएफ प्रारूप में सीधे उपयोग और आउटपुट करना बहुत आसान है।आधिकारिक दस्तावेज से

एक बहुत ही सरल उदाहरण:

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() 

जब तक जनहित याचिका स्थापित किया गया है, यह भी अपने पृष्ठ के लिए छवियों को जोड़ने के लिए बहुत आसान है:

canvas.drawImage(self, image, x,y, width=None,height=None,mask=None) 

जहां "छवि" या तो एक पीआईएल छवि वस्तु है, या उस छवि का फ़ाइल नाम जिसका आप उपयोग करना चाहते हैं।

documentation में उदाहरणों के बहुत सारे।