用Python解析XML(3)

jieforest發表於2012-07-23

Let's take a couple minutes to go over this code. First off is a bunch fo imports. This just sets up our environment with the needed compents from Reportlab and lxml. I also import the decimal module as I will be adding amounts and it is much more accurate for float mathematics than just using normal Python math. 

Next we create our PDFOrder class which accepts two arguments: an xml file and a pdf file path. In our initialization method, we create a couple class properties, read the XML file and return an XML object. The coord method is for positioning Reportlab flowables, which are dynamic objects with the ability to split across pages and accept various styles. The createPDF method is the meat of the program. The canvas object is used to create our PDF and "draw" on it. I set it up to be letter sized and I also grab a default stylesheet.

Next I create a shipping address and position it near the top of the page, 18mm from the left and 40mm from the top. After that, I create and place the Order Number. Finally, I iterate over the items in the order and place them in a nested list, which is then placed in Reportlab's Table flowable. 

Finally, I position the table and pass it some styles to give it a border and an inner grid. Lastly, we save the file to disk.  The document is created and I've now got a nice prototype to show my colleagues. At this point, all I need to do is tweak the look and feel of the document by passing in different styles for the text (i.e. bold, italic, font size) or changing the layout a bit. 

This is usually up to management or the client, so you'll have to wait and see what they want.  Now you know how to parse an XML document in Python and create a PDF from the parsed data.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/301743/viewspace-736310/,如需轉載,請註明出處,否則將追究法律責任。

相關文章