KevinGong2013 / Printer

Swift ticket printer framework for ESC/POS-compatible thermal printers.
Apache License 2.0
144 stars 72 forks source link

Loop through a Array an create a Receipt? #77

Closed Dirk23 closed 7 months ago

Dirk23 commented 7 months ago

I want to loop through an Array to ceate a Receipt with multiple Lines in it.

Here is my Example Code:

        let sum:Double = 0
        let receipt = Receipt(.init(maxWidthDensity: 500, fontDensity: 12, encoding: .utf8))
        <<~ .style(.initialize)
        <<~ .page(.printAndFeed(lines: 10))
        <<~ .layout(.justification(.center))
        <<< Dividing.default()
        <<~ .style(.underlineMode(.enable2dot))
        <<< "Food"
        <<< Dividing.default()
        <<~ .style(.underlineMode(.enable2dot))
        for f in foods {
            <<< KVItem(f.name, f.price)
            sum += sum
        }
        <<< KVItem("", sum)
        <<~ .style(.clear)
        <<~ .page(.printAndFeed(lines: 10))
        <<~ .page(.partialCut)

But the compiler doesnt like it: image

How can i achieve this?

Regards

Dirk

Dirk23 commented 7 months ago

Found the solution by my self:

            let receipt = Receipt(.init(maxWidthDensity: 500, fontDensity: 12, encoding: .windowsCP1252))
            <<~ .style(.clear)
            <<~ .style(.initialize)
            <<~ .layout(.justification(.center))
            <<< umlautConverter(text: globalAddress)
            <<~ .page(.printAndFeed(lines: 1))
            <<< Dividing.default()
            <<~ .page(.printAndFeed(lines: 1))
            <<< "\(date)"
            <<~ .page(.printAndFeed(lines: 1))
            <<< Dividing.default()
            for g in array {
                receipt <<< KVItem(umlautConverter(text: g.name), String(format: "%.2f", g.preis) + " Eur")
                summe = summe + g.preis
            }
            for s in speisen {
                receipt <<< KVItem(umlautConverter(text: s.name), String(format: "%.2f", s.preis) + " Eur")
                summe = summe + s.preis
            }
            receipt <<< Dividing.default()
            <<~ .page(.printAndFeed(lines: 1))
            <<< KVItem("Gesamt", String(format: "%.2f", summe) + " Eur")
            <<~ .page(.printAndFeed(lines: 1))
            <<< Dividing.default()
            <<~ .page(.printAndFeed(lines: 5))
            <<~ .style(.clear)
            <<~ .page(.partialCut)