Good morning,
The swift data project is completed as far as the database portion but a label needs to be printed for a saved record.
The approach has been to have a view containing the text and image ( QR code) for the particular record . This view was converted to an image using ImageRenderer.
In trying to use this image an error is given < Cannot call value of non-function type ‘ImageRenderer’
Just don’t understand the meaning of this message although I think it is something very basic .
There doesn’t seem to be a lot of information regarding iOS printing so a third party was used - PrintKit. Any direction as to printing , labels , reports ,etc is also appreciated.
Code and screen shot included
Regards,
Joel
import SwiftUI
import PrintingKit
import CoreImage.CIFilterBuiltins
import UIKit
struct ContentView: View {
let user: String = "Eisenstat"
let date: Date = Date.now
let pouchID: UUID
let instruments:String = "Explorer"
let printer = Printer.shared
let contextt = CIContext()
let filter = CIFilter.qrCodeGenerator()
let imageModel: UIImage
var body: some View {
VStack(alignment: .leading) {
Text(user)
Text(date.ISO8601Format())
Text(pouchID.uuidString)
Text(instruments)
Image(uiImage: generateQRCode(from: "\(date.ISO8601Format())\n\(user)\n\(instruments)\n\(pouchID.uuidString)"))
let labelPrint = ContentView(pouchID: UUID(), imageModel: UIImage())
let renderer = ImageRenderer(content: labelPrint) //**Cannot call value of non-function type 'ImageRenderer<ContentView>'**
Button("Print label") {
if let image = renderer(named: "label") {
if let data = renderer.jpeg.data(compressionQuality: 0.5) {
let p = PrintItem.imageData(data)
try? printer.print(p)
}
}
}
}
}
func generateQRCode(from string: String) -> UIImage {
filter.message = Data(string.utf8)
if let outputImage = filter.outputImage {
if let cgImage = contextt.createCGImage(outputImage, from: outputImage.extent) {
return UIImage(cgImage: cgImage)
}
}
return UIImage(systemName: "xmark.circle") ?? UIImage()
}
}